Vitis™ 嵌入式软件开发流程可通过以下两种方法来生成核:
- GUI 流程
- 命令流程
鉴于命令流程灵活易用,推荐使用。如果要使用 GUI 流程,请使用位于以下位置的 prj/Vitis#6-gui-flow 流程:https://china.xilinx.com/bin/public/openDownload?filename=DPUCZDX8G.tar.gz。
以下定义描述了使用 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
- Argmax 和 Max
-
启用 -
`define SAVE_ARGMAX_ENABLE
禁用 -
`define SAVE_ARGMAX_DISABLE
- 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
如果平台没有足够端口可用于连接到 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 策略。