0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Vitis加速设计中为Kernel创建面积约束

邓长生 来源:邓长生 作者:邓长生 2022-08-02 09:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Alveo系列开发板上的平台其实是一个DFX设计的静态部分,在Vitis 统一软件平台中使用Alveo系列开发板设计加速Kernel, 最终这些Kernel的逻辑会在分布在DFX设计的动态区域。

本篇将介绍如何为Kernel的逻辑做floorplan(画Pblock),人为控制Kernel逻辑的布局。

我们以经典Example design“Vector Addition” 为例:

1. 打开Vitis 2020.2,创建新的 Application Project

File -> New -> Application project

2. 选择xilinx_u200_qdma_201910_1平台 (本篇讨论的方法不局限于某个具体平台)

3. 选择打开Example Design "Vector Addition"

4. 对Hardware Flow 在Link阶段设置 "-R2",然后Build

此处report level 选择-R2:VPL(Vitis Platform link) 过程输出更多中间文件, 后续我们会用到画Kernel Pblock所需要的opt.dcp

pYYBAGGYHrqAfItSAADnwMZ_bJo435.png

5. 不用等到生成xclbin文件,VPL完成opt_design步骤之后我们就能看到XX_opt.dcp 文件.

XX_opt .dcp 所在目录及文件名:

vitis_pblock_u200/vadd_test_system_hw_link/Hardware/binary_container_1.build/link/vivado/vpl/prj/prj.runs/impl_1 

pfm_top_wrapper_opt.dcp

6. 把这个XX_opt.dcp拷贝到另外的目录,并用Vivado打开这个dcp 文件

pYYBAGGYHruAbYjgAABXk7VZLSg742.png

7. 查看已有的Pblock。主菜单 Window -> Physical Constraints

poYBAGGYHryAQmyOAAChXbBCUpw194.png


在这个视图可以看到平台已经为动态区域在各个SLR中设置了相应的Pblock, 而且需要注意的是,设计中已有的Pblock是有层级关系的

例如:pblock_dynamic_region 包含三个下级pblock:

pblock_dynamic_SLR0,

pblock_dynamic_SLR1,

pblock_dynamic_SLR2,

提醒:不同平台SLR的数目也可能是不同的. 不同平台中自带pblock的名字有差异是正常的. 需要用户自己观察.

为Kernel模块生成的Pblock应该是pblock_dynamic_SLR0 这一级Pblock 的子模块, 工具支持把同一个Kernel的不同部分放置到多个SLR中,用户需要保证跨SLR路径的时序.

8. 为Kernel模块画Pblock

在这里尝试把Kernel 放置在pblock_dynamic_SLR0所属的中心区域

. 在Vivado的Netlist View中选中Kernel 模块

例子中的模块名是 pfm_top_i/dynamic_region/krnl_vadd_1

. 可以在Cells properties 窗口看到这个模块当前所属的Pblock是pblock_dynamic_region

poYBAGGYHr6AIziMAACysjYj0-M030.png

. 点击Device 视图中的"Draw Pblock" 按钮, 在Device视图上原有pblock_dynamic_SLR0的范围内画一个方框,新画的Pblock所覆盖面积要被原Pblock完全包含. 画完之后还可以选中Pblock微调Pblock的边界,同时为了不影响原来Pblock的结构,在TCL CONSOLE中用以下命令把新Pblock的Parent Pblock设置成pblock_dynamic_SLR0:

set_property PARENT pblock_dynamic_SLR0 [get_pblocks pblock_krnl_vadd_1]

. 再看Kernel 模块的Pblock属性,已经变为pblock_krnl_vadd_1

poYBAGGYHr-AHfvDAADrNWsvQGQ739.png

在TCL CONSOLE中会打印出了画pblock相应的约束,我们可以将这些约束拷贝到一个新的tcl文件中保存.

(在这里保存到kernel_pblock.tcl)

pYYBAGGYHsCARyabAAAxDcQd3OM287.png

