一文看懂AMD Vivado2024.1 中 “AMD VersalCPM5 QDMA Gen4x8 ST Only Performance Design” CED 示例。
本篇博文演示了在AMD Vivado Design Suite 2024.1 中生成 CPM5_QDMA_Gen4x8_ST_Only_Performance_Design 并使用为 QDMA 提供的驱动程序来运行性能测试的步骤。这是 AMD Versal 自适应 SoC CPM QDMA 端点 (EP) 设计中可用的预设之一。
对于 PL PCIe IP,用户可以使用“Open Example Design”选项来生成示例设计。
此示例设计对于 CPM5 PCIe 不适用;因此改为通过 AMD CED Store GitHub 仓库提供示例设计。如需了解有关 AMD CED Store 的更多详细信息,请访问以下链接:
https://github.com/Xilinx/XilinxCEDStore
注释:性能数据取决于硬件和软件(系统调谐、使用的队列数量等)。如果所得到的性能数据与您的预期不符,请联系您的销售代表或 AMD 技术支持。
生成 Versal 自适应 SoC CPM5 Gen4x8 QDMA 端点设计
步骤 1:启动 Vivado,然后转至“Tools -> Vivado Store”。

步骤 2:下载最新版本的目录:
选择“Example Designs-> PCIe -> Versal CPM QDMA EP Design”,然后单击“Update”。


步骤 3:从“Quick Start”页面中选择“Open Example Project”。

步骤 4:如下截屏所示,访问 Versal CPM QDMA 端点设计:

步骤 5:根据所选开发板会自动选择“CPM_Config”,针对 VCK190 会选中 CPM4,针对 VPK120 则选中 CPM5。选择 Versal VPK120 评估平台。

步骤 6:对于 CPM5_Preset,请选择
CPM5_QDMA_Gen4x8_ST_Only_Performance_Design。
这是含“Streaming”选项的 Versal CPM5 Gen4x8 QDMA 端点设计。其中已启用 4PF、240VF 和 SRIOV。

步骤 7:复查“Project Summary”,确认所选部件和产品家族正确。

示例设计架构
在其他正常工作的示例设计中,用户逻辑功能要求在用户逻辑专用寄存器中配置包数、包长度和队列 ID,并且需要通过配置特定寄存器来触发包生成。
如需了解更多详情,请参阅本文:运行 Versal 自适应 SoC CPM5 PCIE Gen4x8 QDMA CED 示例设计 :
https://adaptivesupport.amd.com/s/article/000034687?language=zh_CN
ST 性能参考设计包含仅限 AXI4-Stream 的包生成器(适用于 C2H 方向),以及同时适用于 C2H 方向和 H2C 方向的性能测量工具。当存在可用描述符时,该参考设计会生成已知的数据模式(时间戳),并在 C2H 方向上发送用户指定的包长度。此数据模式可由 dma-perf 应用环回到 H2C 方向,并进行性能测量。
以下截屏显示了 CED 的“Sources”层级。cpm_pcie_qdma_ep_wrapper 模块框图包括 cpm_pcie_bridge_ep 块、用于 AXI4-Stream 模式生成器和检查器逻辑的用户控制逻辑,以及实现 C2H 和 H2C 性能计数器逻辑的 axi_st_module。

以下是“cpm_pcie_qdma_ep.bd”的模块框图:

CPM5 配置
生成的 Versal CPM5 QDMA Gen4x8 ST Only Performance Design 配置如下:
Gen4x8 DMA 模式
PCIE 控制器 1 配置为含 AXI4-Stream 接口的 QDMA
启用 4PF、240VF 和 SRIOV
内部模式
注释:在此 CED 的 2023.2 及更低版本中,VF 的地址映射存在已知问题。
这在 2024.1 版中已得到修复。如果使用 2023.2 或更低版本,需要使用下图所示的数值更新“PCIe : BARs”选项卡和“SRIOV VF BARs”选项卡,以便在 VF 器件上执行 C2H 和 H2C 传输事务。









