説明
- データフロー パイプライン (
set_directive_dataflow
コマンドによりインプリメントされる) のデフォルト動作を指定します。 - デフォルトのチャネル メモリ タイプおよびその深さを指定できます。
構文
config_dataflow [OPTIONS]
オプション
-
-default_channel [fifo | pingpong]
- デフォルトでは、データフロー パイプラインを使用すると、関数間またはループ間のデータのバッファリングにピンポン形式 (
pingpong
) でコンフィギュレーションされた RAM メモリが使用されます。ストリーミング データを使用する (データの読み出しおよび書き込みを常に順に実行する) 場合は、FIFO メモリの方が効率的なので、FIFO をデフォルトのメモリ タイプとして選択できます。ヒント: FIFO アクセスを実行するには、set_directive_stream コマンドを使用して配列をストリーミングに設定する必要があります。 -
-disable_fifo_sizing_opt
- FIFO のサイズ最適化をディスエーブルにします。この最適化は、リソース使用量を増加しますが、パフォーマンスを向上し、デッドロックを削減する可能性があります。
-
-fifo_depth <integer>
- デフォルトの FIFO の深さを指定します。デフォルトの深さは 2 です。
このオプションは、ピンポン形式のメモリが使用されている場合は無視されます。指定しない場合、デフォルトの深さは 2 です。これが FIFO に変換される配列である場合は、デフォルト サイズは元の配列のサイズになります。場合によっては、この設定が控えめすぎ、必要以上に大きな FIFO が作成されてしまうことがあります。このオプションは FIFO のサイズが必要以上に大きいとわかっている場合に使用してください。
注意:このオプションを使用する場合は注意が必要です。FIFO の深さが足りないと、デッドロックになる可能性があります。 -
-override_user_fifo_depth <value>
-
すべての
hls::stream
に指定した深さが使用され、ユーザー設定は無効になります。注記: これは、デッドロックがデザインの FIFO の深さが不十分であるために発生しているかどうかを確認するのに有益です。これを大きい値に設定すると (協調シミュレーションの最後に表示される最大深さなど)、デッドロックがない場合は、協調シミュレーションおよび GUI の FIFO 深さのプロファイリング オプションを使用して、高パフォーマンスでデッドロックを回避する最小深さを見つけることができます。 -
-scalar_fifo_depth <integer>
- スカラー伝搬 FIFO の最小値を指定します。
スカラー伝搬により、C/C++ コードが FIFO に変換されます。これらの FIFO の最小サイズは
-start_fifo_depth
で設定できます。このオプションを指定しない場合は、-fifo_depth
の値が使用されます。 -
-start_fifo_depth <integer>
- 伝搬が開始される FIFO の最小の深さを指定します。
このオプションは、送信および受信間のチャネルが FIFO の場合にのみ有効です。このオプションのデフォルト値は、
-fifo_depth
オプションと同じで 2 です。このような FIFO によりデッドロックが発生することがあるので、その場合はこのオプションを使用して FIFO の深さを増加します。 -
-strict_mode [off | warning | error]
- データフロー正規形式に関連するメッセージの重要度を設定します。
-
-strict_stable_sync[=true|false]
- 安定したポートを強制的に
ap_done
と同期化します。
-
-task_level_fifo_depth <integer>
- タスク レベルの FIFO の深さを指定します。
FIFO は
ap_ctrl_chain
で同期化されます。書き込みはプロデューサーのap_done
で、読み出しはコンシューマーのap_ready
です。同期化の点では PIPO と同様で、アクセスの点では FIFO と同様です。
例
デフォルト チャネルをピンポン形式のメモリから FIFO に変更します。
config_dataflow -default_channel fifo
デフォルト チャネルをピンポン形式のメモリから深さ 6 の FIFO に変更します。
config_dataflow -default_channel fifo -fifo_depth 6
デッドロックの原因を見つけるには、すべての FIFO、特に C/RTL 協調シミュレーションでレポートされたものの深さを大幅に増加してみます。これによりデッドロックが発生しなくなる場合は、FIFO の深さが不十分であったということです。これは、次のようにテストできます。
config_dataflow -fifo_depth N -start_fifo_depth N -scalar_fifo_depth N -task_level_fifo_depth N