config_dataflow - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

説明

  • データフロー パイプライン (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
注意:
デザイン インプリメンテーションで要素数が 6 より多い FIFO が必要な場合、この設定では RTL 検証でエラーが発生します。このオプションを使用する際は注意が必要です。

デッドロックの原因を見つけるには、すべての FIFO、特に C/RTL 協調シミュレーションでレポートされたものの深さを大幅に増加してみます。これによりデッドロックが発生しなくなる場合は、FIFO の深さが不十分であったということです。これは、次のようにテストできます。

config_dataflow -fifo_depth N -start_fifo_depth N -scalar_fifo_depth N -task_level_fifo_depth N