PS PMC 配置


硬件测试
更新 CPM5 IP 配置(如上所述)后,保存设计,然后单击“Generate Device Image”。
将 VPK120 评估板连接到主机 PC。
使用 CED 生成的 PDI 文件对 FPGA 进行烧录。
重新启动主机 PC。
使用“lspci”命令检查端点器件检测情况。

QDMA 驱动程序安装
运行以下命令。如需了解更多详情,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/build.html

使用 dma-ctl 列出系统中可用的功能,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmactl.html#device-management-commands
dma-ctl dev list

SOLUTIPF 上的传输事务
队列分配

如需了解更多信息,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/userguide.html#allocate-the-queues-to-a-function

为 C2H 串流模式测试添加和启动队列
如需了解更多信息,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmactl.html#add-a-queue
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmactl.html#start-a-queue


运行不同传输大小的串流模式 C2H(从设备发出 DMA )测试
如需了解更多信息,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dma_from_device.html
与 CPM QDMA 端点功能测试设计不同,用户无需配置任何寄存器即可初始化数据传输。CED 的 `user_control` 模块会在内部产生报文。

为 H2C 串流模式测试添加和启动队列
如需了解更多信息,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmactl.html#add-a-queue
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmactl.html#start-a-queue


运行不同传输大小的串流模式 H2C(DMA 到设备)测试
如需了解更多信息,请参阅 :
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dma_to_device.html

运行 dma-perf 应用
“dma-perf”是一款定制工具,用于收集单向和双向流量的性能指标。
可使用“fio”等标准 I/O 工具,通过字符设备接口执行 I/O 操作。但是,大多数工具仅限于每次发送或接收 1 个包,并等待该包处理完成,因此无法使驱动程序或硬件保持足够繁忙以进行性能测量。尽管 fio 也支持异步接口,但它不会在并行轮询完成的同时持续提交 I/O 请求。
“dma-perf”工具会利用 libaio 库提供的异步功能。通过使用 libaio,应用程序可向驱动程序提交 I/O 请求,驱动程序会立即将控制权返回给调用方(即,非阻塞)。完成通知是单独发送的,因此应用程序随后即可轮询完成情况,并在收到完成通知后释放缓冲区。
如需了解有关 dma-perf 工具的更多信息,请参阅 QDMA Linux 内核参考驱动程序用户指南,本指南托管于:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/dmaperf.html
用于串流模式测试的 dma-perf 配置文件包含在 Linux 参考内核驱动程序源文件内,这些源文件托管于https://github.com/Xilinx/dma_ip_drivers的 QDMA/linux-kernel/apps/dma-perf/dmaperf_config 目录下:
C2H 单向:st-c2h-pfetch1.zip
H2C 单向:st-h2c.zip
C2H 和 H2C 双向:st-bi.zip
测试用例 - 1:bi_st_1_1_pfetch-cmptsz1_4096.txt
作为 dma-perf 工具输入的配置文件为测试设置了以下标志:
队列的模式和方向 - 串流,双向
PCI 总线:61,器件 - 00,功能 - 0 (PF),每个方向单个队列 (q_range) - 0 : 0
包数 - 64,每个包大小 - 4096 字节

使用以下命令搭配 bi_st_1_1_pfetch-cmptsz1_4096.txt 配置执行 dma-perf 测试:

qdma-perf 工具负责:
以 H2C 方向的 idx 0 添加和启动 1 个队列
以 C2H 方向的 idx 0 添加和启动 1 个队列
C2H 和 H2C 数据传输
停止并删除已添加的 C2H 和 H2C 队列
收集并显示写入 (H2C) 和读取 (C2H) 性能结果
测试用例 - 2:bi_st_1_4_pfetch-cmptsz1_4096.txt
作为 dma-perf 工具输入的配置文件为测试设置了以下标志:
队列的模式和方向 - 串流,双向
PCI 总线:61,器件 - 00,功能 - 0 (PF),每个方向 4 个队列 (q_range) - 0 : 3
包数 - 64,每个包大小 - 4096 字节

