为可扩展 XSA 启用硬件仿真 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

以下步骤可供定制平台开发者使用。

  1. 使用必要的 BD、RTL、测试激励文件和其它源文件创建 Vivado 工程。
    1. 请注意,在 2020.1 中,硬件仿真 (HW EMU) 中只能使用 BD,但从 2020.2 起,将允许使用其它源文件。
    2. (仅限于 Versal ACAP)测试激励文件需包含 BD 封装文件而不是直接包含 BD,因为 Vitis 会在此级别执行作业以将 NoC 插入仿真。
    3. (仅限于 Versal ACAP)要在 Vitis 平台中启用 AI 引擎AI 引擎块需配置为仅启用 1 个 AXI4 存储器映射从端口,并连接至 NoC。基于 AI 引擎 Graph 软件的 Vitis 将在 v++ 链接阶段中执行其它自动连接。
    4. 对于 DFX 平台,请在动态区域 BD 内指定正确的 PFM 属性,以便 Vitis 工具能够正确连接加速器。
  2. 将设计硬件仿真封装更新到 XSA 中。
    1. 在将设计封装到 XSA 中之前,重要的是设计正确完成仿真器的每个步骤。
    2. (仅限于 Versal ACAP)准备平台设计以支持 SystemC 模型。更新 CIPS 和 NoC IP 设置,将 SELECTED_SIM_MODEL 属性更改为 TLM。这样即可确保对于 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 ACAP,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,CIPS IP 将不会生成任何传输事务,因为在 Vivado 仿真器中执行仿真时不存在任何软件。在 Vivado 仿真中,您将看到如下 ERROR 消息,但它表明基本设计在仿真器中已正确加载。
      ##############################################################
      #
       #  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 模型的要求。请参阅 CIPS VIP 和 NoC IP 文档,以获取有关如何设置测试激励文件用于基于 Verilog 的仿真的更多详细信息。
  3. 对仅含硬件仿真的 XSA 进行封装。
    重要: Vivado 工程的所有元素的源文件必须位于工程本地,随后才能将其作为 XSA 进行导出,否则在 Vitis 工具中使用平台时可能会返回错误。
    1. 使用Vivado File > Export > Export Platform(Vivado 文件 > 导出 > 导出平台)以导出硬件仿真平台,或者使用以下 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 将内核添加到设计中。