以 DFX 平台为目标 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文
Vitis DFX 平台包含静态区域和 DFX 区域。
静态区域
系统启动时加载的硬化的块。此块在运行时不可重新配置。
DFX 区域
可重配置分区 (RP),由 Vivado IP integrator 块设计容器 (BDC) 来实现。重配置模块 (RM) 在运行时加载到 RP。

赛灵思提供了基础 DFX 平台 xilinx_vck190_base_dfx_202210_1,它是单一 RP DFX 平台,换言之,它包含一个静态区域和唯一的 DFX 区域(或 RM)。RM 包含 AI 引擎阵列和 PL 内核。加载时,将同时加载整个 AI 引擎阵列和所有 PL 内核。下图显示了这些 DFX 平台的块设计 (BD)。

图 1. 基础 DFX 平台的块设计
静态分区包含:
  • CIPS 和 PS NoC
  • 时钟、复位、中断和 AXI 互连
  • NoC 接口和 DDR 存储器控制器

DFX 区域包含 AI 引擎阵列和 PL 内核,通过 Vitis 连接器 (v++ -l) 将其链接在一起。下图显示了由 Vitis 连接器生成的 DFX 区域示例。

图 2. DFX 区域的块设计
DFX 区域和静态区域接口包括:
  • 时钟与复位
  • NoC 间接口 (INI) 输出至常规存储器
  • INI 输入源自 PS,用于控制 AI 引擎
  • AXI 接口源自 PS,用于控制 PL 内核
DFX 区域中可包含:
  • AI 引擎
  • PL 内核
  • AXI-NoC IP
  • 时钟和复位模块
  • AXI Interconnect 模块
  • ILA
  • FIFO、数据宽度转换器 (DWC) 和 CDC 模块

以 DFX 平台为目标时,在基础平台中可引用 aiecompiler、v++ 编译器 (v++ -c) 和 v++ 连接器 (v++ -l) 命令。DFX 平台中的 v++ 封装器 (v++ -p) 有别于基础平台中的封装器。在 DFX 平台的 hwhw_emu 模式下,v++ 封装器也不同。

硬件部署流程

对于 hw 流程,DFX 平台的 v++ 封装器如下所示:
v++ -p -t hw -f xilinx_vck190_base_dfx_202210_1 
  --package.defer_aie_run \
  -o rm.xclbin \
  ${XSA} \
  libadf.a

v++ -p -t hw -f xilinx_vck190_base_dfx_202210_1 
  --package.rootfs ${ROOTFS} 
  --package.kernel_image ${IMAGE} \
  --package.boot_mode=sd \
  --package.image_format=ext4 \
  --package.sd_dir data \
  --package.sd_file ${HOST_EXE} \
  --package.sd_file rm.xclbin
其中:
  • 第一条 v++ -p 命令用于生成 xclbin 文件,其中包含将在运行时加载的 RM PDI。
  • 第二条 v++ -p 命令用于将 RM xclbin 文件 (rm.xclbin) 封装到 SD 卡中,该卡可供主机程序读取。
启动 Linux 后,在命令提示符处输入以下命令:
cd /run/media/mmcblk0p1
./host.exe rm.xclbin
注释: 如果 XRT 检测到已下载同一 XCLBIN,那么默认它将不会再次下载此 XCLBIN。而是改为仅从 xclbin 文件加载元数据。

为确保 XCLBIN 已下载,并且每次都清除器件,请设置 xrt.ini 以强制将 XCLBIN 下载至器件,如下所示:

  1. 请将以下配置添加到 xrt.ini 文件中:
    [Runtime]
    force_program_xclbin=true
  2. 将此文件置于从中运行主机程序的目录内。

这样即可确保 XRT 每次都能将 XCLBIN 下载至器件。

硬件仿真部署流程

对于 hw_emu 流程,v++ 封装器命令如下:
emconfigutil --platform xilinx_vck190_base_dfx_202210_1 --nd 1
v++ -p -t hw_emu -f xilinx_vck190_base_dfx_202210_1 \
  --package.defer_aie_run \
  --package.rootfs ${ROOTFS} \
  --package.kernel_image ${IMAGE} \
  --package.boot_mode=sd \
  --package.image_format=ext4 \
  --package.sd_dir data \
  --package.sd_file ${HOST_EXE} \
  --package.sd_file emconfig.json \
  -o rm.xclbin \
  ${XSA} \
  libadf.a
使用以下命令启动仿真:
./launch_hw_emu.sh
在 QEMU 中,可运行以下命令:
cd /run/media/mmcblk0p1
export XCL_EMULATION_MODE=hw_emu
./host.exe rm.xclbin rm.xclbin
注释:hw_emu 模式下,XCLBIN 只能下载一次。无法重新加载 RM。