次に説明するように、System Verilog/Verilog で記述された既存のテストベンチを使用すると、テストベンチ階層をわずかに変更するだけで、トラフィックを生成できます。
図 1. テストベンチ階層
上の図に示すように、外部テストベンチ (左側) と Vitis エミュレーション (右側) は、両方とも別々のシミュレーション プロセスとして実行されます。IPC を使用して 2 つのプロセス間の通信を確立するには、SIM_IPC マスター/スレーブ モジュールをインスタンシエートする必要があります。
次の変更を加えます。
-
Vitis エミュレーション デザインに IPC モジュールを追加します。これらは、あらかじめパッケージされた XO として提供されており、
v++
コマンド ラインを使用して挿入できます (ストリーミング トラフィック用の AXI4-Stream I/O モデル を参照)。 - SV/V テストベンチに SIM IPC モジュールを追加します。Traffic Generator トップ内に
ipc_axis_master_mirror
モジュールをインスタンシエートし、SV インターフェイスを介してピン レベルで接続します。ipc_axis_master_mirror
はピン レベルの AXI トランザクションをgeneric_payload
に変換し、IPC ソケットを介して Vitis エミュレーション デザインのipc_axis_master
モジュールに送信します。同様に、Vitis エミュレーション デザインのipc_axis_slave
モジュールに接続するために、Traffic Generator トップにインスタンシエートされたipc_axis_slave_mirror
モジュールもあります。
同じ手法を使用して、外部の SystemVerilog/Verilog トラフィック ジェネレーター/テストベンチから AI エンジン シミュレータまたは x86 シミュレータへのトラフィックを駆動できます。
図 2. XTLM テストベンチの階層
注記: 外部 TG とエミュレーション プロセス/AI エンジン シミュレータ/xx86-sim 間でデータを送信するために使用されるモジュールには、シミュレーション コンテキストごとに異なる名前を付けることができるので、次のようになります。
-
xtlm_ipc_pl2aie
またはipc_axis_master_mirror
が同じ -
tlm_ipc_aie2pl
またはipc_ais_slave_mirror
が同じ - これらはまとめて xtlm_ipc_verilog_stub モジュールで、すべての名前に互換性があります。