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

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

3天内不再提示

如何基于Vitis中把设置信息传递到底层的Vivado

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

扫码添加小助手

加入工程师交流群

在Vitis 统一软件平台中使用v++ -link命令,可以把各种类型Kernel(C, C++, OpenCL C, 以及 RTL)的对象文件(.XO)整合到目标平台中,最终生成器件的二进制文件XCLBIN

在Vitis完成这个过程的底层,实际调用的是Vivado。Vitis会指定默认的Vivado策略来执行综合和实现的步骤。当默认的Vivado策略无法达到预期的时序要求时,我们需要在Vivado中分析时序问题的原因(不在本篇中详细讨论), 并根据时序失败的原因调整Vivado各个步骤的选项。有时我们也需要调整Vivado各个步骤的选项做不同方向的优化。

在Vitis中提供了“--vivado” 选项来精细控制Vivado各个步骤的选项,几乎所有期望加在Vivado中的选项都可以通过这个选项传递给Vivado。以下操作如何选择合适的选项需要对于Vivado的运行机制有一定的了解,对于Vivado不熟悉的用户,建议先阅读UG901以及UG904,两者分别是综合和实现的使用手册

1. 对于应用于Vivado的参数使用选项:

--vivado.param 《object》《parameter》=《value》

举例:

--vivado.param project.writeIntermediateCheckpoints=1

对应Vivado中参数设置的命令:

set_param project.writeIntermediateCheckpoints

这个命令也可以放在Vivado各个阶段的TCL.PRE/TCL.POST所指定的脚本中用--vivado.prop 执行(参考“Vivado工程的属性设置”的内容)

对应configure文件的内容:

[vivado]

param=project.writeIntermediateCheckpoints=1

2. 对于Vivado工程的属性设置:

--vivado.prop 《object_type》。《object_name》。《prop_name》

这里的Object_type是可以是run, fileset, file 或者 project

举例:

v++ --link --vivado.prop run.impl_1.STEPS.PHYS_OPT_DESIGN.IS_ENABLED=true

--vivado.prop run.impl_1.STEPS.PHYS_OPT_DESIGN.ARGS.DIRECTIVE=Explore

--vivado.prop run.impl_1.STEPS.PLACE_DESIGN.TCL.PRE=/…/xxx.tcl

《1》 指定了在Vivado 实现阶段执行PHYS_OPT_DESIGN步骤

(注:Vivado中PHYS_OPT_DESIGN步骤默认并不执行)

《2》 指定了在PHYS_OPT_DESIGN步骤采用的directive 是 Explore

《3》 指定了在Place_design之前需要先执行一个tcl脚本。

对应configure文件的内容:

[vivado]

prop=run.impl_1.steps.phys_opt_design.is_enabled=1

prop=run.impl_1.STEPS.PHYS_OPT_DESIGN.ARGS.DIRECTIVE=Explore

prop=run.impl_1.STEPS.PLACE_DESIGN.TCL.PRE=/…/xxx.tcl

不少Vivado实现阶段的选项无法直接在Vivado工程模式的各个阶段的既有选项中直接体现,例如在opt_design 阶段,我只想执行 -sweep 选项,这时我们可以用到这些步骤的“More Option”

opt_design -sweep 相当于在在工程模式中设置opt_design的More option 为 -sweep

由于“More Option” 这个选项中含有空格,使用起来要相当小心。一旦用错,这个选项在v++中可能和其他的选项混淆,导致工具报一些看似无关的错误

示例:

--vivado.prop “run.impl_1.{STEPS.OPT_DESIGN.ARGS.MORE OPTIONS}={-sweep}”

我们先将Vivado的相关属性加到Vitis link的选项中

245df7b6-ebf1-11eb-a97a-12bb97331649.png

完成Vitis platform link之后,打开生成的Vivado 工程,我们可以看到之前设置的Vivado 属性都能体现在底层Vivado工程中:

(Vivado工程文件所在目录(不同版本可能有所差异):

XX/XX_system_hw_link/Hardware/binary_container_1.build/link/vivado/vpl/prj/prj.xpr)

246a7176-ebf1-11eb-a97a-12bb97331649.png

在Vivado 的TCL CONSOLE中可以执行get _param命令查看parameter是否已经设置成功:

