以下步骤可供定制平台开发者使用。
- 使用必要的 BD、RTL、测试激励文件和其它源文件创建 Vivado 工程。
- 请注意,在 2020.1 中,硬件仿真 (HW EMU) 中只能使用 BD,但从 2020.2 起,将允许使用其它源文件。
- (仅限于 Versal ACAP)测试激励文件需包含 BD 封装文件而不是直接包含 BD,因为 Vitis 会在此级别执行作业以将 NoC 插入仿真。
- (仅限于 Versal ACAP)要在 Vitis 平台中启用 AI 引擎,AI 引擎块需配置为仅启用 1 个 AXI4 存储器映射从端口,并连接至 NoC。基于 AI 引擎 Graph 软件的 Vitis 将在
v++
链接阶段中执行其它自动连接。 - 对于 DFX 平台,请在动态区域 BD 内指定正确的 PFM 属性,以便 Vitis 工具能够正确连接加速器。
- 将设计硬件仿真封装更新到 XSA 中。
- 在将设计封装到 XSA 中之前,重要的是设计正确完成仿真器的每个步骤。
- (仅限于 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
- 在
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
- 编译设计,逐步执行上述步骤,然后开始仿真。由于设计配置为使用 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 的仿真的更多详细信息。
- 对仅含硬件仿真的 XSA 进行封装。重要: Vivado 工程的所有元素的源文件必须位于工程本地,随后才能将其作为 XSA 进行导出,否则在 Vitis 工具中使用平台时可能会返回错误。
- 使用
set_property platform.platform_state "pre_synth" [current_project] write_hw_platform -hw_emu -file platform_hw_emu.xsa
(Vivado 文件 > 导出 > 导出平台)以导出硬件仿真平台,或者使用以下 Tcl 命令: - 此 XSA 可搭配预构建的 Linux 镜像一起使用或者搭配 PetaLinux 一起使用以创建定制 Linux 镜像,用于创建完整平台。随后,可使用其它 Vitis 工具来通过 XRT 将内核添加到设计中。
- 使用