青江的个人站

“保持热爱,奔赴星海”

  • 主页
  • 目录
  • 图床
  • 留言板
  • -关于我-
友链 搜索文章 >>

青江的个人站

“保持热爱,奔赴星海”

  • 主页
  • 目录
  • 图床
  • 留言板
  • -关于我-

Vivado中的增量编译与设计锁定


阅读数: 0次    2025-03-31
字数:1.2k字 | 预计阅读时长:4分钟

Vivado中的增量编译(Incremental Compilation)和设计锁定(Design Locking)是FPGA设计流程中用于提升效率、确保模块布局布线稳定的关键技术。

简要介绍

增量编译(Incremental Compilation)

所谓增量实现,更严格地讲是增量布局和增量布线。它是在设计改动较小的情形下参考原始设计的布局、布线结果,将其中未改动的模块、引脚和网线等直接复用,而对发生改变的部分重新布局、布线。这样做的好处是显而易见的,即节省运行时间,能提高再次布局、布线结果的可预测性,并有助于时序收敛。

增量编译通过复用已有实现结果(布局布线后的DCP文件),仅对设计中的修改部分重新编译,其本质是”增量布局布线“,适用于设计改动较小(通常不超过5%)的场景,例如添加调试模块(如ILA)或局部逻辑优化。

增量实现由两个流程构成:原始流程和增量流程,如图所示。其中,原始流程提供网表。这里的网表可以是布局后的DCP文件,也可以是布线后的DCP文件。

1

增量实现流程有两种模式:高复用模式和低复用模式。在高复用模式下,布局、布线会尽可能地复用已有布局、布线的结果。在这种情形下,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版本)。

2

如果Vidado版本是2017.4,打开新的Vivado界面后,通过File -> Open Checkpoint打开窗口。

3

在弹出的文件选择窗口中选择dcp_file文件夹下的dcp文件;打开后,在TCL Console中输入命令:

1
lock_design -level routing

点击左上角保存,做完这一步后,设计就被锁定好了,dcp文件就可以用了。

增量编译

对需要修改的代码做出修改后,在主界面菜单栏中,通过Flow -> Create Runs打开窗口。

4

选Both,点Next;

5

创建综合部分无需改动,直接点击Next;

6

勾选Make active,点Next;

7

选Do not launch now,点Next;

8

点击Finish完成创建;对于Vidado 2019.1,在impl_2右键,选择Set Incremental Implementation;

9

选择Specify design checkpoint,点击Add new design checkpoint,选择dcp在前面的步骤中准备好的dcp文件。

10

Copy sources into project选项勾选后,可以让Vivado将dcp文件自动复制到项目根目录的project.srcs/utils_1/imports/impl_1文件夹下。

对于Vivado 2017.4,在impl_2右键,选择“Set Incremental Compile”,选择在前面的步骤中准备好的dcp文件即可。

11

至此,项目已经完成设计锁定,并配置好增量编译,接下来可以开始新的综合、实现,完成增量编译过程。

参考链接

【Vivado那些事】Vivado中增量编译与设计锁定_vivado增量编译-CSDN博客

本文来源: 青江的个人站
本文链接: https://hanqingjiang.com/2025/03/31/20250331_vivado_incrementalCompiles/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
知识共享许可协议
赏

谢谢你请我喝可乐~

支付宝
微信
  • FPGA
  • Vivado

扫一扫,分享到微信

微信分享二维码
【云服务器(Ubuntu)配置(折腾)】六、添加内存交换空间以扩展内存
在Vivado中使用Pblock对模块进行位置约束
  1. 1. 简要介绍
    1. 1.1. 增量编译(Incremental Compilation)
    2. 1.2. 设计锁定(Design Locking)
  2. 2. 操作步骤
    1. 2.1. 设计锁定
    2. 2.2. 增量编译
  3. 3. 参考链接
© 2021-2025 青江的个人站
晋ICP备2024051277号-1
powered by Hexo & Yilia
  • 友链
  • 搜索文章 >>

tag:

  • 生日快乐🎂
  • 新年快乐!
  • 小技巧
  • Linux
  • 命令
  • 语录
  • 复刻
  • Blog
  • Notes
  • Android
  • C
  • Homework
  • MATLAB
  • FPGA
  • Server
  • Vivado

  • 引路人-稚晖
  • Bilibili-稚晖君
  • 超有趣讲师-Frank
  • Bilibili-Frank