前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何缩短Vivado运行时间

如何缩短Vivado运行时间

作者头像
Lauren的FPGA
发布2019-10-30 19:24:31
4.5K0
发布2019-10-30 19:24:31
举报
文章被收录于专栏:Lauren的FPGA

在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中也有详细介绍。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Implementation Strategy
  • 检查约束
  • 管理生成报告
  • 布线
  • 增量编译
  • 设置多线程
  • ECO流程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档