转帖:新版vivado2019.2新增增量综合功能
从 Vivado 2019.1 版本开始,Vivado 综合引擎就已经可以支持增量流程了。这使用户能够在设计变化较小时减少总的综合运行时间。
Vivado IDE 和 Tcl 命令批处理模式都可以启用此流程。如需了解有关此流程的详情,请参阅《Vivado Design Suite 用户指南:综合》 (UG901)。
在我们开始讨论增量综合之前,我们先来讨论一下一些重要的概念,以便能够更好地理解该流程。
1. 并行综合
为了缩短总运行时间,如果设计足够大,并且可以获益于并行流程,Vivado 综合即会启动并行流程。
并行流程会将设计划分为更小的、由并行进程独立处理的“RTL 分区”。
只有当设计规模足够大时,Vivado 综合才会决定使用并行流程。设计规模应该至少有 5 个 RTL 分区是大于 10K 实例大小才行。
要检查该工具是否已使用并行流程,您可以在综合日志中查找“Multithreading enabled for synth_design…”消息。
以下消息确认已使用并行流程完成了“Synthesis”,且设计与增量综合运行兼容:
"INFO: [Synth 8-5580] Multithreading enabled for synth_design using a maximum of 4 processes." (INFO:[Synth 8-5580] 为 synth_design 启用多线程,最多使用 4 个进程。)
2. RTL 分区
Vivado 综合会基于实例将大型设计划分为多个分区,以便启用并行流程进行综合。
以下快照示出的是工具如何在“Vivado 综合”日志文件中报告分区情况:
RTL 分区报告:
+------+----------------------------+------------+----------+
| |RTL Partition |Replication |Instances |
+------+----------------------------+------------+----------+
|1 |Partition_name1 | 1| 31536|
|2 |Partition_name2 | 1| 21130|
|3 |Partition_name3 | 1| 18061|
……..
……..
如果设计符合并行综合的要求,工具就会将所有分区写入.runs/synth_1/runme.log 文件。
如果使用的是增量运行,这些分区可以帮助工具识别哪些分区已更改并需要重新综合,并跟踪哪些分区是完整的(以保留这些分区)。
注意:作为参考的运行结果中使用并行综合是进行增量综合的必要条件。如果 50% 或更多的分区已被更改,这个工具即会使用默认流程,而不使用增量流程。
下图显示的是增量综合的流程描述:左侧显示的是增量流程的输入集及生成的输出文件,右侧显示的是相应的命令。
如需了解有关工程级和非工程级流程的详情,请参阅《Vivado Design Suite 用户指南:综合》 (UG901)。

修订后的设计要点:
修订后的设计在顶层不应有变化。
修订后的流程与初始“synth_design”命令使用的“Global Synthesis Settings”应完全相同。
如需对较低层级模块进行工具选项或属性的改动,则需对该层级使用 BLOCK_SYNTH 属性。如需了解有关 BLOCK_SYNTH 流程的详情,请参阅《Vivado Design Suite 用户指南:综合》 (UG901)。
如果 50% 以上的设计已更改(分区被更改),则该工具会使用默认综合,而不会使用增量综合。
工程流程的增量综合运行示例:
要开启增量综合流程,在最初对设计进行综合时,请确保选中“Write Incremental Synthesis”选项以便为增量运行生成增量 checkpoint。
请通过“Synthesis Settings”窗口来设置此选项:

启动综合后,请查看日志文件以确认是否使用了并行综合。
在综合日志文件中查找 INFO:Synth 8-5580。

此外,您可以在日志文件中查看打印的“RTL 分区”详情,如下所示:

在日志文件的末尾,您可以查看到综合运行所花费的总时间。

完成综合后,您可以保存生成的、将用于增量流程的 checkpoint 文件,也可以使用工具选项“Automatically use the checkpoint from the previous run”(自动使用上一次运行的检查点)。
您现在就可以修改设计或 RTL 了。
现在我们一起来看一下一个简单的例子。在这个示例中,我在数据路径中添加了两个寄存器。

