跳至正文

如何提高Vivado编译速度05–Ubuntu下的Vivado比Win11下的编译更快?

前言

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之前,需要特别设置虚拟机:

  1. 建议是拉到最大运行内存。Vivado最低内存建议是32G,低于32G时,Vivado易闪退

    AMD官网对于Vivado最低内存的建议:AMD Vivado™ Design Suite: Standard & Enterprise Edition–Memory Recommendations

    之前我和一个粉丝就因为虚拟机内存设置得不够大,然后在Ubuntu中运行Vivado就会闪退,这其实是Vivado本身对最小内存的要求导致的。

  1. 处理器也根据实际CPU拉满,像我这里CPU是16核32线程。image-20250626215749429

1.4 Ubuntu系统信息

1.5 其它实验条件

  1. 仍选取与前文相同的三个示例工程,再新增一个示例工程VCT(下文会介绍)
  2. Vivado版本为2024.2
  3. 最大线程32,使用线程32
  4. Ubuntu虚拟机运行时,尽量保证后台无其它软件
  5. 其它条件与前文相同

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%)

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

  1. 当工程比较简单时,Win11和Ubuntu几乎没有区别;
  2. 当工程较复杂时,Ubuntu下编译更快,大约能缩短22%的编译时间。考虑到本次实验是在虚拟机中运行的Ubuntu,而非实际操作系统,通常来说,实际操作系统性能会更好,所以,实际操作系统的Ubuntu下,Vivado编译时间可能能缩短25%甚至更多。

所以,如果在编译复杂工程时,选择Ubuntu提高编译速度。

特别说明:本文仅仅是说明Ubuntu下Vivado编译更快,但并不是推荐各位同学都去用Ubuntu来开发FPGA。相比较Win11,Ubuntu的稳定性和易用性还是要差一些,并且支持的软件数量也少很多。后续可能研究是否有两全其美的办法,即编译时用Ubuntu,调试或使用其他工具时用Windows。感兴趣的同学可以持续关注本博客。

四、测试工程分享

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

均通过网盘分享。

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

981520

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


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

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


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

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