Vivado中的增量编译(Incremental Compilation)和设计锁定(Design Locking)是FPGA设计流程中用于提升效率、确保模块布局布线稳定的关键技术。
简要介绍
增量编译(Incremental Compilation)
所谓增量实现,更严格地讲是增量布局和增量布线。它是在设计改动较小的情形下参考原始设计的布局、布线结果,将其中未改动的模块、引脚和网线等直接复用,而对发生改变的部分重新布局、布线。这样做的好处是显而易见的,即节省运行时间,能提高再次布局、布线结果的可预测性,并有助于时序收敛。
增量编译通过复用已有实现结果(布局布线后的DCP文件),仅对设计中的修改部分重新编译,其本质是”增量布局布线“,适用于设计改动较小(通常不超过5%)的场景,例如添加调试模块(如ILA)或局部逻辑优化。
增量实现由两个流程构成:原始流程和增量流程,如图所示。其中,原始流程提供网表。这里的网表可以是布局后的DCP文件,也可以是布线后的DCP文件。
增量实现流程有两种模式:高复用模式和低复用模式。在高复用模式下,布局、布线会尽可能地复用已有布局、布线的结果。在这种情形下,place_design和route_design都只有三种directive可用,分别为Default、Explore和Quick。
以下两种情形适合于高复用模式:
- 很小的设计改动。
- 与原始设计相比,更新后的设计只是添加了调试模块,如ILA等。
由此可见,高复用模式在网表时序收敛且多达95%的逻辑单元被复用时最为有效。
与高复用模式相比,低复用模式则适用于更新后的设计与参考设计相比有较大的改动,或者用户通过read_checkpoint的选项−reuse_objects指定复用逻辑单元的情况。此时,place_design和route_design的所有−directive均可用。
当布局、布线在某些区域面临挑战时,低复用模式更为有效。例如,从网表中获得较好的Block RAM和DSP的布局,或者时序难以收敛的逻辑单元。这些都可通过Tcl命令获得。
设计锁定(Design Locking)
设计锁定通过lock_design
命令将模块的布局(Place)和布线(Route)完全固定,确保后续修改不会影响已锁定部分的物理位置。这一功能常与增量编译结合使用,用于模块复用或关键路径优化。
简单的增量编译是不能保证模块固定在某个位置的,为了实现这一点,需要对设计进行锁定。因此一般来说,增量编译都是与设计锁定联合使用的。
操作步骤
首先,完成一次完整的综合与实现流程,生成布局布线后的设计检查点文件(.dcp
),路径通常为 project.runs/impl_1
。可以新建一个文件夹(名字是dcp_file),将该文件复制到其中。
设计锁定
前面说道,简单的增量编译是不能保证模块固定在某个位置的,为了实现这一点,需要对设计进行锁定。方法是,打开一个新的Vivado界面,通过File -> Checkpoint -> Open打开窗口(2019.1版本)。
如果Vidado版本是2017.4,打开新的Vivado界面后,通过File -> Open Checkpoint打开窗口。
在弹出的文件选择窗口中选择dcp_file文件夹下的dcp文件;打开后,在TCL Console中输入命令:
1 | lock_design -level routing |
点击左上角保存,做完这一步后,设计就被锁定好了,dcp文件就可以用了。
增量编译
对需要修改的代码做出修改后,在主界面菜单栏中,通过Flow -> Create Runs打开窗口。
选Both,点Next;
创建综合部分无需改动,直接点击Next;
勾选Make active,点Next;
选Do not launch now,点Next;
点击Finish完成创建;对于Vidado 2019.1,在impl_2右键,选择Set Incremental Implementation
;
选择Specify design checkpoint
,点击Add new design checkpoint
,选择dcp在前面的步骤中准备好的dcp文件。
Copy sources into project
选项勾选后,可以让Vivado将dcp文件自动复制到项目根目录的project.srcs/utils_1/imports/impl_1
文件夹下。
对于Vivado 2017.4,在impl_2右键,选择“Set Incremental Compile”,选择在前面的步骤中准备好的dcp文件即可。
至此,项目已经完成设计锁定,并配置好增量编译,接下来可以开始新的综合、实现,完成增量编译过程。
参考链接
【Vivado那些事】Vivado中增量编译与设计锁定_vivado增量编译-CSDN博客
本文链接: https://hanqingjiang.com/2025/03/31/20250331_vivado_incrementalCompiles/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