下面的屏幕截图示出的是为增量综合设置增量 checkpoint 的示例。

要确认该工具是否读取了增量 checkpoint,请在生成的综合日志文件中查看“Command: read_checkpoint -incremental ./top.dcp”的消息。
该工具会分析已更改和未更改的设计,并报告摘要(该摘要可帮助用户了解设计改动和所需的重新综合的部分)。
以下是一个“增量综合摘要报告”示例:

变更摘要详情:
- 模块名称:在设计分区内 RTL 被更改的模块。请注意,一个分区下可能包含不止一个模块。
- 复制:所提到模块的实例化总数(在本例中为“rtlRam”)。复制数取决于直接实例化的数量。
例如(参见下面的屏幕截图),“rtlRam”仅由“usbf_top”实例化一次(因此 Replication = 1),即使 usbf_top 被调用两次也是如此。

1. 实例:在 elaboration 阶段之前“rtlRam”下的单元/原语数。在 elaboration 和综合阶段之后,这个数字可能会有所变更。
2. 变更百分比:RTL 变更 (66)/未变更设计总数 (801353) * 100 = 0.008%
3. 整个设计的大小:整个设计中的单元总数(包括已更改和未更改的设计)
4. 再综合设计的大小:请注意,如果属于分区的某一个模块中有任何更改,工具即会重新综合整个分区。在这个例子中,更改的分区大小为 30279,在设计中被调用了两次,因此“Resynthesis Design Size”数为 ~60555。

此外,工具将重新综合那些被传递了最优化的分区,并且“Resynthesis Design Size”的数量可能会相应地有所变化。
5. 重新综合设计的大小:重新综合的单元数= 60555/801353 * 100 = 7.55%
正如您在下面的综合日志快照中所看到的那样,与之前 3 分 28 秒的默认综合运行时间相比,增量流程后的运行时间仅为 1 分 35 秒。 7. 重新综合设计的大小:重新综合的单元数= 60555/801353 * 100 = 7.55%

