【Vivado那些事儿】Vivado 增量综合流程

从 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 和综合阶段之后,这个数字可能会有所变更。

  1. 变更百分比:RTL 变更 (66)/未变更设计总数 (801353) * 100 = 0.008%

  1. 整个设计的大小:整个设计中的单元总数(包括已更改和未更改的设计)

  1. 再综合设计的大小:请注意,如果属于分区的某一个模块中有任何更改,工具即会重新综合整个分区。在这个例子中,更改的分区大小为 30279,在设计中被调用了两次,因此“Resynthesis Design Size”数为 ~60555。

此外,工具将重新综合那些被传递了最优化的分区,并且“Resynthesis Design Size”的数量可能会相应地有所变化。

  1. 重新综合设计的大小:重新综合的单元数= 60555/801353 * 100 = 7.55%

6.正如您在下面的综合日志快照中所看到的那样,与之前 3 分 28 秒的默认综合运行时间相比,增量流程后的运行时间仅为 1 分 35 秒。

  1. 重新综合设计的大小:重新综合的单元数= 60555/801353 * 100 = 7.55%

设计变化较小时,增量综合是一个非常强大的功能。请随时使用此功能并与我们分享您的反馈。谢谢阅读!

参考:https://support.xilinx.com/s/article/976545?language=zh_CN

【Vivado那些事儿】从小白到专家:网友亲身实践教您上手 ZYNQ 开发 | Zynq 常用外设快速上手指南(上)

【Vivado那些事儿】从小白到专家:网友亲身实践教您上手 ZYNQ 开发 | Zynq 常用外设快速上手指南(下)

【Vivado那些事儿】ZYNQ开发基本流程

【Vivado那些事】Xilinx FPGA普通IO能不能直接接入PLL作为时钟输入

【Vivado那些事儿】约束的顺序

【Vivado】那些事儿-汇总篇

【Vivado那些事儿】强制修改打开Vivado工程使用的Vivado版本

【Vivado那些事儿】-VIO原理及应用

【Vivado那些事儿】Vivado 增量综合流程相关推荐

  1. 【Vivado那些事儿】VIVADO中时序报告中WNS,WHS,TNS,THS含义

    VIVADO中时序报告中WNS,WHS,TNS,THS含义 运行"report_timing"或"report_timing_summary"命令后,会注意到 ...

  2. 【Vivado那些事儿】在不重新安装 Vivado 的情况下,是否能够安装 Xilinx USB/Digilent 线缆驱动器?...

    Q: 如果 Xilinx USB/Digilent 线缆驱动器在安装 Vivado 设计套件时还没有安装,或者 Xilinx USB/Digilent 线缆驱动器被禁用,在不全面重新安装 Vivado ...

  3. 【Vivado那些事儿】Vivado中运行时出现visual c++运行错误的解决办法

    Vivado中运行时出现visual c++运行错误的解决办法 Win10系统中运行Vivado一直好好的,某一天突然出现visual c++运行错误,如下图所示: 修复也没什么作用,卸载重装是同样的 ...

  4. 【Vivado那些事儿】Vivado 设计套件版本的支持性第三方工具

    Vivado 设计套件版本的支持性第三方工具 本文列出了能够与 Vivado 设计套件联用的支持性第三方仿真器. 这些也在随该软件一起发布的"Vivado 设计套件用户指南:版本说明.安装与 ...

  5. git获取增量代码流程

    增量代码流程: 一.根据版本对比 1.进入源码发布目录     cd ~.源码发布目录 2.下载项目     当发布目录本地没有项目时:执行(git clone + 下载地址)命令输入git账号密码下 ...

  6. 【MySQL数据备份与恢复】【安装xtrabackup 备份工具】【完全备份流程】【增量备份流程】【差异备份流程】

    [MySQL数据备份与恢复] 1.为什么要备份 备份:能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方. 冗余: 数据有多份冗余,但不等备份,只能防止机械故障带来的数 ...

  7. 在Vivado中,使用锁定增量编译技术进行增量综合布局布线

    为了实现对FPGA系统的place.route的锁定,只通过vivado中setting中的增量设置是不够的,这里需要加入锁定设计.其具体步骤如下: 打开vivado软件,在弹出的界面中,选择如下菜单 ...

  8. 【Vivado那些事儿】Vivado环境一览

    前言 在我看来,用好一个工具的前提,就需要对工具有比较清晰的认识,不然对工具都不熟悉,遇到一些关乎工具上的问题时,会根本无从下手,也会在一定程度上影响项目的开发,所以很多时候,在进行一些项目的时候,团 ...

  9. Vivado 随笔(2) 综合属性之use_dsp48?

    目录 背景 正文 测试 放置在Module前 放置在变量声明前 附加测试 放置在某个变量声明前 放置在Module前 相关链接 背景 在做一些FPGA算法的时候,我们不可避免的使用到大量的算术运算,例 ...

最新文章

  1. 【VritualBox】虚拟机VirtualBox中ubuntu下加载USB设备报错:busy with a previous request.Plaease try again later
  2. ppt 简单动画制作
  3. Hibernate调用存储过程
  4. [javaSE] 标识符大小写
  5. SPOJ - LCS Longest Common Substring(后缀自动机)
  6. Core java class in Spring
  7. 银行家算法总结及实现
  8. 第二章:变量和运算符
  9. WEB页面性能指标与建议
  10. 【mac】Mac 安装Brew命令
  11. 20220228:力扣第282场周赛(下)
  12. php.ini路径设置、libmysql.dll加载等
  13. 各种存储分配算法java代码实现_Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF...
  14. CCF NOI1064 计算斐波那契第n项
  15. 《算法导论》之hash表
  16. 本地安装易邮邮箱服务器并用foxmail 连接测试
  17. android 模拟器 超时,Appcelerator Studio超时等待Android模拟器启动
  18. 分布式系统面临的问题
  19. (转载)基于STM32的多节锂电池管理系统的设计
  20. 2020华为外包机试题目

热门文章

  1. ssh无输入密码登录问题
  2. MUR1660AC-ASEMI高压大电流快恢复二极管
  3. 虚拟服务器没有目录,云虚拟服务器指向目录
  4. [Unity]切换至中文界面
  5. [AV1] AV1 Encoder代码流程图
  6. Linux mint 16安装后的种种善后
  7. 《CSAPP》(第3版)答案(第六章)(一)
  8. 钉钉群机器人消息通知
  9. WIN7环境下debug的使用
  10. electron使用node-pty问题解决