エクステンシブル XSA のハードウェア エミュレーションのイネーブル - 2023.2 日本語

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

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

次の手順は、カスタム プラットフォームの開発者用です。

  1. 必要な BD、RTL、テストベンチ、およびその他のソースを使用して Vivado プロジェクトを作成します。
    1. 2020.1 では、BD で使用できたのは HW EMU だけでしたが、2020.2 からは、その他のソースも使用できるようになりました。
    2. Versal アダプティブ SoC の場合のみ、テストベンチに BD を直接含めるのではなく、 BD ラッパーを含める必要があります。これは、Vitis が NoC をシミュレーションに挿入するジョブをこのレベルで実行するためです。
    3. Versal アダプティブ SoC の場合のみ、Vitis プラットフォームで AI エンジン をイネーブルにするには、1 つのスレーブ AXI4 メモリ マップド ポートだけをイネーブルにし、NoC に接続するように AI エンジン ブロックを設定する必要があります。AI エンジン グラフ ソフトウェアに基づく Vitis は、v++ リンク段階で追加の自動接続をします。
    4. DFX プラットフォームの場合は、Vitis ツールがアクセラレータを正しく接続できるように、ダイナミック領域 BD で正しい PFM プロパティを指定する必要があります。
  2. HW エミュレーションを XSA にパッケージするようにデザインをアップデートします。
    1. デザインは XSA にパッケージする前に、シミュレータで正しく実行されていることが重要です。
    2. Versal アダプティブ SoC の場合のみ、SystemC モデルをイネーブルにするプラットフォーム デザインを準備する必要があります。SELECTED_SIM_MODEL プロパティを TLM に変更するように、CIPS および NoC IP 設定を更新します。これにより、CIPS IP でソフトウェアを実行できる QEMU モデルが使用されるようになります。同様に、Zynq 7000 および Zynq UltraScale+ MPSoC の場合は、プロセッシング システム IP インスタンスで SELECTED_SIM_MODEL を設定します。デザインでは、次の Tcl コマンドを使用できます。また、Vivado で SystemC シミュレーションをイネーブルにするようにパラメーターを設定します。
      foreach tlmCell [get_bd_cells * -hierarchical -filter {VLNV =~ "*:*:axi_noc:*" || VLNV =~ "*:*:versal_cips:*"}] {set_property SELECTED_SIM_MODEL tlm $tlmCell }
      set_param bd.generateHybridSystemC true
    3. sim_1 fileset にテストベンチを作成し、デザインの <top> モジュールをインスタンシエートします。Versal アダプティブ SoC の場合、Vivado でテストベンチが <top> モジュールを直接インスタンシエートしないようにする必要があります。代わりに、<top>_sim_wrapper モジュールをインスタンシエートしてください。launch_simulation -scripts_only コマンドを呼び出すと、<top>_sim_wrapper.v というファイルが生成されます。このモジュールのインターフェイスは <top> モジュールと同じですが、集約型 NoC モジュールに関連する追加のシミュレーション モデル (デザインにインスタンシエートされたさまざまな論理 NoC モジュールから作成) をインスタンシエートする点が異なります。次の Vivado Tcl コマンドを使用して、必要な NoC シミュレーション ファイルを生成し、シミュレーション ソースで使用します。
      # Ensure that your top of synthesis module is also set as top for simulation
      
      set_property top <rtl_top> [get_filesets sim_1]
      
      # Generate simulation top for your entire design which would include
      # aggregated NOC in the form of xlnoc.bd
      
      launch_simulation -scripts_only
      update_compile_order -fileset sim_1
      
      # Set the auto-generated <rtl_top>_sim_wrapper as the sim top
      
      set_property top <rtl_top>_sim_wrapper [get_filesets sim_1]
      update_compile_order -fileset sim_1
      
      #Generate the final simulation script which will compile
      # the <syn_top>_sim_wrapper and xlnoc.bd modules also
      launch_simulation -scripts_only
      launch_simulation -step compile
      launch_simulation -step elaborate
    4. デザインをコンパイルし、上記の手順を実行して、シミュレーションを開始します。デザインは QEMU を使用するように設定されているため、Vivado シミュレータでシミュレーションする際に SW が存在しないので、CIPS IP はトランザクションを生成しません。Vivado シミュレーションでは次のエラーメッセージが表示されますが、基本デザインがシミュレータに正しく読み込まれたことを示しています。
      ##############################################################
      #
       #  Simulation does not work as Versal CIPS Emulation (SELECTED_SIM_MODLE=tlm) only works with Vitis tool(launch_emulator.py tool in Vitis)
      #
      ##############################################################
       
      ERROR: [Simtcl 6-50] Simulation engine failed to start: The Simulation shut down unexpectedly during initialization.
      注記: デザインのトランザクションが正しいかどうかは、オプションで CIPS VIP を使用してデザインのシミュレーションを実行してから、TLM (QEMU) を使用するように変更して確認します。まず、NoC および CIPS IP の SELECTED_SIM_MODEL プロパティを RTL にする必要があります。また、CIPS VIP を駆動し、NoC Verilog モデルの要件も満たす別のテストベンチを作成します。Verilog ベースのシミュレーション用にテストベンチを設定する方法は、CIPS VIP および NoC IP の資料を参照してください。
  3. ハードウェア エミュレーションのみの XSA をパッケージします。
    重要: Vivado プロジェクトのすべての要素のソースファイルは、XSA としてエクスポートする前にプロジェクトに対してローカルである必要があります。そうでない場合は Vitis ツールでプラットフォームを使用するときにエラーになります。
    1. ハードウェア エミュレーション プラットフォームをエクスポートするには、Vivado File > Export > Export Platform をクリックするか、次の Tcl コマンドを使用します。
      set_property platform.platform_state "pre_synth" [current_project]
      write_hw_platform -hw_emu -file  platform_hw_emu.xsa
    2. この XSA とプリビルドされた Linux イメージや PetaLinux を一緒に使用すると、カスタム Linux イメージを作成して、完全なプラットフォームを構築できます。その後、残りの Vitis ツールを使用して、XRT で設計するカーネルを追加できます。