设计变化较小时,增量综合是一个非常强大的功能。请随时使用此功能并与我们分享您的反馈。谢谢阅读!
转帖:新版vivado2019.2新增增量综合功能的更多相关文章
- 转载: VIVADO的增量综合流程
http://xilinx.eetrend.com/content/2019/100044286.html 从 Vivado 2019.1 版本开始,Vivado 综合引擎就已经可以支持增量流程了.这 ...
- [转帖]tar高级教程:增量备份、定时备份、网络备份
tar高级教程:增量备份.定时备份.网络备份 作者: lesca 分类: Tutorials, Ubuntu 发布时间: 2012-03-01 11:42 ė浏览 27,065 次 61条评论 一.概 ...
- 新版微信小程序即将上线 新增微信支付功能
<经济参考报>消息,新版微信小程序正在测试中,有可能将在近期正式上线.新版小程序增加了“附近门店”功能的接口,微信用户可以通过定位功能,查看提供线下服务的各类门店,并直接利用小程序实现包括 ...
- uni-app: 如何实现增量更新功能?
都知道,很多APP都有增量更新功能,Uni APP也是在今年初,推出了增量更新功能,今天我们就来学习一波. 当然,很多应用市场为了防止开发者不经市场审核许可,给用户提供违法内容,对增量更新大多持排斥态 ...
- 更新日志 - BugHD 新增邮件告警功能
最近 BugHD 又新增了一些功能,包括邮件告警. issue 分享. issue 备注等,同时也做了性能优化.希望能够帮助你更高效地收集解决应用崩溃. BugHD 新增功能 1.邮件告警 除了 We ...
- RDIFramework.NET V3.3 Web框架主界面新增横向菜单功能
功能描述 响应重多客户的要求与心声,RDIFramework.NET框架Web版本主界面新增横向菜单功能.横向菜单更加直观,用户可操作与展示的空间更多,符合实际应用要求. 一.效果展示 最终界面效果: ...
- Java第十二次作业:什么是一维数组?什么是对象数组?吃金币游戏2.0版 新增炸弹功能 新增游戏倒计时功能 新增胜利失败检测功能 使用如鹏游戏引擎制作窗体 一维数组设置金币
什么是数组? 数组的定义:是用统一的名字代表这批数据,用序号来区分各个数据.数组是无序的数据元素按有序的下标组成的集合,分配固定空间大小的一种容器. 如何理解:其实就是一个同时放很多数据的变量. a= ...
- 咏南中间件新增MORMOT插件功能
咏南中间件新增MORMOT插件功能 咏南中间件支持DATASNAP和MORMOT两种通讯框架. 原来已经支持DATASNAP插件,现在又增加了MORMOT插件,已经支持DATASNAP和MORMOT两 ...
- ABBYY FineReader 15新增编辑页面布局功能
ABBYY FineReader 15(Windows系统) 新增编辑页面布局功能,允许用户修改PDF数字文档的页面布局,包括添加或者删除文字段落,文字块以及图片,更改段落,文字块,图片位置.添加或者 ...
随机推荐
- Java入门准备:Java开发环境的安装与卸载
Java的三大版本 JavaSE:标准版 JavaME:嵌入式开发 JavaEE:企业级开发 JDK(Java Development Kit):Java开发者工具包 JRE(Java Runtime ...
- 中心对称数 II
中心对称数 II 1.题目描述 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 找到所有长度为 n 的中心对称数. 示例 : 输入: n = 2 输出: [& ...
- Java空指针异常:java.lang.NullPointerException解决办法
问题描述:运行maven项目抛出NullPointerException 空指针异常. 报空指针异常的原因有以下几种: 1字符串变量未初始化 例如:String x=null:对象x为null, ...
- Shell系列(12)- 预定义变量(5)
预定义变量 作用 $? 常用:最后一次执行的命令的返回状态. 如果这个变量的值为0,证明上一个命令正确执行:如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了 $$ ...
- 鸿蒙内核源码分析(任务管理篇) | 任务池是如何管理的 | 百篇博客分析OpenHarmony源码 | v5.05
百篇博客系列篇.本篇为: v05.xx 鸿蒙内核源码分析(任务管理篇) | 任务池是如何管理的 | 51.c.h .o 任务管理相关篇为: v03.xx 鸿蒙内核源码分析(时钟任务篇) | 触发调度谁 ...
- P3293-[SCOI2016]美味【主席树】
正题 题目链接:https://www.luogu.com.cn/problem/P3293 题目大意 给出一个长度为\(n\)的序列,\(m\)次询问给出\(b,x,l,r\)表示询问在\([l,r ...
- P5437-[XR-2]约定【拉格朗日差值,数学期望】
正题 题目链接:https://www.luogu.com.cn/problem/P5437 题目大意 \(n\)个点的完全图,连接\(i,j\)的边权值为\((i+j)^k\).随机选出一个生成树, ...
- Unittest 框架之断言,你学会了吗??
unittest断言 Python在 unittest.TestCase 类中提供了很多断言方法.断言方法检查你认为应该满足的条件是否确实满足.如果该条件确实满足,你对程序行为的假设就得到了确认,你就 ...
- Cnblogs 主题设置
https://www.cnblogs.com/enjoy233/p/cnblogs-markdown-code-display-opt.html 复制: 右上角添加复制按钮:https://www. ...
- 用Flask 实现文件服务器(包含docker版本)
最近有了公司局域网内共享axure原型的需求,所以用Flask开发了一款文件上传/查看工具,记录一下其中的问题和解决方案 这个工具参照了一位大神的uploads工具 https://zhuanlan. ...