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

    文章

    4874

    浏览量

    96972
  • Kernel
    +关注

    关注

    0

    文章

    48

    浏览量

    11118
收藏 人收藏

    评论

    相关推荐

    何在TMS320C6727 DSP上创建基于延迟的音频效果

    电子发烧友网站提供《如何在TMS320C6727 DSP上创建基于延迟的音频效果.pdf》资料免费下载
    发表于 10-16 10:35 0次下载
    如<b class='flag-5'>何在</b>TMS320C6727 DSP上<b class='flag-5'>创建</b>基于延迟的音频效果

    何在SQL创建触发器

    的业务逻辑,以及执行审计和记录更改历史等功能。下面,我将详细解释如何在SQL创建触发器,并附带示例代码。
    的头像 发表于 07-18 16:01 1266次阅读

    何在Draftsman创建PCB制造图纸

    在制作PCB的过程,绘制面板制造图纸是不可或缺的一步。单个PCB的制造图纸只显示单个PCB的钻孔和板特征,但这些需要合并到整个面板的一张图纸。根据不同公司或制造商的具体需求,一些设计团队需要接手创建面板图纸,包括指定拆板方法
    的头像 发表于 07-16 09:30 478次阅读
    如<b class='flag-5'>何在</b>Draftsman<b class='flag-5'>中</b><b class='flag-5'>创建</b>PCB制造图纸

    linux kernel通过修改链接脚本lds文件,如何在esp32的linker.lf文件实现?

    linux kernel通过修改链接脚本lds文件实现,请问如何在esp32的linker.lf文件实现? linux kernel实现过程: 链接脚本: . = ALIGN(4
    发表于 06-26 06:19

    AMD Vitis™设计工具的Libraries新功能介绍

    AMD Vitis™ 2023.2 设计工具是 Vitis 设计工具变化较大的一个版本,设计流程和界面都发生了变化。
    的头像 发表于 05-29 09:50 487次阅读
    AMD <b class='flag-5'>Vitis</b>™设计工具<b class='flag-5'>中</b>的Libraries新功能介绍

    在Windows 10上创建并运行AMD Vitis™视觉库示例

    本篇文章将演示创建一个使用 AMD Vitis™ 视觉库的 Vitis HLS 组件的全过程。此处使用的是 Vitis Unified IDE。如果您使用的是旧版 AMD
    的头像 发表于 05-08 14:02 598次阅读
    在Windows 10上<b class='flag-5'>创建</b>并运行AMD <b class='flag-5'>Vitis</b>™视觉库示例

    Vitis2023.2使用之—— updata to Vitis Unified IDE

    上一章聊了一下vitis2023.2怎样使用classic Vitis IDE,这章我们来说一说基于classic Vitis IDE的工程怎么样更新到新版本的Vitis Unifie
    发表于 03-24 17:14

    Vitis2023.2使用之—— classic Vitis IDE

    Vitis 已经更新到2023.2了,新版本相较于旧版本更新了嵌入式平台,新版平台增加了Versal™ AI 引擎 DSP 设计的增强功能,全新的独立 Vitis 嵌入式软件,最新 Vitis 统一
    发表于 03-24 16:15

    机器人运动学的非完整约束与运动模型推导

    机器人运动学的运动学约束是指机器人在运动过程受到的限制,包括位置、姿态、速度和加速度等因素。这些约束会对机器人的自由度产生影响,从而影响
    的头像 发表于 01-18 16:45 1513次阅读
    机器人运动学<b class='flag-5'>中</b>的非完整<b class='flag-5'>约束</b>与运动模型推导

    Vitis AI用户指南

    电子发烧友网站提供《Vitis AI用户指南.pdf》资料免费下载
    发表于 01-03 10:51 1次下载
    <b class='flag-5'>Vitis</b> AI用户指南

    OpenCL多Kernel并行计算结果讨论分析

    模拟加速核同一时刻开始运行的情况。注意到0,2和1,3将数据从DDR运送到Host的开始时间不同。 更改后,测试数据512MB,Kernel的处理时间32.2ms,相比于单核运行提
    发表于 12-31 21:31

    Vitis 统一软件平台文档

    AMD Vitis 软件平台是一款开发环境,主要用于开发包括 FPGA 架构、Arm 处理器子系统和 AI 引擎在内的设计。Vitis 工具与 AMD Vivado ML 设计套件相结合,可为
    的头像 发表于 12-20 10:00 472次阅读
    <b class='flag-5'>Vitis</b> 统一软件平台文档

    研讨会:利用编译器指令提升AMD Vitis™ HLS 设计性能

    /C++ 代码 AMD 设备上可编程逻辑的 RTL 代码加速 IP 创建。 在 Vitis HLS ,优化指令脱颖而出成为最强大的工具之
    的头像 发表于 12-05 09:10 481次阅读
    研讨会:利用编译器指令提升AMD <b class='flag-5'>Vitis</b>™ HLS 设计性能

    kernel到android核心启动过程

    总结一个图:kernel 到android核心启动过程 kernel镜像执行跳转到start_kernel开始执行,在rest_init会创建两个k
    的头像 发表于 12-04 16:59 833次阅读
    <b class='flag-5'>kernel</b>到android核心启动过程

    kernel日志写入logd介绍

    kernel日志写入logd介绍 通过logcat命令获取kernel日志比较特殊,故作为一个例子进行梳理。 2.3.1 整体流程 2.3.2 命令打印kernel日志 通过logcat -b
    的头像 发表于 11-23 17:11 580次阅读
    <b class='flag-5'>kernel</b>日志写入logd介绍