前言
Vivado 编译速度是 FPGA 开发的关键瓶颈,此前已探讨线程、内存等提速方案,本次聚焦核心问题:Win11 与 Ubuntu(Linux)谁更能提升编译效率?尤其在虚拟机环境下。
实验统一硬件(AMD 9950X、64G 内存)、Vivado 2024.2、32 线程,测试 4 类不同复杂度工程,用数据验证系统差异 —— 既看简单工程表现,更关注复杂工程是否因 Ubuntu 实现显著提速,为开发者选系统提供参考。
一、实验条件说明
已安装好Vivado的Ubuntu虚拟机镜像分享:https://www.myhardware.top/如何在ubuntu系统中安装vivado/
1.1 硬件平台与操作系统说明
| 软件 | 型号/版本 | 说明 |
|---|---|---|
| CPU | AMD 9950X | 16核32线程,基准主频4.3GHz,超频 |
| 内存 | DDR5 32G×2 C32 | 内存超频后速度为6400MHz |
| 操作系统 | Win11 专业版 24H2 | 因目前新推出的电脑不再支持Win10(当然Win10下也能用,但很多硬件驱动会有问题),故本系列实验对于Windows系统仅测试了Win11 |
| 虚拟机 | VMware Workstation Pro 17.6.3 | 免费虚拟机软件 |
| 虚拟机运行的操作系统 | Ubuntu 24.04.2 LTS | LTS,Long Term Support,长期支持版本 |
1.2 VMware版本
本文实现所用的VMware版本如下图所示。

1.3 虚拟机设置
在运行Ubuntu之前,需要特别设置虚拟机:
-
建议是拉到最大运行内存。Vivado最低内存建议是32G,低于32G时,Vivado易闪退。
AMD官网对于Vivado最低内存的建议:AMD Vivado™ Design Suite: Standard & Enterprise Edition–Memory Recommendations
之前我和一个粉丝就因为虚拟机内存设置得不够大,然后在Ubuntu中运行Vivado就会闪退,这其实是Vivado本身对最小内存的要求导致的。

-
处理器也根据实际CPU拉满,像我这里CPU是16核32线程。 
1.4 Ubuntu系统信息

1.5 其它实验条件
-
仍选取与前文相同的三个示例工程,再新增一个示例工程VCT(下文会介绍) -
Vivado版本为2024.2 -
最大线程32,使用线程32 -
Ubuntu虚拟机运行时,尽量保证后台无其它软件 -
其它条件与前文相同
1.6 新增示例工程–VCT(xcvc1902-vsva2197-2MP-e-S)
除原本的CPU,MB,ZYNQU外,再新增一个更复杂的示例工程–VCT作为实验工程。工程新建流程如下:
选择Versal CPM Tandem PCle and DFX。



二、测试截图
2.1 Win11
CPU


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| Win11-CPU-1 | 0 | 1m22s | 1m46s | 3m08s |
| Win11-CPU-2 | 0 | 1m22s | 1m48s | 3m10s |
| Win11-CPU-平均 | 0 | 1m22s | 1m47s | 3m09s |
MB


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


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


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


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| Ubuntu-CPU-1 | 0 | 1m13s | 1m59s | 3m12s |
| Ubuntu-CPU-2 | 0 | 1m14s | 1m59s | 3m13s |
| Ubuntu-CPU-平均 | 0 | 1m13.5s | 1m59s | 3m12.5s |
MB


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| Ubuntu-MB-1 | 2m42s | 22s | 4m56s | 8m00s |
| Ubuntu-MB-2 | 2m43s | 22s | 4m57s | 8m02s |
| Ubuntu-MB-平均 | 2m42.5s | 22s | 4m56.5s | 8m01s |
ZYNQU


| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| Ubuntu-ZYNQU-1 | 56s | 24s | 1m28s | 2m48s |
| Ubuntu-ZYNQU-2 | 56s | 24s | 1m27s | 2m47s |
| Ubuntu-ZYNQU-平均 | 56s | 24s | 1m27.5s | 2m47.5s |
VCT


这个Ubuntu-VCT编译了8~10次,确实每次这个编译时间都在波动,难以稳定在10s的误差内,所以,这里认为按实际编译时间处理,而非选取最短或最长的编译时间。
| 实验编号 | OOC | 综合 | 实现 | 合计 |
|---|---|---|---|---|
| Ubuntu-VCT-1 | 2m29s | 2m56s | 7m19s | 12m44s |
| Ubuntu-VCT-2 | 2m11s | 2m55s | 7m07s | 12m13s |
| Ubuntu-VCT-平均 | 2m20s | 2m55.5s | 7m13s | 12m28.5s |
三、实验结果统计与分析
| 实验条件/平均编译时间/示例工程 | CPU | MB | ZYNQU | VCT |
|---|---|---|---|---|
| Win11 | 3m09s | 8m01s | 3m36s | 16m01s |
| Ubuntu | 3m12.5s (+1.9%) |
8m01s (0.0%) |
2m47.5s (-22.5%) |
12m28.5s (-22.1%) |
由以上实验数据我们可以得出结论:
-
当工程比较简单时,Win11和Ubuntu几乎没有区别; -
当工程较复杂时,Ubuntu下编译更快,大约能缩短22%的编译时间。考虑到本次实验是在虚拟机中运行的Ubuntu,而非实际操作系统,通常来说,实际操作系统性能会更好,所以,实际操作系统的Ubuntu下,Vivado编译时间可能能缩短25%甚至更多。
所以,如果在编译复杂工程时,选择Ubuntu提高编译速度。
特别说明:本文仅仅是说明Ubuntu下Vivado编译更快,但并不是推荐各位同学都去用Ubuntu来开发FPGA。相比较Win11,Ubuntu的稳定性和易用性还是要差一些,并且支持的软件数量也少很多。后续可能研究是否有两全其美的办法,即编译时用Ubuntu,调试或使用其他工具时用Windows。感兴趣的同学可以持续关注本博客。
四、测试工程分享
本系列文章的所有测试工程,如下图所示。

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