前言
本文以 MB、ZYNQU、VCT 三类含 Block Design 的工程为测试对象,基于 Vivado 2024.2 版本,对比 OOC per IP 与 Global 两种模式在工程第一次编译情况下的耗时。
一、实验条件说明
-
此测试需要带有Block Design的工程,故选择MB、ZYNQU和VCT作为测试工程; -
Vivado版本为2024.2; -
测试条件分为两种: -
OOC per IP; -
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%) |
由以上实验数据我们可以得出结论:
-
OOC和Global并没有出现哪种模式一直领先的情况; -
基于MB的数据,OOC大幅领先,可能对于软核工程,OOC会更好; -
对于硬核工程(ZYNQU和VCT),OOC和Global差距微小。
结论:OOC和Global在第一次编译时差距不大,但在后续编译中,OOC因为其工作原理,未改动的IP无需重新编译,最极限情况是所有IP未更改,此时OOC模式将节约整个OOC阶段的时间。所以,从提升编译速度的方面考虑,建议总是使用OOC模式。
另外,需要指出,可能是Vivado软件还不成熟,有时OOC模式下工程编译会失败,而换成Global模式就可以正常编译。所以,当工程出现莫名编译失败的问题时,可尝试切换为Global模式。
四、测试工程分享
本系列文章的所有测试工程,如下图所示。

均通过网盘分享。
欢迎大家关注我的微信公众号:徐晓康的博客,回复以下6位数字获取网盘链接。
981520
建议复制过去不会码错字!
如果本文对你有所帮助,欢迎点赞、转发、收藏、评论让更多人看到,赞赏支持就更好了。
如果对文章内容有疑问,请务必清楚描述问题,留言评论或私信告知我,我看到会回复。
徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。