本章节解释了如下图所示的 Vitis 导出流程。从硬件设计创建到导出 .xclbin 的完整流程分为 7 个步骤。
您可通过以下步骤来执行此流程:
- 首先创建 Versal 定制平台设计。Vitis 导出流程需要块设计容器 (BDC) 设计(如 生成 XSA 文件 中所述),并且不支持扁平设计。您可使用基于 HLS 的组件、基于 RTL 的封装 IP 或者来自 Vivado 设计中的 IP 目录的标准 IP。
创建平台后,运行综合,清除与硬件实现相关的任何问题。此流程仅限用于 Versal 器件平台。请使用以下步骤将此平台导出到
extensible.xsa
:-
单击Flow Navigator中的IP Integrator下的Export Platform(导出平台)。
在Export Platform中,选中Presynthesis(预综合)选项生成 extensible.xsa。
提示: 如果Export Platform选项已禁用,请转至Project Settings(工程设置),选中Project is an extensible Vitis Platform(工程为可扩展 Vitis 平台)。
- 在 Tcl 控制台中,输入
write_hw_platform -f <filename>.xsa
命令
-
- 在 Vitis 工具中,导出的 .xsa 会变为所选平台,并且系统设计已完成。
- 编译 AI 引擎计算图 (libadf.a)
- 编译 PL 内核 (.xo)
- 更新 system.cfg 文件用于连接
- 采用
--export_archive
选项运行v++
连接器
在 Vitis 导出到 Vivado 流程中,系统链接进程会照常执行,但会跳过 Vivado 综合与布局布线的自动启动步骤。改用
v++ --link --export_archive
命令来生成 Vitis 元数据存档 (.vma) 以导出到 Vivado Design Suite。v++ --link --export_archive --platform ../<>.xsa --config ../system.cfg \ <>.xo ./libadf.a -o <vma_file>.vma
重要:--export_archive
命令无法搭配--target
(或-t
)命令一起使用。这会返回一个错误。 - 从 Vitis 工具生成 .vma 文件后,打开 Vivado 工程。在 Vivado 工程中通过以下 Tcl 过程导入 .vma 文件:
vitis::import_archive ./vma_path/<vma_file>.vma
- 这样会通过克隆 VMA 的块设计来创建动态区域块设计容器的新变体,并将其激活。
- 在此动态区域块设计内,会将 Vitis 内容封装在层级的某个层次内,如果您在 Vivado 中实现设计后要使用 XRT,应将该封装层次视为实质上的只读层次。如需了解有关在 Vivado 中更新设计时如何保留 XRT 元数据一致性的更多详细信息,请参阅 Vitis 导出流程准则和限制 章节。
-
.vma 区域可在 Vivado 内打开。或者,要重新运行 Vitis 流程,您可在通过
vitis::remove_archive_hierarchy
移除 Vitis 内容后,重新导出可扩展 XSA。
- 将 .vma 导入 Vivado 工具后,只能在 Vivado 内执行设计修改。如需了解更多信息,请参阅 Vitis 导出流程准则和限制 章节。
- 如果
.vma
文件发生更改,例如,更改 AI 引擎设计、PL 内核或者 PLIO 边界,请转至步骤 5,重新生成 .xsa 文件并重新迭代 Vitis 导出到 Vivado 流程。 - 如果设计更改仅与 Vivado 有关,那么请进行设计仿真、综合与实现以满足时序,然后转至步骤 6 生成 fixed.xsa。
- 如果
- 如果设计需要执行 AI 引擎、PL 内核相关更改或者需要更新 PLIO 边界,那么这些更改需要在 Vitis 工具中更新已链接的系统设计并重新生成 .vma。在此情况下,您必须首先使用以下两个 Tcl 过程之一,从 Vivado 工程移除先前导入的 .vma:
- 使用
vitis::remove_archive_hierarchy
过程移除已导入的 .vma 文件,同时保留在导入 .vma 之后对 Vivado 工程执行的任何工作。 - 使用
vitis::remove_archive
过程将 Vivado 工程复原至其导入 .vma 文件前的状态,移除 .vma 和对该工程执行的所有更改。
从 Vivado 设计移除 .vma 后,即可对工程进行任何更改。Vitis 仅取决于动态区域块设计,并且可能与通过 PFM API 声明的连接点有关。更新
system.cfg
即可更新边界连接。如需从 Vivado 导出 extensible.xsa 进行第二次或后续迭代,请使用vitis::remove_archive
命令并重复步骤 1 导出extensible.vma
;重复步骤 2 从 Vitis 导出 VMA,重复步骤 3 将 VMA 导入 Vivado。 - 使用
- 实现设计后,您可使用以下命令从 Vivado 工程生成 fixed.xsa:
write_hw_platform -fixed ./<fixed_xsa>.xsa
此 XSA 可用于为基于 PetaLinux/Yocto 的应用或者基于 XRT 的应用执行应用开发,也可用于通过 Vitis 嵌入式软件流程或裸机流程执行基于 PS 的应用开发,就像传统开发方式一样。
前述命令生成的固定 XSA 只能用于测试硬件目标上的设计。若要运行硬件仿真,请改用以下命令来生成 XSA:
write_hw_platform -fixed -include_sim_content ./<fixed_xsa>.xsa
- 修改设计后,您可以在硬件上测试设计或运行硬件仿真。按照以下步骤生成固定 XSA,以便在硬件和硬件仿真上测试设计。
要在硬件上测试设计,首先请在设计上运行综合与实现。使用
write_hw_platform -fixed ./<path to fixed.xsa>
命令来生成固定 XSA。要运行硬件仿真,请遵循以下步骤生成固定 XSA:
- 重新生成输出文件
- 执行
launch_simulation -scripts only
命令 - 运行
compile.sh
- 运行
elaborate.sh
- 执行
write_hw_platform -fixed -include_sim_content <path to fixed xsa>
命令
-t=hw
) 或硬件仿真目标 (-t=hw_emu
) 上运行设计后,请运行v++ --package
来生成.xclbin
。要为硬件和硬件仿真生成 XCLBIN,请使用相应的fixed.xsa
。请设置t= hw
或hw_emu
,然后提供所需的软件二进制文件和其他文件以生成.xclbin
。
版本控制准则
建议使用 Vitis 和 Vivado 工具开发设计时,对工程源文件进行版本控制。在此流程中,硬件设计开发需要多次设计迭代。您可根据自己的标准来调整版本控制机制。建议使用以下文件进行版本控制:
- C++ 语言源文件
- AI 引擎计算图 (.libadf)
- 配置文件
- Tcl 脚本
- *.vma
- *.xsa