如何缩短Vivado运行时间

编程入门 行业动态 更新时间:2024-10-11 05:27:52

如何缩短Vivado运行<a href=https://www.elefans.com/category/jswz/34/1771441.html style=时间"/>

如何缩短Vivado运行时间

在Vivado Implementation阶段,有时是有必要分析一下什么原因导致运行时间(runtime)过长,从而找到一些方法来缩短运行时间。

 

首先,要明确到底哪个阶段耗时过长。Vivado Implementation主要有三个子步骤:opt_design、place_design和route_design。Implementation结束后,会在"<project_name>.runs/impl_x" 目录下生成一个runme.log文件。在这个文件中可以查看每个子步骤的耗时。如下图所示,可以看到place_design耗时2分41秒。

 

 

可采用如下一些方法缩短运行时间。

Implementation Strategy

如果只是评估资源利用率,可使用Flow_Quick策略。该策略不是时序驱动的策略,因此可以快速执行Implementation。策略Flow_RuntimeOptimized是时序驱动的策略,可以快速完成Implementation,它是设计性能和运行时间之间一种折中。

 

检查约束

对于时序约束,我们要求“干净且合理”。所谓“干净”,是指约束完备,不会出现漏约或者约束被覆盖的情形。例如,由于set_clock_groups的优先级高于set_max_delay,这就有可能造成后者的约束被覆盖。所谓“合理”,是指约束的数值是正确的。这在多周期路径约束以及跨时钟域路径约束中会经常碰到,对于这类路径要格外注意。例如,如果多周期路径的hold requirement不是0,那么有可能就是约束不合理;如果跨时钟域路径的path requirement为1ns,这也是不合理的。

 

此外,在用Tcl命令时,尽可能地去缓存被复用的对象。例如,如果通过get_nets获得的一组nets在后续约束中被反复使用,那么可将get_nets的返回结果赋给一个变量,后续使用时只需调用该变量即可。同时,通过选项-filter找到更准确的对象,例如:对于时序路径,通过属性IS_SEQUENTIAL找到时序单元,从而避免了获得其他一些不期望的结果。

 

约束路径越具体越节省运行时间,例如:如果set_false_path只使用了-from选项,那么Vivado在搜索这些路径时就会比较耗时。

 

管理生成报告

生成报告也会消耗一些时间。Vivado提供了Report strategy,如下图所示。根据设计分析的需求选择生成报告可节省一定的运行时间。

 

 

布线

拥塞对运行时间有很大的影响。因此,如果设计出现了拥塞问题,就要把其作为首要问题去解决。同时,在route_design阶段,使用选项-ultrathreads也可缩短运行时间。

 

增量编译

如果设计只是有一小部分改动,那么可尝试增量Implementation。这在一定程度上也会缩短运行时间。

 

设置多线程

Vivado 2018.x的版本,无论是Synthesis还是Implementation,都可以支持多线程。只需要通过如下命令即可设置线程个数。对于Synthesis,最大线程数为4,对于Implementation,最大线程数为8。

 

ECO流程

对于微小的改动,例如修改ILA的Debug probes或者把内部net链接到某个Package Pin,都可以采用ECO流程,可以极大地缩短运行时间。ECO具体流程可看这里(替换Debug Probes其实很简单),文档ug904中也有详细介绍。

 

总结

Implementation Strategy

检查约束

管理生成报告

布线

增量编译

设置多线程

ECO流程

更多推荐

如何缩短Vivado运行时间

本文发布于:2024-02-06 10:31:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748471.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:时间   Vivado

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!