看下更新的Pblock结构,新生成的pblock_krnl_vadd_1 是pblock_dynamic_SLR0的Child Pblock

poYBAGGYHsGAOkNOAACQ0GpIHoc098.png

继续在TCL CONSOLE执行 place_design 命令完成布局

理论上这一步可以跳过,如果你确信你画的Pblock没有问题的话。

完成place_design之后,可以观察一下Kernel 的资源在Device 上的实际分布情况

pYYBAGGYHsKAVCzaAADZaA1Fa9I356.png

可以看到Kernel的逻辑全部都分布在刚才所画的Pblock 区域内

poYBAGGYHsSAGaCAAAGp_Tb6WxI859.png

pYYBAGGYHsWAZntAAAMwSamYIG4356.png

9. 在Vitis的link阶段做以下设置,使之前保存的画Pblock的命令在VPL(Vitis Platform link) 的place_design步骤执行之前生效

--vivado.prop run.impl_1.STEPS.PLACE_DESIGN.TCL.PRE=XX/kernel_pblock.tcl

pYYBAGGYHseAJnhHAADl-uS05aY930.png

10. 重新build Vitis 的Hardware flow, 之前加入的命令就会生效。

总结: 这就是一个简单的为Kernel逻辑创建面积约束(Pblock)的过程, 实际用户也可以为Kernel的子模块创建Pblock,这方面工具没有限制。


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    6122

    浏览量

    113153
  • Kernel
    +关注

    关注

    0

    文章

    49

    浏览量

    11986
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    何在AMD Vitis Unified IDE中使用系统设备树

    您将在这篇博客中了解系统设备树 (SDT) 以及如何在 AMD Vitis Unified IDE 中使用 SDT 维护来自 XSA 的硬件元数据。本文还讲述了如何对 SDT 进行操作,以便在 Vitis Unified IDE
    的头像 发表于 11-18 11:13 2798次阅读
    如<b class='flag-5'>何在</b>AMD <b class='flag-5'>Vitis</b> Unified IDE中使用系统设备树

    AMD Vitis AI 5.1测试版现已开放下载

    AMD Vitis AI 5.1全新发布——新增了对 AMD Versal AI Edge 系列神经网络处理单元( NPU )的支持。Vitis AI 包含优化的 NPU IP、模型编译工具和部署 API,可在嵌入式平台上实现可扩展的高性能推理。
    的头像 发表于 11-08 09:24 972次阅读

    何在VS code配置Zephyr集成开发环境

    上一篇文章介绍了如何在VS code中使用瑞萨官方插件RA芯片创建项目与项目调试,相信大家对RA在VS code的开发有了基础的了解。
    的头像 发表于 11-05 14:46 1050次阅读
    如<b class='flag-5'>何在</b>VS code<b class='flag-5'>中</b>配置Zephyr集成开发环境

    AMD Vitis AI 5.1测试版发布

    AMD Vitis AI 5.1全新发布——新增了对 AMD Versal AI Edge 系列神经网络处理单元 (NPU) 的支持。Vitis AI 包含优化的 NPU IP、模型编译工具和部署 API,可在嵌入式平台上实现可扩展的高性能推理。
    的头像 发表于 10-31 12:46 481次阅读

    何在应用程序调试期间分析栈和堆使用情况

    ,并在 Unified IDE 仍可使用。本文涵盖了如何在 Vitis 中使用分析工具在应用程序调试期间对栈和堆进行监控。
    的头像 发表于 10-24 16:54 577次阅读
    如<b class='flag-5'>何在</b>应用程序调试期间分析栈和堆使用情况

    何在RT-Thread上创建一个GD32F470工程?

    何在RT-Thread上创建一个GD32F470工程
    发表于 09-23 06:09

    何在AMD Vitis Unified 2024.2连接到QEMU

    在本篇文章我们将学习如何在 AMD Vitis Unified 2024.2 连接到 QEMU。 这是本系列的第 2 篇博文。要了解如何设置和使用 QEMU + 协同仿真,请参阅开发者分享|在 AMD Versal 自适应 S
    的头像 发表于 08-06 17:24 1481次阅读
    如<b class='flag-5'>何在</b>AMD <b class='flag-5'>Vitis</b> Unified 2024.2<b class='flag-5'>中</b>连接到QEMU

    何在Unified IDE创建视觉库HLS组件

    组件开始,该组件可以导出 XO 文件用于 Vitis 系统工程;这与“自上而下的流程”相反,后者从 Vitis 工程开始,然后将 HLS 组件导入该工程。我们将创建视觉库示例“re
    的头像 发表于 07-02 10:55 1118次阅读
    如<b class='flag-5'>何在</b>Unified IDE<b class='flag-5'>中</b><b class='flag-5'>创建</b>视觉库HLS组件

    使用AMD Vitis Unified IDE创建HLS组件

    这篇文章在开发者分享|AMD Vitis HLS 系列 1 - AMD Vivado IP 流程(Vitis 传统 IDE) 的基础上撰写,但使用的是 AMD Vitis Unified IDE,而不是之前传统版本的
    的头像 发表于 06-20 10:06 1908次阅读
    使用AMD <b class='flag-5'>Vitis</b> Unified IDE<b class='flag-5'>创建</b>HLS组件

    如何使用AMD Vitis HLS创建HLS IP

    本文逐步演示了如何使用 AMD Vitis HLS 来创建一个 HLS IP,通过 AXI4 接口从存储器读取数据、执行简单的数学运算,然后将数据写回存储器。接着会在 AMD Vivado Design Suite 设计中使用此 HLS IP,并使用嵌入式
    的头像 发表于 06-13 09:50 1271次阅读
    如何使用AMD <b class='flag-5'>Vitis</b> HLS<b class='flag-5'>创建</b>HLS IP

    西门子再收购EDA公司 西门子宣布收购Excellicon公司 时序约束工具开发商

    精彩看点 此次收购将帮助系统级芯片 (SoC) 设计人员通过经市场检验的时序约束管理能力来加速设计,并提高功能约束和结构约束的正确性   西门子宣布 收购 Excellicon 公司
    的头像 发表于 05-20 19:04 1268次阅读
    西门子再收购EDA公司  西门子宣布收购Excellicon公司  时序<b class='flag-5'>约束</b>工具开发商

    一文详解Vivado时序约束

    Vivado的时序约束是保存在xdc文件,添加或创建设计的工程源文件后,需要创建xdc文件设置时序约束。时序
    的头像 发表于 03-24 09:44 4379次阅读
    一文详解Vivado时序<b class='flag-5'>约束</b>

    使用AMD Vitis进行嵌入式设计开发用户指南

    Zynq MPSoC 和 AMD Alveo 数据中心加速器卡)目标的异构嵌入式应用。 Vitis 工具包括: C++ 编译器、库和本征函数,适用于 AI 引擎和可编程逻辑( PL ) 适用于 Arm
    的头像 发表于 01-08 09:33 2155次阅读
    使用AMD <b class='flag-5'>Vitis</b>进行嵌入式设计开发用户指南

    浅谈多目标优化约束条件下充电设施有序充电控制策略

    随着电动汽车的普及,充电设施的需求日益增长,如何在多目标优化约束下实现充电设施的有序充电成为亟待解决的问题。新能源汽车的快速发展清洁能源和可持续交通带来了新机遇,但也引出了许多问题。其中,充电设施的有序充电控制策略在多目标优化
    的头像 发表于 01-07 13:17 820次阅读
    浅谈多目标优化<b class='flag-5'>约束</b>条件下充电设施有序充电控制策略

    瑞芯微RK3588开发板Android修改kernel logo

    /kernel-5.10/logo_kernel.bmp 下的 logol_kernel.bmp 即可。作者替换后 logo 显示效果如下图所示: 更多内容可以了解迅RK3588开
    发表于 12-24 10:56