从2019.1版本开始,Vivado引入了增量综合,这有助于工程师进一步降低综合运行时间。该流程既可采用图形界面方式进行也可采用Tcl命令完成。在阐述增量综合之前,我们先介绍几个重要的概念以便更好的理解这一流程。
当设计超过10K个模块且至少可以被分割为5个RTL分区时,在综合阶段Vivado会采用并行综合的方式。这些小的RTL分区会被独立处理从而降低运行时间,显然设计越大从中受益越多。用户可从综合的日志文件中查看是否使用了并行综合,如下图所示信息。
Vivado会把大的设计分割为一些小的RTL分区以便并行综合。这些分区会记录在综合的日志文件中。综合日志文件的位置为:.runs/synth_1/runme.log。如下图所示。
对于增量综合,工具会根据这些分区来判断哪些分区需要重新综合,哪些分区可以复用原有综合结果。如果设计中有≥50%的分区发生了改变,那么工具会采用传统综合方式而非增量综合方式。下图显示了增量综合的流程,图中左侧显示了增量综合流程输入/输出文件,右侧显示了相应的Tcl命令。
增量综合时,一个重要环节是提供参考dcp,如下图所示。Vivado允许用户自行指定参考dcp,同时也可以自动选取参考dcp。
在综合日志文件中我们会看到设计分区的相关信息,如下图所示。
在综合日志文件的结尾,可以看到运行时间,如下图所示。这样我们获得了参考dcp。
下面我们对RTL代码进行修改,然后执行增量综合。增量综合报告如下图所示。可以看到模块rtlRam发生了改变,这个模块被实例化了1次(Replication),该模块下有66个cells。
对于增量综合,我们再看一些统计数据。如下图所示,可以看到最大加速比可达3.85。
增量综合时的全局综合设置选项要与初始综合时的设置保持一致。如果设计顶层需要底层保持层次,可通过模块化综合方式BLOCK.SYNTH实现。
参考dcp需要与当前增量综合所对应的芯片型号完全一致,同时确保用到的Vivado版本完全一致。
参考dcp需要与当前增量综合所用到的综合阶段的时序约束完全一致。
尽可能使设计发生较小的改变,同时尽可能使这些改变发生在模块内。如果模块对输入/输出使用了寄存器,可阻止边界优化,如下图所示。图中G1和G2因边界优化导致两者之间的路径发生了改变,这样G1和G2都需要重新综合,此时,可通过模块化综合方式阻止边界优化。
如果设计中某个模块被实例化了多次,而这些改变就发生在这个模块内,那么就要考虑总体的改变量。
没有回复内容