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

[Pre-Synthesis Control Flow] ビュー

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

[Run C Simulation] ダイアログ ボックスから、オプションで合成前の制御フロー グラフ (CFG) を生成できます。ダイ アログ ボックスで [Enable Pre-Synthesis Control Flow Viewer] チェック ボックスをオンにしてレポートを生成しま す。生成できたら、次の手順でレポートを開きます。

[Pre-Synthesis Control Flow] ビューは、関数内のホット スポット (演算負荷の高い制御構造) を見つけたり、結果を改 善または最適化するためにプラグマまたは指示子を適用するのに便利です。CFG には、次の図に示すように、C コー ドの制御フローが表示され、最上位関数を視覚化できます。CFG には、ループのトリップカウントなどのスタティッ クプロファイリングと、デザインを解析するためのダイナミックプロファイリングも含まれます。

図 24: [Pre-Synthesis Control Flow] ビュー

上の図に示すように、[Pre-Synthesis Control Flow] ビューには複数の要素が含まれます。

左上の関数呼び出しツリー。

中央の制御フロー グラフ (CFG)。

右上のソース コード ビューアー。

下部のコンソールエリアの [Loop] ビュー (CFG ビューアーとクロスプローブ)

1 つのビューでサブ関数またはループを選択すると、その他のビューでもそれが選択されます。これで、コードの階 層をすばやくナビゲートできます。関数呼び出しを展開すると、ループおよび条件文の制御構造を確認できます。制 御構造をクリックして、ソースコードを表示します。

関数ツリーで関数をダブルクリックすると、CFG のコード階層のそのレベルが開き、1 回クリックすると、単にその 関数が選択されます。[Expand function call] コマンドを使用して CFG を展開すると、指定した階層の関数レベルを表 示できます。

関数呼び出しツリーの [Search] フィールドに入力して、入力したテキストに一致する結果をハイライトすることもで きます。これを使用すると、コード内をすばやくナビゲートできます。

CFG を使用すると、さまざまな制御パスで実行される関数またはサブ関数の回数がレポートされるので、関数のダイ ナミック動作を解析しやすくなります。ループは計算量が多くなる原因となることがよくあります。[Loops] ビュー には、アクセス時間、ループ反復数 (トリップカウント) の合計および平均などの統計が表示されます。ループに関連 するこの情報は、[Loop] ビューからクロスプローブできます。ループをクリックすると、ソース コードおよび制御構 造の両方がハイライトされます。

メモリ操作も CFG ビューアーにアノテートでき 、パフォーマンスを最適化できる可能性がある別のエリアを特定でき ます。

コードの合成

プロジェクトを合成するには、[C Synthesis] ツールバーボタン をクリックするか、[Solution]  [Run C Synthesis]

をクリックします。

注記: 追加のソリューションの作成 に説明されているようにプロジェクトに複数のソリューションを作成している場 合は、現在アクティブなソリューション、すべてのソリューション、または選択したソリューションで [Run C Synthesis] を実行できます。

C/C++ コードは RTL インプリメンテーションに合成されます。合成プロセス中は、メッセージが [Console] ビューに 表示され、vitis_hls.log ファイルに保存されます。

INFO: [HLS 200-1470] Pipelining result : Target II = 1, Final II = 4, Depth

= 6.INFO: [SCHED 204-11] Finished scheduling.

INFO: [HLS 200-111] Elapsed time: 19.38 seconds; current allocated memory:

397.747 MB.

INFO: [BIND 205-100] Starting micro-architecture generation ...

INFO: [BIND 205-101] Performing variable lifetime analysis.

INFO: [BIND 205-101] Exploring resource sharing.

INFO: [BIND 205-101] Binding ...

INFO: [BIND 205-100] Finished micro-architecture generation.

INFO: [HLS 200-111] Elapsed time: 0.57 seconds; current allocated memory:

400.218 MB.

INFO: [HLS 200-10]

---INFO: [HLS 200-10] -- Generating RTL for module 'dct'

GUI では、メッセージに追加情報へのリンクが含まれることもあります。リンクは青色の下線でハイライトされてお り、クリックすると、ヘルプ メッセージ、ソース コード ファイル、または追加情報を含む資料などが開きます。メ ッセージをクリックすると、そのメッセージが表示される理由と回避策が表示されます。

合成が終了すると、次の図に示すように、最上位関数の合成サマリ レポートが情報エリアに表示されます。

図 25: 合成サマリ レポート

合成サマリレポートに表示されるパフォーマンスメトリクスを確認すると、デザインが要件を満たしているかどう かをすばやく判断できます。合成レポートには、次のパフォーマンス メトリクスに関する情報が含まれます。

• [Issue Type]: 問題のタイプ。

• [Latency]: 関数がすべての出力値を計算するのに必要なクロック サイクル数。

• [Initiation interval (II)]: 関数が新しい入力データを受信できるようになるまでのクロック サイクル数。

• [Loop iteration latency]: ループの 1 反復を完了するのにかかるクロック サイクル数。

• [Loop iteration interval]: ループの次の反復でデータの処理が開始するまでのクロック サイクル数。

• [Loop latency]: ループのすべての 反復を実行するのにかかるサイクル数。

• [Resource Utilization]: ルックアップ テーブル (LUT)、レジスタ、ブロック RAM、DSP48 など、FPGA で使用可能 なリソースに基づいてデザインをインプリメントするのに必要なハードウェア リソースの量。

複数のソリューションで [Run C Synthesis] を実行すると、[Console] ビューに各ソリューションの合成ログが表示され ます。合成が終了すると、Vitis HLS は合成サマリではなく、すべての合成済みソリューションの合成結果を比較する レポート比較結果が表示されます。次に、そのレポート例の一部を示します。

図 26: レポート比較結果

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