进行应用仿真时,您必须同时包含流量生成器进程,以在 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