转载: VIVADO的增量综合流程
http://xilinx.eetrend.com/content/2019/100044286.html
从 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%

设计变化较小时,增量综合是一个非常强大的功能。请随时使用此功能并与我们分享您的反馈。谢谢阅读!
转载出处
作者:非鱼知乐
链接:https://www.jianshu.com/p/d69f2377c935
来源:简书
转载: VIVADO的增量综合流程的更多相关文章
- 转帖:新版vivado2019.2新增增量综合功能
从 Vivado 2019.1 版本开始,Vivado 综合引擎就已经可以支持增量流程了.这使用户能够在设计变化较小时减少总的综合运行时间. Vivado IDE 和 Tcl 命令批处理模式都可以启用 ...
- [转载]Vivado轻松实现IP封装
Vivado轻松实现IP封装 1.新建一个测试工程 工程化的设计方法是离不开工程的,第一步往往都是新建工程,后面我会学习去工程化的开发方法,可能会更加高效. 2.利用向导完成IP封装 2.1.启动IP ...
- 【转载】数字IC设计流程及开发工具
原文链接:https://www.zhihu.com/question/28322269/answer/42048070 Design Flow <img src="h ...
- [转载] ffmpeg超详细综合教程——摄像头直播
本文的示例将实现:读取PC摄像头视频数据并以RTMP协议发送为直播流.示例包含了 1.ffmpeg的libavdevice的使用 2.视频解码.编码.推流的基本流程 具有较强的综合性. 要使用liba ...
- DC综合流程
Design Compiler and the Design Flow 步骤 将HDL描述的设计输入到Design Compiler中 Design Compiler使用technology libr ...
- (转载)最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件
今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程.以后各位只要着重如何编写 ...
- 【转载】JAVA中综合接口和抽象类实现的一种“抽象接口”
Muscleape个人总结:(这里的抽象接口是指:使用一个抽象类实现一个接口,是两部分结构) 使用一个抽象类直接实现接口,将接口中的方法区分为实现类必须要实现的和选择性实现的,其他需要实现接口的类型通 ...
- 【转载】C语言综合实验1—学生信息管理系统
http://www.cnblogs.com/Anker/archive/2013/05/06/3063436.html 实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的 ...
- Vivado增量式编译
Vivado 中的增量设计会重新利用已有的布局布线数据来缩短运行时间,并生成可预测的结果.当设计有 95% 以上的相似度时,增量布局布线的运行时间会比一般布局布线平均缩短2倍.若相似度低于80%,则使 ...
随机推荐
- 10 个不为人知的Python冷知识
1. 省略号也是对象 ... 这是省略号,在Python中,一切皆对象.它也不例外. 在 Python 中,它叫做 Ellipsis . 在 Python 3 中你可以直接写-来得到这玩意. > ...
- 迷宫2----BFS
题目 :蒜头君在你的帮助下终于逃出了迷宫,但是蒜头君并没有沉浸于喜悦之中,而是很快的又陷入了思考,从这个迷宫逃出的最少步数是多少呢?输入格式第一行输入两个整数 n 和 m,表示这是一个 n×m 的迷宫 ...
- scrum项目冲刺_day11 第一阶段总结
"智能垃圾分类APP"第一阶段总结 总任务: 一.appUI页面(已完成) 二.首页功能: 1.图像识别功能(已完成) 2.语音识别功能(已完成) 3.垃圾搜索功能(基本完成) 4 ...
- 剑指offer计划20( 搜索与回溯算法中等)---java
1.1.题目1 剑指 Offer 07. 重建二叉树 1.2.解法 注释解法. 1.3.代码 class Solution { int[] preorder; HashMap<Integer, ...
- Dapr实战(一) 基础概念与环境搭建
什么是Dapr Dapr 是一个可移植的.事件驱动的运行时,可运行在云平台或边缘计算中.支持多种编程语言和开发框架. 上面是官方对Dapr的介绍.有点难以理解,大白话可以理解为:Dapr是一个运行时, ...
- windows10 安装配置 jmeter 自动化接口测试 邮件报告
1.安装依赖包:JDK(版本:jdk-7u17-windows-x64) 双击即可安装,注意:jdk不要安装中文路径下,jdk和jre安装在同一路径下 1.1:配置jdk环境变量 (1)JAVA_HO ...
- 大前端快闪:package.json文件知多少?
最近在公司某项目参与了一些前端工作,作为后端抠脚大汉,改点前端细节磕磕绊绊,改点大前端.工程化.HTTP交互倒也还能做到柳暗花明. 于是打算用后端程序猿的视角记录一些{大前端}的知识快闪,也算是帮助读 ...
- jmeter加密解密(加密篇)
最近刚好在弄jmeter加密解密,可以分享下.(有一段时间没写了,有点不知道从何写起,这篇写的有点乱o(╥﹏╥)o) 需求是:接口中的请求体的部分参数需要先加密再请求,返回的结果中部分字段需解密. 1 ...
- P7736-[NOI2021]路径交点【LGV引理】
正题 题目链接:https://www.luogu.com.cn/problem/P7736 题目大意 有\(k\)层的图,第\(i\)层有\(n_i\)个点,每层的点从上到下排列,层从左到右排列.再 ...
- Redis分布式方案:集群
Redis集群通过分片(sharding)进行数据共享,并提供复制和故障转移功能. 节点 一个Redis集群由多个node组成,连接各节点的命令格式如下: CLUSTER MEET 127.0.0.1 ...