I/O トラフィック ジェネレーターでデータ トラフィックを生成するため、またはエミュレーション プロセスから出力データを取り込むためには、アプリケーションをシミュレーションするときにトラフィック ジェネレーター プロセスも含める必要があります。ザイリンクスの提供する Python または C++ ライブラリを使用すると、次で説明するようにトラフィック ジェネレーター コードを作成できます。また、アプリケーションは複数の I/O インターフェイスと通信できます。I/O ユーティリティの各インスタンスを個別のプロセス/スレッドに含める必要はありません。アプリケーションで要求された場合は、ノンブロッキング バージョン API を検討することもできます。詳細は、次のセクションを参照してください。
- Python の場合は、コマンド ターミナルで
$PYTHONPATH
を次のように設定します。setenv PYTHONPATH $XILINX_VIVADO/data/emulation/hw_em/lib/python:\ $XILINX_VIVADO/data/emulation/ip_utils/xtlm_ipc/xtlm_ipc_v1_0/python/
-
gt_master
インスタンスに接続する Python コードの例は、次のようになります。Blocking Send from xilinx_xtlm import ipc_axis_master_util from xilinx_xtlm import xtlm_ipc import struct import binascii #Instantiating AXI Master Utilities master_util = ipc_axis_master_util("gt_master") #Create payload payload = xtlm_ipc.axi_stream_packet() payload.data = "BINARY_DATA" # One way of getting "BINARY_DATA" from integer can be like payload.data = bytes(bytearray(struct.pack("i", int_number))) More info @ https://docs.python.org/3/library/struct.html payload.tlast = True #AXI Stream Fields #Optional AXI Stream Parameters payload.tuser = "OPTIONAL_BINARY_DATA" payload.tkeep = "OPTIONAL_BINARY_DATA" #Send Transaction master_util.b_transport(payload) master_util.disconnect() #Disconnect connection between Python & Emulation
-
gt_slave
インスタンスに接続する Python コードの例は、次のようになります。Blocking Receive from xilinx_xtlm import ipc_axis_slave_util from xilinx_xtlm import xtlm_ipc #Instantiating AXI Slave Utilities slave_util = ipc_axis_slave_util("gt_slave") #Sample payload (Blocking Call) payload = slave_util.sample_transaction() slave_util.disconnect() #Disconnect connection between Python & Emulation
- Python のノンブロッキング バージョン API については、次を参照してください。
$XILINX_VIVADO/data/emulation/ip_utils/xtlm_ipc/xtlm_ipc_v1_0/python/xilinx_xtlm.py