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
    +关注

    关注

    70

    文章

    2119

    浏览量

    119368
  • TCL
    TCL
    +关注

    关注

    10

    文章

    1657

    浏览量

    87932
  • DFx
    DFx
    +关注

    关注

    0

    文章

    35

    浏览量

    10367

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

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

收藏 人收藏

    评论

    相关推荐

    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

    AMD官网下载全系统安装包,或下载网页版安装包,安装好vitis全套组件。打开vivado建一个测试工程编译好后,tcl命令输入框子输入命令 vitis –classic 即可打开传统的GUI界面
    发表于 03-24 16:15

    kernel到android核心启动过程

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

    Vitis加速库:广泛且性能优化的开源库

    Vitis 统一软件平台包括一组广泛的、性能优化的开源库,这些库提供了即开即用的加速功能,并且对现有应用实现最小化代码更改或零更改。
    的头像 发表于 10-30 17:23 329次阅读
    <b class='flag-5'>Vitis</b><b class='flag-5'>加速</b>库:广泛且性能优化的开源库

    【KV260视觉入门套件试用体验】KV260系列之Petalinux镜像+Resnet 50探索

    的工具、功能强大的库、多元化的模型和直观的设计示例。Vitis AI 以高效和易用性核心,使其得以 AMD SoC 和自适应 SoC 上成功解锁 AI 加速的全部潜能。
    发表于 10-16 04:22

    【KV260视觉入门套件试用体验】Vitis AI 构建开发环境,并使用inspector检查模型

    高),所以我直接使用CPU版本的Vitis AI docker来进行模型的量化、编译和部署。Vitis AI docker 是一个预先配置好的 Vitis AI 环境,它可以让我一个
    发表于 10-14 15:34

    【KV260视觉入门套件试用体验】硬件加速之—使用PL加速矩阵乘法运算(Vitis HLS)

    ,基于FPGA的矩阵乘法加速器,运算效率可以比通用CPU提高一个数量级以上,非常适合大规模科学计算和深度学习应用。 本文主旨 通过Xilinx Vitis HLS设计一个高效矩阵乘法kernel
    发表于 10-13 20:11

    【KV260视觉入门套件试用体验】Vitis-AI加速的YOLOX视频目标检测示例体验和原理解析

    本文将介绍如何使用Vitis-AI加速YOLOX模型实现视频的目标检测,并对相关源码进行解读。由于演示的示例程序源码是Vitis-AI开源项目提供的,本文演示之前会介绍所需要的准备工
    发表于 10-06 23:32

    Vitis统一软件平台文档——应用程序加速开发

    电子发烧友网站提供《Vitis统一软件平台文档——应用程序加速开发.pdf》资料免费下载
    发表于 09-15 11:40 0次下载
    <b class='flag-5'>Vitis</b>统一软件平台文档——应用程序<b class='flag-5'>加速</b>开发

    揭秘Vitis嵌入式加速平台的创建

    电子发烧友网站提供《揭秘Vitis嵌入式加速平台的创建.pdf》资料免费下载
    发表于 09-14 11:05 0次下载
    揭秘<b class='flag-5'>Vitis</b>嵌入式<b class='flag-5'>加速</b>平台的<b class='flag-5'>创建</b>

    【KV260视觉入门套件试用体验】部署DPU镜像并运行Vitis AI图像分类示例程序

    AMD 平台上的 AI 推理。该工具链提供优化的IP、工具、库、模型以及资源,例如示例设计和教程,可在整个开发过程用户提供帮助。它在设计时充分考虑了高效率和易用性, AMD 自适应 SoC
    发表于 09-10 23:01

    【KV260视觉入门套件试用体验】Vitis AI 初次体验

    算法实现计算工作负载加速,适合的应用包括图像/视频分类、语义分段以及目标检测/追踪。DPU 随 Vitis AI专用指令集一起发布,从而促进深度学习网络的有效实现。 KV260套件的DPU
    发表于 09-10 13:15

    【KV260视觉入门套件试用体验】部署vitis-ai环境以及测试demo

    %BD-Vitis-AI-Library 从步骤3下载 vitis-ai-runtime-3.0.0.tar.gz 安装位置/usr/lib 和 /usr/include 这里面包含了所有需要的库。
    发表于 08-27 23:35

    【KV260视觉入门套件试用体验】+02.开发环境安装Vitis/Vivado(zmj)

    CentOS 7 和CentOS 8的操作方式有些差异,需要在配置前注意系统版本,此处以CentOS-7.9例进行说明。 1. 系统软件安装 Vitis需要一些软件或者依赖库,
    发表于 08-27 21:22

    创建约束随机测试目标

    为了实现验证目标,测试用例开发者需要控制测试激励的生成以覆盖特定的场景。测试用例开发者可以用下面这些方法控制测试激励的创建: 添加约束条件来控制单个数据项。 使用UVM sequences来控制多个
    的头像 发表于 06-17 14:06 357次阅读
    <b class='flag-5'>创建</b><b class='flag-5'>约束</b>随机测试目标