合成: データフロー オプション
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
-
データフロー正規形式メッセージの重大度を設定します。使用可能なモードは
error
、warning
、off
です。デフォルトは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