24b9bfa6-ebf1-11eb-a97a-12bb97331649.png

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

编辑:jq

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

    关注

    0

    文章

    154

    浏览量

    8257

原文标题:开发者分享 | 如何在Vitis中把设置信息传递到底层的Vivado (上)

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    置信度验证对于自动驾驶来说重要吗?

    对于自动驾驶来说的作用,如有不准确之处,欢迎大家留言指正。 为什么这置信度验证是个重要问题 所谓置信度验证,就是检验自动驾驶系统在它“自认为正确”的判断上,到底有多可靠。在基于规则的自动驾驶方案
    的头像 发表于 11-12 08:54 597次阅读
    <b class='flag-5'>置信</b>度验证对于自动驾驶来说重要吗?

    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次阅读

    VIVADO对NICE进行波形仿真的小问题的解决

    https://www.rvmcu.com/community-topic-id-386.html 以上链接为如何生成.verilog,并在VIVADO中生成波形的例子。我们在实践过程,发现了两个
    发表于 10-27 06:41

    vcs和vivado联合仿真

    文档明确描述vivado2021.2版本对应VCS的版本是2020.12,由于license问题所以选择vcs2018的版本;虽然目前与官方的版本不匹配,但是不影响正常使用; 使用tcl界面
    发表于 10-24 07:28

    如何在AMD Vitis Unified 2024.2连接到QEMU

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

    不确定度评估新实践:传感器标定置信概率与误差传递法则​

    ​ ​ ​摘要:​ ​ 传感器标定是确保测量结果准确性与可靠性的核心环节,而不确定度评估则是量化测量结果可信程度的科学方法。本文聚焦传感器标定实践,深入探讨置信概率设定与误差传递法则的协同应用,旨在
    的头像 发表于 07-22 11:34 423次阅读

    Vivado无法选中开发板的常见原因及解决方法

    对应的器件信息和约束文件(XDC),大大简化工程初始化流程。然而,在某些情况下,我们可能会发现 Vivado 的界面无法选中目标开发板,导致只能手动选择器件。那么,遇到这种情况该如何处理呢?
    的头像 发表于 07-15 10:19 1384次阅读
    <b class='flag-5'>Vivado</b>无法选中开发板的常见原因及解决方法

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

    Vivado IP 流程(Vitis Unified),在这篇 AMD Vitis HLS 系列 3 ,我们将介绍如何使用 Unified IDE 创建 HLS 组件。这里采用“自
    的头像 发表于 07-02 10:55 1118次阅读
    如何在Unified IDE<b class='flag-5'>中</b>创建视觉库HLS组件

    解码LuatOS:短信功能的底层运作机制

    在LuatOS上到底怎么运作的。   一、发送短信 LuatOS已经将短信发送功能封装为:sms.send()函数 只需调用该函数,写入要发送的手机号码和短信内容,就能够完成信息发送。函数返回值成功为true,失败为false
    的头像 发表于 06-27 18:05 448次阅读
    解码LuatOS:短信功能的<b class='flag-5'>底层</b>运作机制

    使用AMD Vitis Unified IDE创建HLS组件

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

    如何设置信令测试仪的发射参数

    设置信令测试仪的发射参数是一个涉及多个步骤的过程,具体步骤可能因信令测试仪的型号和品牌而有所不同。以下是一个通用的设置信令测试仪发射参数的步骤指南:一、准备阶段 确认信令测试仪型号与规格: 在设置
    发表于 03-24 14:31

    一文详解Vivado时序约束

    Vivado的时序约束是保存在xdc文件,添加或创建设计的工程源文件后,需要创建xdc文件设置时序约束。时序约束文件可以直接创建或添加已存在的约束文件,创建约束文件有两种方式:Constraints Wizard和Edit T
    的头像 发表于 03-24 09:44 4379次阅读
    一文详解<b class='flag-5'>Vivado</b>时序约束

    底层开发与应用开发到底怎么选?

    选择底层开发还是应用开发,需要综合考虑个人兴趣、职业规划、技术能力、市场需求和发展前景等多个因素。 以下是关于底层开发与应用开发的详细对比,希望可以帮助你做出更合适的选择: 一、底层开发 1.
    发表于 03-06 10:10