利用仿真流程进行应用仿真 - 2023.2 简体中文

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

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文

要开发以 FPGA 为目标的应用和硬件内核,需要采用分阶段开发方法。由于 FPGA、AMD Versal™ 自适应 SoC 和 AMD Zynq™ UltraScale+™ MPSoC 均为可编程器件,因此为硬件构建器件二进制文件需要一些时间。为了在无需执行整个硬件编译流程的前提下加速迭代,AMD Vitis™ 工具提供了软件仿真目标用于执行基于 C 语言的设计仿真,并提供了硬件仿真目标用于执行软件应用与 PL 内核之间的 C-RTL 协同仿真。编译仿真目标比编译实际硬件要快得多。此外,仿真目标可以提供对应用或加速器的完整可视性,从而使执行调试变得更简单。在仿真中设计通过后,在开发的后续阶段内,您即可在硬件平台上编译和运行应用。

Vitis 工具可提供 2 种仿真目标:

软件仿真 (sw_emu)
软件仿真构建可以快速编译和链接,主机程序可在 x86 处理器上本机运行或者也可以在 QEMU 仿真环境内运行。PL 内核在主机上本机编译和运行。此构建目标支持您在主机代码和内核逻辑上快速迭代。
硬件仿真 (hw_emu)
主机程序在 sw_emu 下运行(在 x86 上本机运行或者在 QEMU 内运行),但内核代码编译为 RTL 行为模型,此模型在 AMD Vivado™ 仿真器内运行或者在其他受支持的第三方仿真器内运行。此构建和运行循环需要更长时间,但可提供周期精确的内核逻辑视图。

任一仿真目标的编译和链接均无缝集成到 Vitis 命令行和 IDE 流程中。您无需对源代码进行任何更改即可对任一仿真目标的主机和内核源代码进行编译。对于主机代码,您无需为仿真采用不同编译方法,因为在仿真中可使用相同的主机可执行文件或 PS 应用 ELF 二进制文件。仿真目标支持大部分功能,包括 XRT API、缓冲器传输、平台存储器 SP 标签、内核到内核连接等。以下章节详述了软件和硬件仿真流程的功能特性和需求。

运行仿真时,可按 在应用中启用剖析 中所述指定多个追踪选项以便在运行时期间捕获设计数据。运行期间生成的任意报告都会收集到 xrt.run_summary 文件中。此报告集合可通过在 Vitis 分析器中打开 run_summary 来查看,其中包含汇总报告、用于演示硬件设计的系统和平台框图、提供系统性能改进建议的运行指南以及运行时期间在 xrt.ini 文件中启用的“剖析汇总”和“时间线轨迹”。如需了解更多信息,请参阅 使用“Analysis”视图 (Vitis Analyzer)

“SW Emulation”(软件仿真)是抽象模型,并不使用任何 PetaLinux 驱动程序,如 Zynq OpenCL (ZOCL)、中断控制器或设备树二进制文件 (DTB)。因此,软件仿真可以避免在完整的 QEMU 机器上创建 sd_card.img 和启动 PetaLinux 的开销。这样即可加速执行 SW_EMU,因为 QEMU 速度缓慢且需要 PetaLinux。故而就此方法而言,您无需提供 sysroot、rootfs 和 sd_Card Image 等字段。

注释: 如果您搭配环境设置脚本“xilinx-versal-common-v2022.2/environment-setup-cortexa72-cortexa53-xilinx-linux”来执行 source 命令,那么执行嵌入的 XRT 时可能会遇到警告或错误,提示取消设置 LD_LIBRARY_PATH(如已设置)。此环境设置脚本会利用所需的额外环境变量来设置 arm gcc 工具链路径。

安装 x86 XRT 时会将 LD_LIBARY_PATH 变量自动设置为指向 XRT 库。要在同一次设置(同一个终端)中同时运行嵌入的 XRT 和 x86 XRT,必须为嵌入式系统指定 arm-gcc 和 SYSROOT 路径。