ストリーミング トラフィック用の AXI4-Stream I/O モデル - 2023.2 日本語

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 日本語

次のセクションは、AXI4-Stream に特有のものです。ストリーミング I/O モデルを使用すると、プラットフォーム上のストリーミング トラフィックをエミュレーションしたり、遅延モデリングをサポートしたりできます。ソフトウェア エミュレーションまたはハードウェア エミュレーションのいずれかをターゲットとする場合は、アプリケーションにストリーミング I/O を追加できます。また、次に説明するように、ハードウェア エミュレーションのコンテキストでカスタム プラットフォーム デザインに追加することもできます。

  • ストリーミング I/O カーネルはほかのコンパイル済みカーネル オブジェクト (XO) ファイルと同様、v++ --link コマンドを使用してデバイス バイナリ (xclbin) ファイルに追加できます。これらのプリコンパイルされた XO ファイルを使用することで、v++ のコンパイル時間を短縮できます。Vitis インストールには、さまざまなデータ幅の AXI4-Stream インターフェイス用のカーネルが含まれます。サポートされる標準的なビット幅は、8、16、32、64、128、256、512 です。これらは、ソフトウェアのインストール時に $XILINX_VITIS/data/emulation/XO に含まれます。

    次のコマンド例を使用して、これらをデザインに追加します。

    v++ -t hw_emu --link $XILINX_VITIS/data/emulation/XO/sim_ipc_axis_master_32.xo $XILINX_VITIS/data/emulation/XO/sim_ipc_axis_slave_32.xo ... 

    上記の例では、sim_ipc_axis_master_32.xo および sim_ipc_axis_slave_32.xo が 32 ビットのマスターおよびスレーブ カーネルを提供し、ターゲット プラットフォームおよびデザイン内のほかのカーネルとリンクしてエミュレーション ビルド用の .xclbin ファイルを作成可能にしています。

  • ハードウェア エミュレーションの場合は、AMD Versal™ および AMD Zynq™ UltraScale+™ MPSoC カスタム プラットフォームの Vivado IP インテグレーターを使用して、IPC モジュールをプラットフォーム ブロック デザインに追加することもできます。このツールには、プラットフォーム デザインに追加する sim_ipc_axis_master_v1_0 および sim_ipc_axis_slave_v1_0 IP が含まれます。これらは、ソフトウェアのインストール ディレクトリの $XILINX_VIVADO/data/emulation/hw_em/ip_repo に含まれます。

    次に、IPC IP をプラットフォーム デザインに追加する Tcl スクリプトの例を示します。このスクリプトを使用すると、Python または C++ で記述された外部プロセスからシミュレーションにデータ トラフィックを挿入できます。

    #Update IP Repository path if required
    set_property  ip_repo_paths $XILINX_VIVADO/data/emulation/hw_em/ip_repo [current_project]
    ## Add AXIS Master
    create_bd_cell -type ip -vlnv xilinx.com:ip:sim_ipc_axis_master:1.0 sim_ipc_axis_master_0
    #Change Model Property if required
    set_property -dict [list CONFIG.C_M00_AXIS_TDATA_WIDTH {64}] [get_bd_cells sim_ipc_axis_master_0]
    
    ##Add AXIS Slave
    create_bd_cell -type ip -vlnv xilinx.com:ip:sim_ipc_axis_slave:1.0 sim_ipc_axis_slave_0
    #Change Model Property if required
    set_property -dict [list CONFIG.C_S00_AXIS_TDATA_WIDTH {64}] [get_bd_cells sim_ipc_axis_slave_0]