AXI トラフィック ジェネレーター カーネルを使用すると、シミュレーション中にシステム デザイン、AI エンジン グラフ、PL カーネルの I/O にトラフィックを挿入できます。AMD では、ソフトウェアおよびハードウェア エミュレーションの場合に AXI4-Stream インターフェイスをイネーブルにしてストリーミング データフローを模倣したり、ハードウェア エミュレーションの場合に AXI4 メモリ マップド インターフェイスをイネーブルにしてメモリ マップド データ転送を模倣するライブラリを提供しています。
AXI トラフィック ジェネレーターは XO ファイルとして提供されており、Vitis コンパイラ (v++
) を使用してシステム プロジェクトにリンクできます。これらの XO ファイルは、sim_ipc_axis_master_XY.xo および sim_ipc_axis_slave_ZW.xo (XY および ZW は PLIO インターフェイスでのビット数) です。たとえば、sim_ipc_axis_master_128.xo は 128 ビット幅の AXI4-Stream マスター データ バスです。幅の広いインターフェイスを使用すると、低いクロック周波数で同じスループットを達成でき、AI エンジン アレイでメモリの帯域幅を最大限に活用できます。PLIO インターフェイス タイルはそれぞれ 64 ビット幅で、リソースは限られます。1 つの 64 ビット PLIO インターフェイスを 2 倍のクロック速度で使用すると、1 つの PLIO タイルで 128 ビットの PLIO と同じ帯域幅を達成できます。これには、PL を 2 倍のクロック速度で実行する必要があり、最適な設定はアプリケーションによって異なります。
システム デザインでトラフィック ジェネレーターを使用するには、2 段階の操作が必要です。
-
トラフィック ジェネレーター (
sim_ipc
) モジュールと、AI エンジン アレイ上の対応する AXI4-Stream ポートとの間の接続を指定します。これは通常、システムのリンク で説明されるように、--connectivity.nk
と--connectivity.sc
コマンドを使用して system.cfg ファイルで指定されます。次に例を示します。[connectivity] nk=sim_ipc_axis_master:1:inst_sim_ipc_axis_master nk=sim_ipc_axis_slave:1:inst_sim_ipc_axis_slave stream_connect=sim_ipc_axis_master.M00_AXIS:ai_engine_0.DataIn stream_connect=ai_engine_0.DataOut:sim_ipc_axis_slave.S00_AXIS
sim_ipc_axis
XO ファイルを接続する構文は、次のとおりです。nk=sim_ipc_axis_master:<Number Of Masters>:<inst_name_1>.<inst_name_2>.<...> nk=sim_ipc_axis_slave:<Number Of Slaves>:<inst_name_1>.<inst_name_2>.<...>
説明:
-
sim_ipc_axis_master/slave
は、デザインの XO カーネルを指定します。 -
<Number Of Masters>
または<Number Of Slaves>
フィールドでは、デザイン内で最大 8 つの異なるトラフィック ジェネレーター カーネルを指定できます。 -
<inst_name>
は、アプリケーションで意味のある名前にする必要があります。
-
-
次に、XO ファイルを Vitis リンク コマンドに追加します。
重要: トラフィック ジェネレーター XO は、hw_emu
ターゲットを使用したハードウェア エミュレーションでのみ使用できます。v++ -l --platform <platform.xpfm> sim_ipc_axis_master_128.xo sim_ipc_axis_slave_128.xo libadf.a -target hw_emu --config system.cfg
Vitis コンパイラでの XO ファイルの使用方法については、デバイス バイナリのビルド を参照してください。