データフロー設定 - 2023.2 日本語

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 日本語

合成: データフロー オプション

syn.dataflow コマンドは、デザイン全体のデータフロー解析を設定します。これらの設定は、syn.directive.dataflow で使用されるデフォルトのメモリ チャネルと FIFO の深さを指定します。

syn.dataflow.default_channel

デフォルトでは、データフロー パイプラインを使用すると、関数間またはループ間のデータのバッファリングにピンポン形式で設定された RAM メモリが使用されます。ストリーミング データを使用する (データの読み出しおよび書き込みを常に順に実行する) 場合は、FIFO メモリの方が効率的なので、FIFO をデフォルトのメモリ タイプとして選択できます。

使用可能なチャネルは、fifo および pingpong です。デフォルトは pingpong です。
syn.dataflow.default_channel=fifo
ヒント: FIFO アクセスを実行するには、set_directive_stream コマンドを使用して配列をストリーミングに設定する必要があります。
syn.dataflow.disable_fifo_sizing_opt
FIFO のサイズ最適化をディスエーブルにします。この最適化は、リソース使用量を増加しますが、パフォーマンスを向上し、デッドロックを削減する可能性があります。
syn.dataflow.disable_fifo_sizing_opt=1
syn.dataflow.fifo_depth
整数値で FIFO のデフォルトの深さを指定します。このオプションは、pingpong 形式のメモリが使用されている場合は無視されます。デフォルトでは、チャネルで使用される FIFO の深さは、最大のプロデューサーまたはコンシューマー (いずれか大きい方) のサイズに設定されます。場合によっては、この方法が控えめすぎて、必要以上に大きな FIFO が作成されてしまうことがあります。このオプションは、FIFO が必要以上に大きいことが分かっている場合に、深さを指定するために使用してください。
syn.dataflow.fifo_depth=6
重要: このオプションを使用すると、デザインが正しく動作しないことがあるので注意が必要です。
syn.dataflow.override_user_fifo_depth
すべての hls::stream に深さを指定し、ユーザー設定はオーバーライドされます。
syn.dataflow.override_user_fifo_depth=12

これは、デッドロックがデザインの FIFO の深さが不十分であるために発生しているかどうかを確認するのに有益です。オーバーライドを大きい値に設定すると (協調シミュレーションの最後に表示される最大深さなど)、デッドロックがない場合は、協調シミュレーションおよび GUI の FIFO 深さのプロファイリング オプションを使用して、高パフォーマンスでデッドロックを回避する最小の深さを見つけることができます。

syn.dataflow.scalar_fifo_depth
「コンパイラで作成される FIFO の深さの指定」で説明されるように、スカラー値伝搬 FIFO の最小の深さを整数値で指定します。これらの FIFO は、データフロー領域のスカラー引数の値を、その領域内で先行するプロセスに転送するために使用されます。これらは論理的な正しさには影響しませんが、自動的に計算されるサイズが不十分な場合、パフォーマンスの低下やデッドロックの原因になることがあります。
syn.dataflow.scalar_fifo_depth=4

このオプションを指定しない場合、最小の深さは syn.dataflow.fifo_depth オプションの値、または 2 となります。大体の場合、最適な値は、スカラー値を前送りするプロセスが、それを読み取った最後のプロセスの開始前に開始可能な平均回数です。

syn.dataflow.start_fifo_depth
「コンパイラで作成される FIFO の深さの指定」で説明されるように、開始伝搬 FIFO の最小の深さを整数値で指定します。これらの FIFO は、ap_start ハンドシェイク信号を、その領域の先行するプロセスに転送するために使用されます。これらは論理的な正しさには影響しませんが、自動的に計算されるサイズが不十分な場合、パフォーマンスの低下の原因になることがあります。
syn.dataflow.start_fifo_depth=5

このオプションを指定しない場合、最小の深さは syn.dataflow.fifo_depth オプションの値、または 2 となります。大体の場合、最適な値は、あるプロセスが後継プロセスと比較して、どれくらい先に開始できるようになるかを示す平均回数です。

syn.dataflow.strict_mode
データフロー正規形式メッセージの重大度を設定します。使用可能なモードは errorwarningoff です。デフォルトは warning です。
syn.dataflow.strict_mode=error
syn.dataflow.strict_stable_sync
安定したポートを強制的に ap_done と同期化します。詳細は、『Vitis 高位合成ユーザー ガイド』 (UG1399) の「stable 配列」を参照してください。
syn.dataflow.strict_stable_sync=1
syn.dataflow.task_level_fifo_depth
デフォルトのタスクレベル FIFO の深さ (プロセス間でスカラーを転送するために自動的に作成される FIFO に使用) を設定します。FIFO は ap_ctrl_chain で同期化されます。書き込みはプロデューサーの ap_done で、読み出しはコンシューマーの ap_ready です。同期化の点では PIPO と同様で、アクセスの点では FIFO と同様です。
syn.dataflow.task_level_fifo_depth=7