在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的选项中
完成vitis platform link之后,打开生成的vivado 工程,我们可以看到之前设置的vivado 属性都能体现在底层vivado工程中:
(vivado工程文件所在目录(不同版本可能有所差异):
xx/xx_system_hw_link/hardware/binary_container_1.build/link/vivado/vpl/prj/prj.xpr)
在vivado 的tcl console中可以执行get _param命令查看parameter是否已经设置成功:
本片文章来自赛灵思高级工具产品应用工程师 hong han
如何让西门子工控机始终保持良好的工作性能?
声控拨号的优缺点
汽车芯片真的进入了5nm时代吗
深入探讨电容的种类和作用
因为Exim的安全漏洞数百万台服务器受到了影响
如何基于Vitis中把设置信息传递到底层的Vivado
了解AI失败的三个关键领域:隐性偏见,不良数据和期望
FUTEK的中空型测力传感器介绍
电动自行车铅改锂“风起云涌”,驱动各路锂电势力跑步入局
用于刻蚀多晶硅表面的HF-HNO3-H2SO4/H2O混合物
MLCC缺货潮蔓延,小尺寸需求加剧
便携式农药残留检测仪的性能及参数
模数转换器件—ADC
STC89C52单片机内部结构及基本特性
无线医疗设备的安全性挑战
基于启明6M5开发板的无线环境监测小车系统设计
“无人驾驶汽车运营服务刑事合规研讨会”在法学研究所召开
汽车销售4S店使用智能钥匙柜的特点有哪些
3DIC的运用于与对于半导体的影响
英特尔Agilex FPGA的优势和特性