使用以下命令搭配 bi_st_1_4_pfetch-cmptsz1_4096.txt 配置执行 dma-perf 测试:

qdma-perf 工具负责:
以 H2C 方向的 idx 0-3 添加和启动 4 个队列
以 C2H 方向的 idx 0-3 添加和启动 4 个队列
C2H 和 H2C 数据传输
停止并删除已添加的 C2H 和 H2C 队列
收集并显示写入 (H2C) 和读取 (C2H) 性能结果
VF 上的传输事务
启用 VF 器件
以下命令显示了为 1 个 PF 器件 (BDF: 61:00.0) 启用 2 个 VF 的操作:

以下命令列出了这些 PF 器件和 VF 器件:

如需了解更多信息,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/userguide.html#instantiate-the-virtual-functions

lspci 命令列出了启用的 PF 器件和 VF 器件,如下所示:

预留 VF 的队列

“dma-ctl dev list”给出了预留的队列的数量。
如需了解更多信息,请参阅:
https://xilinx.github.io/dma_ip_drivers/master/QDMA/linux-kernel/html/userguide.html#reserve-the-queues-for-vfs

在 VF 上添加和启动双向队列以执行 C2H 和 H2C 串流模式测试


运行包大小为 64 字节的 C2H 和 H2C 测试

在 VF 器件上运行 dma-perf 应用
作为 dma-perf 工具输入的配置文件 vf_bi_st_1_1_pfetch-cmptsz1_4096.txt 为测试设置了以下标志:
队列的模式和方向 - 串流,双向
PCI 总线:61,器件 - 02,功能 - 0 (VF),每个方向单个队列 (q_range) - 0 : 0
vf_perf = 1
包数 - 64,每个包大小 - 4096 字节

使用以下命令搭配 vf_bi_st_1_1_pfetch-cmptsz1_4096.txt 配置执行 dma-perf 测试:

qdma-perf 工具负责:
以 H2C 方向的 idx 0 添加和启动 1 个队列
以 C2H 方向的 idx 0 添加和启动 1 个队列
C2H 和 H2C 数据传输
停止并删除已添加的 C2H 和 H2C 队列
收集并显示写入 (H2C) 和读取 (C2H) 性能结果
AMD 自适应 SoC 及 FPGA 中文技术支持社区
-
amd
+关注
关注
25文章
5703浏览量
140386 -
soc
+关注
关注
40文章
4619浏览量
230079 -
驱动程序
+关注
关注
19文章
872浏览量
50713 -
Vivado
+关注
关注
19文章
860浏览量
71383
原文标题:开发者分享 | AMD Vivado™ 2024.1 中 “AMD Versal™ CPM5 QDMA Gen4x8 ST Only Performance Design” CED 示例
文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
基于AMD Versal器件实现PCIe5 DMA功能
【AMD】Physical Design Engineer
AMD热招 Physical Design Engineer
【AMD】Physical Design Engineer
AMD热招 Physical Design Engineer
【AMD社招】Physical Design Engineer
利用设计网关的 IP 内核在 Xilinx VCK190 评估套件上加速人工智能应用
PCIe Gen 4/5协议故障注入
AMD Versal™ Adaptive SoC CPM PCIE PIO EP设计CED示例
AMD Versal自适应SoC CPM5 QDMA的Tandem PCIe启动流程介绍
AMD推出第二代Versal Premium系列
AMD推出了Versal Premium Series Gen 2,这是业界第一个支持CXL 3.1和PCIe Gen6的FPGA平台。
AMD Versal CPM5 QDMA Gen4x8 ST Only Performance Design CED示例
评论