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

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

3天内不再提示

怎么在Vitis加速设计中为Kernel创建面积约束

XILINX开发者社区 来源:XILINX开发者社区 作者:Hong Han 2021-06-18 10:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文来自赛灵思高级产品应用工程师 Hong Han

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

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 文件

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

在这个视图可以看到平台已经为动态区域在各个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所属的中心区域

《1》。 在Vivado的Netlist View中选中Kernel 模块

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

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

《3》。 点击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]

《4》。 再看Kernel 模块的Pblock属性,已经变为pblock_krnl_vadd_1

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

(在这里保存到kernel_pblock.tcl)

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

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

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

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

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

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

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

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

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

编辑:jq

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

    关注

    73

    文章

    2209

    浏览量

    132235
  • TCL
    TCL
    +关注

    关注

    11

    文章

    1819

    浏览量

    91975
  • DFx
    DFx
    +关注

    关注

    0

    文章

    36

    浏览量

    11185

原文标题:开发者分享 | 如何在Vitis加速设计中为Kernel创建面积约束

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何使用AMD Vitis硬件环功能运行Vitis子系统设计

    到目前为止,本文关于 AMD Versal AIE 验证和 AMD Vitis 新的验证功能的研究,所有内容都基于仿真完成。
    的头像 发表于 04-02 10:29 7950次阅读
    如何使用AMD <b class='flag-5'>Vitis</b>硬件<b class='flag-5'>在</b>环功能运行<b class='flag-5'>Vitis</b>子系统设计

    电压放大器主动约束层阻尼板研究测试的应用

    主动约束层阻尼结构采用压电或其他智能材料取代经典约束层阻尼结构约束层,并通过引入主动控制系统,进一步增强约束阻尼层对振动能量的耗散能力。
    的头像 发表于 03-09 14:33 227次阅读
    电压放大器<b class='flag-5'>在</b>主动<b class='flag-5'>约束</b>层阻尼板研究测试<b class='flag-5'>中</b>的应用

    Vivado时序约束invert参数的作用和应用场景

    Vivado的时序约束,-invert是用于控制信号极性的特殊参数,应用于时钟约束(Clock Constraints)和延迟约束(De
    的头像 发表于 02-09 13:49 524次阅读
    Vivado时序<b class='flag-5'>约束</b><b class='flag-5'>中</b>invert参数的作用和应用场景

    输入引脚时钟约束_Xilinx FPGA编程技巧-常用时序约束详解

    基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三种路径以及异常路径: 输入路径(Input Path),使用输入约束 寄存器到寄存器路径
    发表于 01-16 08:19

    光谱成像技术作物面积统计的应用

    、受天气影响大、细节识别能力有限等痛点。尤其作物生长早期、品种混杂区域或地形复杂地区,传统手段难以实现快速、精准、大面积的动态监测。 光谱成像技术的出现,作物面积统计提供了革命性的
    的头像 发表于 12-05 10:44 495次阅读
    光谱成像技术<b class='flag-5'>在</b>作物<b class='flag-5'>面积</b>统计<b class='flag-5'>中</b>的应用

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

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

    蜂鸟e203移植要从哪些方面入手,bsp哪里修改引脚对应关系,约束文件?

    蜂鸟e203移植要从哪些方面入手,bsp哪里修改引脚对应关系,约束文件,跪求大神
    发表于 11-10 07:11

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

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

    AMD Vitis AI 5.1测试版发布

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

    技术资讯 I Allegro 设计的走线约束设计

    本文要点在进行时序等长布线操作的时候,布线操作的时候不管你是走蛇形线还是走折线,约束管理器会自动帮你计算长度、标偏差,通过精确控制走线长度,来实现信号的时序匹配。约束设计就是一套精准的导航系统
    的头像 发表于 09-05 15:19 1678次阅读
    技术资讯 I Allegro 设计<b class='flag-5'>中</b>的走线<b class='flag-5'>约束</b>设计

    如何在AMD Vitis Unified 2024.2连接到QEMU

    本篇文章我们将学习如何在 AMD Vitis Unified 2024.2 连接到 QEMU。 这是本系列的第 2 篇博文。要了解如何设置和使用 QEMU + 协同仿真,请参阅开发者分享|
    的头像 发表于 08-06 17:24 2107次阅读
    如何在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 1766次阅读
    如何在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 Unifie
    的头像 发表于 06-20 10:06 2713次阅读
    使用AMD <b class='flag-5'>Vitis</b> Unified IDE<b class='flag-5'>创建</b>HLS组件

    高压放大器粒子加速器研究的应用

    粒子加速器是现代科学研究不可或缺的大型实验装置,广泛应用于物理学、化学、材料科学、生物学等多个领域。其核心原理是利用电场和磁场对带电粒子进行加速约束,使粒子达到极高的能量,从而为研
    的头像 发表于 06-19 17:09 754次阅读
    高压放大器<b class='flag-5'>在</b>粒子<b class='flag-5'>加速</b>器研究<b class='flag-5'>中</b>的应用

    如何使用AMD Vitis HLS创建HLS IP

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