流程详情与实现 - 2023.2 简体中文

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

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

本章节解释了如下图所示的 Vitis 导出流程。从硬件设计创建到导出 .xclbin 的完整流程分为 7 个步骤。

图 1. Vitis 导出到 Vivado 流程

您可通过以下步骤来执行此流程:

  1. 首先创建 Versal 定制平台设计。Vitis 导出流程需要块设计容器 (BDC) 设计(如 生成 XSA 文件 中所述),并且不支持扁平设计。您可使用基于 HLS 的组件、基于 RTL 的封装 IP 或者来自 Vivado 设计中的 IP 目录的标准 IP。

    创建平台后,运行综合,清除与硬件实现相关的任何问题。此流程仅限用于 Versal 器件平台。请使用以下步骤将此平台导出到 extensible.xsa

    1. 单击Flow Navigator中的IP Integrator下的Export Platform(导出平台)。



      Export Platform中,选中Presynthesis(预综合)选项生成 extensible.xsa

      提示: 如果Export Platform选项已禁用,请转至Project Settings(工程设置),选中Project is an extensible Vitis Platform(工程为可扩展 Vitis 平台)。


    2. 在 Tcl 控制台中,输入 write_hw_platform -f <filename>.xsa 命令
  2. 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)命令一起使用。这会返回一个错误。
  3. Vitis 工具生成 .vma 文件后,打开 Vivado 工程。在 Vivado 工程中通过以下 Tcl 过程导入 .vma 文件:
    vitis::import_archive ./vma_path/<vma_file>.vma 
    1. 这样会通过克隆 VMA 的块设计来创建动态区域块设计容器的新变体,并将其激活。
    2. 在此动态区域块设计内,会将 Vitis 内容封装在层级的某个层次内,如果您在 Vivado 中实现设计后要使用 XRT,应将该封装层次视为实质上的只读层次。如需了解有关在 Vivado 中更新设计时如何保留 XRT 元数据一致性的更多详细信息,请参阅 Vitis 导出流程准则和限制 章节。
    3. .vma 区域可在 Vivado 内打开。或者,要重新运行 Vitis 流程,您可在通过 vitis::remove_archive_hierarchy 移除 Vitis 内容后,重新导出可扩展 XSA。
  4. .vma 导入 Vivado 工具后,只能在 Vivado 内执行设计修改。如需了解更多信息,请参阅 Vitis 导出流程准则和限制 章节。
    1. 如果 .vma 文件发生更改,例如,更改 AI 引擎设计、PL 内核或者 PLIO 边界,请转至步骤 5,重新生成 .xsa 文件并重新迭代 Vitis 导出到 Vivado 流程。
    2. 如果设计更改仅与 Vivado 有关,那么请进行设计仿真、综合与实现以满足时序,然后转至步骤 6 生成 fixed.xsa
  5. 如果设计需要执行 AI 引擎、PL 内核相关更改或者需要更新 PLIO 边界,那么这些更改需要在 Vitis 工具中更新已链接的系统设计并重新生成 .vma。在此情况下,您必须首先使用以下两个 Tcl 过程之一,从 Vivado 工程移除先前导入的 .vma
    1. 使用 vitis::remove_archive_hierarchy 过程移除已导入的 .vma 文件,同时保留在导入 .vma 之后对 Vivado 工程执行的任何工作。
    2. 使用 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

  6. 实现设计后,您可使用以下命令从 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
  7. 修改设计后,您可以在硬件上测试设计或运行硬件仿真。按照以下步骤生成固定 XSA,以便在硬件和硬件仿真上测试设计。

    要在硬件上测试设计,首先请在设计上运行综合与实现。使用 write_hw_platform -fixed ./<path to fixed.xsa> 命令来生成固定 XSA。

    要运行硬件仿真,请遵循以下步骤生成固定 XSA:

    1. 重新生成输出文件
    2. 执行 launch_simulation -scripts only 命令
    3. 运行 compile.sh
    4. 运行 elaborate.sh
    5. 执行 write_hw_platform -fixed -include_sim_content <path to fixed xsa> 命令
    准备好在硬件目标 (-t=hw) 或硬件仿真目标 (-t=hw_emu) 上运行设计后,请运行 v++ --package 来生成 .xclbin。要为硬件和硬件仿真生成 XCLBIN,请使用相应的 fixed.xsa。请设置 t= hwhw_emu,然后提供所需的软件二进制文件和其他文件以生成 .xclbin

版本控制准则

建议使用 VitisVivado 工具开发设计时,对工程源文件进行版本控制。在此流程中,硬件设计开发需要多次设计迭代。您可根据自己的标准来调整版本控制机制。建议使用以下文件进行版本控制:

  • C++ 语言源文件
  • AI 引擎计算图 (.libadf)
  • 配置文件
  • Tcl 脚本
  • *.vma
  • *.xsa