クロック周波数の指定 - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

C および C++ デザインでは、クロックは 1 つしかサポートされず、デザイン内のすべての関数に同じクロックが適用されます。

次に示すように、クロック周期は、ナノ秒 (ns) または MHz 単位で指定され、HLS コンポーネントの作成時に定義されます。

図 1. パーツトおよびクロックの設定

デフォルトのクロック周期は 10 ns です。また、HLS コンポーネントは、クロックのばらつきのコンセプトを使用して、デザイン内のスケジューリング プロセスにユーザー定義のタイミング マージンを提供します。デザインのクロックのばらつきは、同じ方法で、クロックの指定したのと同時に定義できます。クロックのばらつきを指定しない場合、デフォルトではクロック周期の 27% に設定されます。

重要: HLS コンフィギュレーション ファイルで part= の代わりに platform= を指定している場合は、clock= の代わりに freqhz= も使用する必要があります。これは、プラットフォームがクロックを freqhz 形式で使用していて、同じ形式でしかそれをオーバーライドできないからです。

ツールは、HLS コンポーネントのクロック周波数とパーツ情報を使用して、デザイン内の操作のタイミングを見積もります。ただし、最終的なコンポーネントの配置やネットの配線は、出力 RTL の論理合成によって実行されるため、わかりません。そのため、このツールは遅延を見積もることしかできません。

ツールでは、次の図に示すようにクロック周期からクロックのばらつきを差し引いて、合成に使用されるクロック周期が計算されます。

図 2. クロック周期とマージン

これにより、ユーザー指定のマージンが使用されて、論理合成や配置配線などのダウンストリーム プロセスで操作を完了するのに十分なタイミング マージンが供給されます。デバイスのリソースの大半が HLS コンポーネントに消費される場合、セルの配置とセルを接続するためのネットの配線が厳しくなることがあり、タイミング遅延が想定よりも大きくなってしまうことがあります。このような場合、クロックのばらつきを増加すると、HLS コンポーネントが各クロック サイクルにロジックが多くパックされすぎてしまうようなデザインを作成しなくなるので、理想的な配置配線オプションより少ない場合でも、RTL 合成でタイミングを満たすことができるようになります。

Vitis Unified IDE と v++ コマンドは、タイミング、スループット、レイテンシといったすべての制約を満たそうとします。ただし、制約を満たすことができない場合でも、ツールは常に RTL デザインを出力します。クロック周期により推論されたタイミング制約を満たすことができない場合、ツールで次のような SCHED-644 というメッセージが表示され、達成可能な最良のパフォーマンスのデザインが出力されます。

@W [SCHED-644] Max operation delay (<operation_name> 2.39ns) exceeds the effective 
cycle time
重要: 合成後に制約レポートを確認して、すべての制約が満たされたかどうか (合成で出力デザインが生成されたとしても、すべてのパフォーマンス制約が満たされたわけではないという事実) を確認することが重要です。デザイン レポートの Performance Estimates セクションを確認してください。

合成が終了すると、デザイン レポートが階層の各関数ごとに生成され、ソリューションのレポート フォルダーから表示できます。デザイン全体のワースト ケース タイミングは、各関数レポートにレポートされます。階層の各レポートをすべて参照する必要はありません。

タイミング違反が最適化やダウンストリーム プロセスで修正できないほど大きい場合は、より高速のテクノロジをターゲットする前に、レイテンシの指定方法およびインプリメンテーション コアを指定する方法を見直してみてください。