在 Vitis IDE 中自定义和生成核 - 4.0 简体中文

面向 Zynq UltraScale+ MPSoC 的 DPUCZDX8G 产品指南 (PG338)

Document ID
PG338
Release Date
2022-06-24
Version
4.0 简体中文

Vitis™ 嵌入式软件开发流程可通过以下两种方法来生成核:

  1. GUI 流程
  2. 命令流程

鉴于命令流程灵活易用,推荐使用。如果要使用 GUI 流程,请使用位于以下位置的 prj/Vitis#6-gui-flow 流程:https://china.xilinx.com/bin/public/openDownload?filename=DPUCZDX8G.tar.gz

DPUCZDX8G 的构建进程如下图所示:
图 1. DPUCZDX8G 的构建进程

以下定义描述了使用 DPUCZDX8G IP 搭配 Vitis 库的命令流程和进程:

Makefile 和其它脚本
每个 DPUCZDX8G 内核均独立编译为单个赛灵思对象 (.xo) 文件。此内核是使用 package_xo 实用工具来编译的。Vitis IDE 中的 RTL Kernel Wizard 可用于简化此进程。.xo 文件与硬件平台 (shell) 相链接即可用于创建 FPGA 二进制文件 (.xclbin)。v++ 编译器会自动使用 Vivado® Design Suite 工具构建内核,以供在 FPGA 平台上运行。

Makefile 和其它脚本可在 Vitis DPU TRD 中找到。

配置 DPUCZDX8G 参数
您可修改 Vitis-AI/DPU-TRD/prj/Vitis/dpu_conf.vh 文件以配置 DPU 参数。请参阅 产品规格,以了解有关 DPU 参数的详细信息。
架构
选择下列任一硬件架构:B512、B800、B1024、B1600、B2304、B3136 和 B4096。对于 B4096,定义如下:
`define B4096
UltraRAM 数量
修改 dpu_config.vh 文件以设置数量。启用 `define URAM_ENABLE`define URAM_DISABLE

启用 UltraRAM 时,请设置下列参数:

  • 'define def_UBANK_IMG_N 5
  • 'define def_UBANK_WGT_N 17
  • 'define def_UBANK_BIAS 1

下表列出了为不同架构推荐的 UltraRAM 数量。您也可以根据整个工程的资源使用情况来调整数量。

表 1. 推荐的 UltraRAM 数量
  B512 B800 B1024 B1152 B1600 B2304 B3136 B4096
U_BANK_IMG 2 2 4 2 4 4 4 5
U_BANK_WGT 9 11 9 13 11 13 15 17
U_BANK_BIAS 1 1 1 1 1 1 1 1
RAM 用量

RAM 用量高 - `define RAM_USAGE_HIGH

RAM 用量低 - `define RAM_USAGE_LOW

通道增广

启用 - `define CHANNEL_AUGMENTATION_ENABLE

禁用 - `define CHANNEL_AUGMENTATION_DISABLE

ALU 并行
“ALU Parallel”(ALU 并行)设置包含下列 5 个选项:
  • ALU_PARALLEL_DEFAULT
  • ALU_PARALLEL_1
  • ALU_PARALLEL_2
  • ALU_PARALLEL_4
  • ALU_PARALLEL_8

ALU_PARALLEL_DEFALUT 值为 PP/2。

卷积 RELU 类型
RELU 类型包含下列 2 个选项:
  • CONV_RELU_RELU6
  • CONV_RELU_LEAKYRELU_RELU6
如要使用卷积的 RELU、Leaky ReLU 和 ReLU6,请按如下方式定义:
`define CONV_RELU_LEAKYRELU_RELU6
ALU RELU 类型
RELU 类型包含下列 2 个选项:
  • ALU_RELU_RELU6
  • ALU_RELU_LEAKYRELU_RELU6
如要使用 ALU 的 RELU、Leaky ReLU 和 ReLU6,请按如下方式定义:
`define ALU_RELU_LEAKYRELU_RELU6
DSP 用量

高 - `define DSP48_USAGE_HIGH

低 - `define DSP48_USAGE_LOW

低功耗模式

启用 - `define LOWPOWER_ENABLE

禁用 - `define LOWPOWER_DISABLE

器件配置

支持 Zynq UltraScale+ MPSoC - `define MPSOC

设置 DPUCZDX8G 数量
默认情况下,核的数量设为 1。添加 [connectivity] 属性即可配置 DPU 数量,如下所示:
[connectivity]
nk=dpu_xrt_top:2

该工程将集成 2 个 DPU。

Softmax
Softmax IP 是一个独立内核。用户可根据自己的应用来选择是否集成 Softmax IP。请参阅 Vitis DPU TRD 流程,了解详细方法。
指定端口连接方式
在系统中为 DPU 指定与各端口的连接方式。添加 [connectivity] 属性即可配置 DPUCZDX8G 端口。
以下命令可用于检查平台的端口:
% platforminfo -p zcu102_base/zcu102_base.xpfm
图 2. 平台信息

如果平台没有足够端口可用于连接到 DPUCZDX8G 的所有端口,则会共享这些端口。

添加 [connectivity] 属性即可指定 DPUCZDX8G 端口,如下所示:

[connectivity]
sp=dpu_xrt_top_1.M_AXI_GP0:HP0
sp=dpu_xrt_top_1.M_AXI_HP0:HP1
sp=dpu_xrt_top_1.M_AXI_HP2:HP2
"

工程可能存在时序问题。您可添加 [vivado] property 来配置 Vivado 实现策略。

[vivado]
prop=run.impl_1.strategy=Performance_Explore

Vivado 实现步骤使用的是 Performance_Explore 策略。