• 検索結果がありません。

C 合成の出力

ドキュメント内 Vitis 高位合成ユーザー ガイド (ページ 47-50)

図 26: レポート比較結果

重要: ザイリンクスでは、Vivado ツールで合成用に生成された syn/verilog または syn/vhdl フォルダーの RTL ファイルを使用することはお勧めしません。代わりに、Vitis アプリケーションアクセラレーション開発フロー、ま たは Vivado Design Suite で使用可能なパッケージされた出力ファイルを使用します。Vitis HLS で生成された RTL コードに浮動小数点デザインなどのザイリンクス IP が使用される場合、verilog および vhdl フォルダーには、ザ イリンクス ツールでの RTL 合成中にその IP を作成するスクリプトが含まれます。syn/verilog または syn/

vhdl フォルダーのファイルを RTL 合成に直接使用する場合、これらのフォルダー内にあるスクリプト ファイルを 正しく使用する必要があります。パッケージされた出力を使用する場合、このプロセスはザイリンクスツールによ り自動的に実行されます。

合成ランタイムおよび容量の改善

Vitis HLS では、演算が階層別にスケジューリングされます。ループ内の演算がスケジューリングされてから、ルー プ、サブ関数、関数を使用する演算がスケジューリングされます。Vitis HLS の実行時間は、次のような場合に増加し ます。

スケジューリングするオブジェクトが多い。

自由度および可能性が多く、確認に時間がかかる。

Vitis HLS では、オブジェクトがスケジューリングされます。オブジェクトが浮動小数点の乗算または単一のレジスタ であっても、スケジューリングされるのはオブジェクトです。浮動小数点の乗算は終了に複数サイクルかかる可能性 があり、インプリメントに多くのリソースが使用されますが、スケジューリングのレベルでは 1 つのオブジェクトと して扱われます。

ループの展開および配列の分割を実行すると、スケジューリングするオブジェクト数が増えるので、実行時間が長く なる可能性があります。関数をインライン展開する場合も、この階層レベルでスケジューリングするオブジェクト数 が増えるので、実行時間が長くなります。これらの最適化は、パフォーマンスを満たすために必要な場合もあります が、単純にすべての配列を分割したり、すべてのループを 展開したり、すべての関数をインライン展開すると、実行 時間が長くなる可能性があるので、注意が必要です。これらの最適化は、前述の最適化ストラテジを使用し、注意し て適用してください。

パフォーマンスを達成するために配列を分割する必要がある場合は、config_array_partition に throughput_driven オプションを使用して、スループット要件に基づいて配列を分割してみてください。

ループを展開する必要がある場合、または上位階層で PIPELINE 指示子が使用されて自動的にループが展開される場 合は、ループ本体を別の関数にしてみます。これにより、ループが展開されたときにロジックのコピーが複数作成さ れるのではなく、すべてのロジックが 1 つの関数に含まれるようになります。定義された階層のオブジェクトが 1 セ ットであれば、スケジューリングは高速になります。展開されたループがパイプライン領域で使用される場合は、こ の関数をパイプライン処理するようにしてください。

コードの自由度も実行時間に影響することがあります。Vitis HLS では、スループットが最も大きく、レイテンシが最 も短く、エリアが最小のデザインを見つけることが試みられます。Vitis HLS の制約を増やすと、試すオプションが少 なくなるので、実行時間が短くなります。コード内のスコープ (ループ、関数または領域) に対してレイテンシ制約を 使用することを考慮してください。LATENCY 指示子を同じ最小値および最大値で設定すると、そのスコープ内で可 能性のある最適化の検索が減少します。

合成結果の解析

合成が終了すると、 Vitis HLS で合成レポートが自動的に作成され、インプリメンテーションのパフォーマンスを理 解するのに使用できます。作成されるレポートは、合成サマリ レポート、[Schedule Viewer] ビュー、[Dataflow] ビュ ーなどです。これらのレポートは、Vitis HLS の GUI の [Analysis] パースペクティブから 確認できます。

Vitis HLS の GUI の左上にある [Analysis] をクリックして [Analysis] パースペクティブを 開きます。[Analysis] パース ペクティブでは、プロジェクト内のさまざまな要素を表示して、合成結果および現在のソリューションのパフォーマ ンスを確認できます。

[Analysis] パースペクティブには 、デフォルトで [Schedule Viewer] ビューが開きます。次の図に、[Analysis] パースペ クティブのさまざまなウィンドウおよびビューを示します。

• [Schedule Viewer]: 関数の各演算および制御段階、実行されるクロック サイクルを表示します。

• [Module Hierarchy]: 関数階層および現在の階層のパフォーマンス特性を表示します。

• [Performance Profile]: 最上位関数からループをパフォーマンス情報なしで表示します。

• [Resource Profile]: 合成済み関数のさまざまな要素のリソース使用量を表示します。

• [Properties]: [Schedule Viewer] ビューで現在選択している制御段階または演算のプロパティを表示します。

図 27: [Analysis] パースペクティブ

[Module Hierarchy] ビューには、RTL デザイン全体の概要が表示されます。このビューを使用すると、RTL デザイン の階層をすばやく確認できます。

• [Module Hierarchy] ビューには、RTL 階層の各ブロックのリソースとレイテンシが表示されます。

• [Module Hierarchy] ビューには、開始間隔 (II) またはタイミング違反が直接示されます。タイミング違反がある場 合は、特定のモジュールの負のスラック合計も示されます。

[Performance Profile] ビューには、[Module Hierarchy] ビューで現在選択されているブロックのパフォーマンスの詳細

が表示されます。

パフォーマンスは、レイテンシと開始間隔 (II) で示されます。

このビューには、ブロックのパイプライン処理の有無も表示されます。

[Resource Profile] ビューには、選択した階層レベルで使用されるリソースのほか、使用される演算の制御ステートが 表示されます。

ドキュメント内 Vitis 高位合成ユーザー ガイド (ページ 47-50)