Python でのトラフィック ジェネレーターの記述 - 2022.1 日本語

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語

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