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

    文章

    158

    浏览量

    8433

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    AMD Versal自适应SoCeMMC烧录/启动调试检查表(下)

    有多种受支持的方式可用于烧录 eMMC 器件,包括使用 AMD Vivado IDE、使用 AMD Vitis GUI 或使用 U-Boot。
    的头像 发表于 03-09 10:27 3981次阅读
    AMD Versal自适应SoC<b class='flag-5'>中</b>eMMC烧录/启动调试检查表(下)

    VivadoIP核被锁定的解决办法

    当使用不同版本的Vivado打开工程时,IP核被锁定的情况较为常见。不同版本的Vivado对IP核的支持程度和处理方式有所不同。
    的头像 发表于 02-25 14:00 592次阅读
    <b class='flag-5'>Vivado</b><b class='flag-5'>中</b>IP核被锁定的解决办法

    传递、指针传递、引用传递介绍

    进行操作,也就是说,即使形参的值发生改变,实参的值也完全不受影响。   2、指针传递:指针传递其实是值传递的一种,它传递的是地址。值传递过程
    发表于 01-21 06:48

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

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

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

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

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

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

    如何在AMD Vitis Unified 2024.2连接到QEMU

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

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

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

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

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

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

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

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

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