跳至正文

如何提高Vivado编译速度09–模块化综合(OOC)能提高编译速度吗?

前言

本文以 MB、ZYNQU、VCT 三类含 Block Design 的工程为测试对象,基于 Vivado 2024.2 版本,对比 OOC per IP 与 Global 两种模式在工程第一次编译情况下的耗时。

一、实验条件说明

  1. 此测试需要带有Block Design的工程,故选择MB、ZYNQU和VCT作为测试工程;
  2. Vivado版本为2024.2;
  3. 测试条件分为两种:

    1. OOC per IP;
    2. Global。

如何修改Block Design的综合模式

在Sources窗口的Block Design上右键 -> Generate Output Products… -> Synthesis Options 选择Global/OOC per IP/OOC per Block Design。


OOC per IP: 将Block Design中的每个IP单独综合生成网表文件,后续如果某个IP未修改,则此IP无须重新综合。

OOC per Block Design: 将此Block Design单独综合生成网表文件,后续如果此Block Design未修改,无须再次综合。

Global: 将所有IP和相关源文件(.v/.sv/.vhdl等)一起综合生成网表文件,后续对源文件或IP的任意修改都需要重新综合所有文件。

从原理上来说,OOC per IP显然是最灵活的。

OOC per Block Design是OOC per IP和Global的折衷方式,本文不做研究。

另外,需要说明一下,对于测试工程VCT,其中有5个Block Design,其中4个其实设置成了Global,但在综合时Vivado仍然自行使用OOC模式,这可能是因为这几个Block Design比较简单的原因,在此说明。

二、测试截图

2.1 OOC

因本系列的前几篇文章都是用的OOC,所以这里的测试截图与前几篇文中是一样的,这里仅为提高本文的独立性而保留。

MB


实验编号 OOC 综合 实现 合计
OOC-MB-1 3m07s 26s 4m28s 8m01s
OOC-MB-2 3m08s 26s 4m27s 8m01s
OOC-MB-平均 3m07.5s 26s 4m27.5s 8m01s

ZYNQU


实验编号 OOC 综合 实现 合计
OOC-ZYNQU-1 1m09s 29s 1m58s 3m36s
OOC-ZYNQU-2 1m09s 29s 1m58s 3m36s
OOC-ZYNQU-平均 1m09s 29s 1m58s 3m36s

VCT


实验编号 OOC 综合 实现 合计
OOC-VCT-1 3m05s 3m40s 9m16s 16m01s
OOC-VCT-2 3m06s 3m39s 9m16s 16m01s
OOC-VCT-平均 3m05.5s 3m39.5s 9m16s 16m01s

2.2 Global

MB


实验编号 综合 实现 合计
Global-MB-1 4m54s 4m41s 9m35s
Global-MB-2 4m54s 4m39s 9m33s
Global-MB-平均 4m54s 4m40s 9m34s

ZYNQU


实验编号 综合 实现 合计
Global-ZYNQU-1 1m20s 1m58s 3m18s
Global-ZYNQU-2 1m19s 1m58s 3m17s
Global-ZYNQU-平均 1m19.5s 1m58 3m17.5s

VCT


实验编号 OOC 综合 实现 合计
Global-VCT-1 50s 6m12s 8m40s 15m42s
Global-VCT-2 50s 6m12s 8m38s 15m40s
Global-VCT-平均 50s 6m12s 8m39s 15m41s

三、实验结果统计与分析

实验条件/平均编译时间/示例工程 MB ZYNQU VCT
OOC 8m01s 3m36s 16m01s
Global 9m34s(+19.33%) 3m17.5s(-8.56%) 15m41s(-2.08%)

由以上实验数据我们可以得出结论:

  1. OOC和Global并没有出现哪种模式一直领先的情况;
  2. 基于MB的数据,OOC大幅领先,可能对于软核工程,OOC会更好;
  3. 对于硬核工程(ZYNQU和VCT),OOC和Global差距微小。

结论:OOC和Global在第一次编译时差距不大,但在后续编译中,OOC因为其工作原理,未改动的IP无需重新编译,最极限情况是所有IP未更改,此时OOC模式将节约整个OOC阶段的时间。所以,从提升编译速度的方面考虑,建议总是使用OOC模式。

另外,需要指出,可能是Vivado软件还不成熟,有时OOC模式下工程编译会失败,而换成Global模式就可以正常编译。所以,当工程出现莫名编译失败的问题时,可尝试切换为Global模式。

四、测试工程分享

本系列文章的所有测试工程,如下图所示。

均通过网盘分享。

欢迎大家关注我的微信公众号:徐晓康的博客,回复以下6位数字获取网盘链接。

981520

建议复制过去不会码错字!


如果本文对你有所帮助,欢迎点赞、转发、收藏、评论让更多人看到,赞赏支持就更好了。

如果对文章内容有疑问,请务必清楚描述问题,留言评论或私信告知我,我看到会回复。


徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论
目录
0
希望看到您的想法,请您发表评论x