DATAFLOW
最適化は、RTL 協調シミュレーション完了後にのみ理解可能な動的最適化です。このため、合成後にはツールで推論されたデータフロー構造を表示する [Dataflow] ビューが提供され、チャネル (FIFO/PIPO) を調べ、チャネルの深さがどのようにパフォーマンスに影響しているのかを確認できます。パフォーマンス データは、協調シミュレーション後に [Dataflow] ビューにバックアノテートされます。重要: RTL 協調シミュレーションを実行しなくても [Dataflow] ビューを開くことはできますが、読み出し/書き込みのブロック時間、協調シミュレーションの深さ、ストール時間などの重要なパフォーマンス情報は含まれません。
[Dataflow Viewer] レポートが生成されるようにするには、デザインに DATAFLOW
プラグマまたは指示子を適用する必要があります。データフローは、最上位関数に適用するか、関数の領域またはループを指定して適用します。[Dataflow] ビューには、さまざまなプロセスとその基になるプロデューサーとコンシューマー関係を示すデータフロー構造がグラフで表示されます。DATAFLOW プラグマがある場合は、成サマリ、モジュール階層、関数呼び出しグラフには、最上位関数の横に アイコンが表示されます。
ヒント: 次の図は、ターゲット フローの概要 で説明するように、Vitis カーネル フローのデフォルトの
m_axi
インターフェイスから生成されたものです。Vivado IP フローを使用すると、データフロー図が異なることがあります。図 1. [Dataflow] ビュー
[Dataflow] ビューには、次の機能があります。
- ソース コード ブラウザー
- プロセス/チャネルからソース コードに自動クロスプローブ。
- ポートおよびチャネル タイプのフィルター。
- データの特定の詳細を示すプロセスとチャネルの表:
- チャネル プロファイリング (FIFO サイズなど) は、コンフィギュレーション ファイル エディターの C/RTL Cosimulation の設定からイネーブルにできます。重要: [Dataflow] ビューに表示するデータを収集するには、HLS コンフィギュレーション ファイルで
cosim.enable_dataflow_profiling=true
を使用する必要があり、テストベンチで最上位関数の反復を少なくとも 2 回実行する必要があります。 - RTL 協調シミュレーション後にレポートされるプロセス読み出しのブロック時間、書き込みブロック時間、ストール時間。
- プロセス レイテンシおよび II を表示。
- チャネル タイプおよび幅をチャネルの表に表示。
- プロセスおよびチャネルの表からグラフおよびソース ブラウザーに自動クロスプローブ。
- チャネルまたはプロセスにカーソルを置くとツール ヒントにデザインの情報を表示。
- チャネル プロファイリング (FIFO サイズなど) は、コンフィギュレーション ファイル エディターの C/RTL Cosimulation の設定からイネーブルにできます。
[Dataflow] ビューは、デザイン パフォーマンスのデバッグに便利です。RTL 協調シミュレーション中にデザインがデッドロック状態になった場合、GUI で [Dataflow] ビューが開き、デッドロックにかかわるチャネルとプロセスがハイライトされるので、たとえば FIFO の深さが不十分であることが原因であるかなどを判断できます。
予測どおりのデザイン パフォーマンスが得られない場合は、その理由を理解するのにプロセスおよびチャネルの表が役立ちます。プロセスが入力を読み出すことを待機しているためにストールしたり、出力を書き込めないためにストールしたりすることがあります。チャネルの表には、ストールの割合と、プロセスで読み出しがブロックされているのか (read blocked) 書き込みがブロックされているのか (write blocked) が示されます。
[Dataflow Viewer] ビューの上に表示されるメニュー バーには、次の機能があります。
- Zoom In/Zoom Out/Zoom Fit コマンド
- Toggle Table コマンドでグラフの下に表を表示または非表示
- Group All/Ungroup All を使用すると、関連するチャネルをグループ化し、図を簡略化できます。
- Legend コマンドで表示を設定します。