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 平台的 hw
和 hw_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 下载至器件,如下所示:
- 请将以下配置添加到
xrt.ini
文件中:[Runtime] force_program_xclbin=true
- 将此文件置于从中运行主机程序的目录内。
这样即可确保 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。