1. 为什么 2019.2 这个"老版本"至今还有人抢着装
如果你最近刚入手一块 FPGA 开发板,兴冲冲打开厂商给的例程压缩包,结果发现工程文件后缀是.xpr,双击之后弹出一句"此工程由更高版本创建"或者干脆打不开——恭喜你,你大概率撞上了 Vivado 的版本墙。Xilinx(现在叫 AMD 了,但老工程师还是习惯叫 Xilinx)的 Vivado 有个非常"硬"的规矩:高版本能打开低版本工程,低版本打不开高版本工程。而 2019.2 这个版本,恰好卡在一个非常微妙的位置上。
我这些年帮人远程装过不下几十次 Vivado,从 2015.4 到 2023.x 都碰过。2019.2 是被问得最多的一个版本,没有之一。原因其实很实在:大量高校教材、培训班课件、开源项目(尤其是国内各种"FPGA 项目实战"教程)都是基于 2019.2 录制的;很多公司的老项目也锁死在这个版本上,因为升级一次 Vivado 意味着要重新验证整个工程的时序收敛情况,没人愿意为了一个新版本去冒这个险。再加上 2019.2 对 Windows 10 的兼容性已经相当成熟,不像 2015.4 那样动不动就闪退,也不像 2020 之后的版本对电脑配置要求那么夸张。
所以这篇东西就是写给三类人的:第一类是刚入门 FPGA、跟着教程走结果卡在装软件这一步的新手;第二类是换了电脑或者重装系统,需要把老环境重新搭起来的老手;第三类是帮别人装、自己其实不太熟 Vivado 的"技术支持型"选手。我会把整个安装过程拆到最细,包括那些官方文档里不会写、但实际装的时候一定会遇到的坑。
先说一个反直觉的结论:Vivado 安装失败,90% 不是安装包的问题,而是路径、权限和杀毒软件的问题。很多人一装不上就怀疑下载的包损坏了,重新下了一遍又一遍,其实方向完全错了。后面我会专门用一章来讲这个。
2. 装之前必须搞清楚的几件事:版本、组件与磁盘账
2.1 2019.2 到底有哪些版本,别下错了
Vivado 2019.2 在官方发布时,按"功能完整度"分了好几个档,很多人不知道这一点,随便下了一个,结果发现自己要用的器件不支持。常见的几个版本区别如下:
| 版本类型 | 包含内容 | 适用人群 | 体积量级 |
|---|---|---|---|
| Vivado HL WebPACK | 免费,支持部分中小规模器件 | 学生、爱好者、入门 | 约 20-30 GB |
| Vivado HL Design Edition | 付费,支持更多器件 | 中小型项目开发 | 约 40 GB+ |
| Vivado HL System Edition | 付费,含 SDK、HLS 等全套 | 完整 SoC 开发 | 约 50 GB+ |
| Vivado SDx / 其他套件 | 面向特定流程 | 特定需求 | 视情况 |
对绝大多数入门和教学场景来说,WebPACK 版本就够了。它免费,而且支持 Artix-7、Spartan-7、部分 Zynq-7000 等常见器件——你在淘宝上买的那些几百块的开发板,芯片基本都在这个范围内。但要注意,WebPACK 对 Kintex UltraScale 这类高端器件是不支持的,如果你手上有这类板子,就得用完整版。
提示:判断自己的芯片支不支持 WebPACK,最直接的办法是去查官方器件支持列表,或者干脆装完整版省心。但完整版体积大、安装慢,对硬盘是实打实的考验。
2.2 磁盘空间这笔账,得提前算清楚
这是新手最容易翻车的地方。很多人看安装包只有几十 MB(那只是个下载器),就以为装完也没多大,结果装到一半提示磁盘空间不足,前功尽弃。
实际情况是这样的:Vivado 2019.2 完整安装后,占用空间在 30 GB 到 50 GB 之间,取决于你选了多少器件库。而且安装过程中,安装程序会先解压临时文件,这个临时文件可能又要占十几 GB。所以我的建议是:
- 系统盘(C 盘)至少留出 20 GB 给安装程序做临时空间,哪怕你最终装到别的盘;
- 目标安装盘至少留出 60 GB 空闲空间,给后续的工程文件、综合缓存留余地;
- 如果你还要装 SDK(2019.2 时代 SDK 还是独立组件),再额外加 10 GB。
我见过太多人 C 盘只剩 5 GB 就开始装,装到 60% 报错,然后一脸懵。这不是软件的问题,是账没算明白。
2.3 操作系统与硬件的最低门槛
2019.2 官方支持 Windows 7 SP1、Windows 10(64 位)、部分 Linux 发行版。必须是 64 位系统,32 位想都别想。内存方面,官方说最低 4 GB,但那是"能启动"的标准,实际综合一个中等规模的工程,8 GB 是底线,16 GB 才舒服。综合(Synthesis)和实现(Implementation)这两个阶段是吃内存大户,内存不够会直接卡死或者报 out of memory。
另外提醒一句:别在虚拟机里装 Vivado 做正经开发。虚拟机跑 Vivado 又慢又容易出各种玄学问题,尤其是 USB 下载器(比如 Digilent 的 JTAG)在虚拟机里经常识别不到。真要在 Linux 下开发,装双系统或者用物理机。
3. 安装包从哪来,以及下载环节的隐藏陷阱
3.1 官方渠道与"附安装包"的现实
正规做法当然是去 AMD/Xilinx 官网下载。你需要注册一个账号,然后在下载页面找到 2019.2 版本。官网提供的是Web Installer(网络安装器),体积很小,但安装过程中要持续联网下载,网速不好的话能装一整天,而且中途断网就得重来。
所以现实中,很多人会选择用离线完整安装包(Full Installer)。这个包通常是一个几 GB 到十几 GB 的压缩文件,解压后运行里面的安装程序,全程不需要联网。这也是各种"附安装包"教程里给的东西。离线包的好处是稳定、可重复使用、不怕断网;坏处是来源要可靠,否则可能缺文件或者被篡改。
注意:无论从哪里拿到安装包,装之前一定要核对文件完整性。离线包解压后,根目录通常有一个
xsetup.exe(Windows)或xsetup(Linux),以及一堆数据文件夹。如果解压报错,或者文件数量明显不对,别硬装,重新弄一份。
3.2 解压这一步就能劝退一批人
离线包解压是个体力活。十几 GB 的压缩包,解压出来可能三四十 GB,而且里面是成千上万个小文件。这里有几个实操要点:
- 解压路径不要有中文、不要有空格。这是铁律。
D:\FPGA\Vivado2019.2这种路径是安全的,D:\我的软件\Vivado 2019.2这种就等着出问题吧。Vivado 的安装脚本和一些内部工具对中文路径和空格的处理很糟糕,轻则报错,重则装完打不开。 - 用靠谱的解压工具。7-Zip 或者 WinRAR 都行,但别用系统自带的解压,遇到大文件容易出错。
- 解压目标盘要有足够空间,前面说的 60 GB 就是给这一步和后续安装留的。
我个人的习惯是,专门建一个目录比如D:\Xilinx_Install,把安装包和解压内容都放这里,路径短、纯英文、无空格,省心。
4. 手把手安装流程:从 xsetup 到第一个工程
4.1 启动安装程序与权限问题
进入解压后的目录,找到xsetup.exe,右键,选择"以管理员身份运行"。这一步非常关键。不以管理员身份运行,安装程序在写注册表、创建开始菜单项、配置环境变量时可能失败,而且失败得很隐蔽——装完了看着像成功,实际用的时候各种找不到器件。
启动后,如果杀毒软件弹窗拦截,一律选择允许。Windows Defender 有时候会把安装程序里的某些组件当成可疑行为,尤其是它在批量写文件的时候。最稳妥的做法是安装前临时关闭实时防护,装完再打开。
4.2 安装向导里的每一个选择
安装向导的界面看起来选项很多,其实关键的就那么几个:
第一步,欢迎界面,直接 Next。
第二步,选择安装类型。这里会让你选 Vivado HL WebPACK / Design Edition / System Edition。前面说过,入门选 WebPACK。如果你不确定,选 System Edition 最全,但体积最大。
第三步,选择要安装的组件和器件。这是最影响体积和安装时间的一步。你会看到一个树形列表,包含 Vivado、SDK、DocNav、各种器件家族(Artix-7、Kintex-7、Zynq-7000、UltraScale 等等)。
我的建议是:只勾选你实际会用到的器件家族。如果你手上是 Artix-7 的板子,就只勾 Artix-7,别全选。全选的话安装体积能翻倍,安装时间能多出一两个小时。但如果你不确定以后会用什么,或者想一劳永逸,那就全选,代价是硬盘和时间。
提示:SDK 是 2019.2 时代做 Zynq 软硬协同开发要用的,如果你只做纯 FPGA 逻辑开发(比如 UART、SPI、图像处理这些),可以不装 SDK,省不少空间。但如果你以后可能碰 Zynq,建议一起装上,免得回头再补装。
第四步,选择安装路径。再次强调,纯英文、无空格、无中文。比如D:\Xilinx\Vivado\2019.2。
第五步,确认并开始安装。这一步会列出你的所有选择,核对一遍,尤其是路径和器件。确认后点 Install,然后就是漫长的等待。
4.3 安装过程中的正常现象与异常现象
安装过程通常要 30 分钟到 2 小时不等,取决于你的硬盘速度(SSD 快很多)和选的组件多少。这期间:
- 进度条长时间不动是正常的,尤其是在解压和配置器件库的阶段,别急着以为卡死了。
- CPU 和磁盘占用会很高,这是正常的。
- 如果弹出某个组件安装失败的提示,先别慌,记下是哪个组件。有时候是某个可选组件(比如 DocNav 文档工具)失败,不影响核心功能。
真正需要警惕的异常是:安装程序直接闪退、报"无法写入文件"、报"路径无效"。这些基本都指向权限问题或路径问题,回到前面说的,检查是不是管理员运行、路径是不是纯英文。
4.4 安装完成后的第一件事:验证
装完之后,别急着建工程。先做两件事验证:
第一,打开 Vivado。开始菜单里应该能找到 Vivado 2019.2 的快捷方式。第一次启动会比较慢,因为它要初始化一些配置。能正常打开到主界面,说明基本没问题。
第二,检查器件支持。在 Vivado 里新建一个工程,走到选择器件的步骤,看看你需要的芯片型号在不在列表里。如果不在,说明你安装时没勾选对应的器件家族,需要重新运行安装程序补装。
我见过有人装完发现找不到自己的芯片,折腾半天以为是软件坏了,其实就是当初勾选器件时漏了。补装的方法很简单:重新运行xsetup.exe,它会检测到已有安装,让你选择"Add Design Tools or Devices",然后补勾就行,不用全部重装。
5. 那些官方文档不会告诉你的坑
5.1 杀毒软件:安装失败的隐形元凶
这个必须单独拎出来说。Vivado 安装过程中会生成大量可执行文件和脚本,某些杀毒软件(尤其是国产的某些全家桶)会把这些行为判定为"批量释放可执行文件",然后默默拦截或者删除部分文件。结果就是安装"成功"了,但运行时报各种莫名其妙的错误,比如找不到某个 DLL、某个工具无法启动。
排查方法:如果安装后出现奇怪的运行错误,先看杀毒软件的隔离区,看有没有 Vivado 相关文件被隔离。有的话恢复并加白名单,然后重装。
预防方法:安装前关闭实时防护,安装目录加入杀毒软件白名单。
5.2 路径里的中文和空格:一个字符引发的血案
前面反复强调,这里再展开说一下为什么。Vivado 底层调用了一些基于 Tcl 的脚本和命令行工具,这些工具在处理路径时,对非 ASCII 字符和空格的支持并不完善。一个中文路径可能导致:
- 综合时找不到源文件;
- 生成比特流时路径解析错误;
- IP 核生成失败;
- 仿真时找不到编译好的库。
而且这些错误往往不会直接告诉你"路径有问题",而是报一些看起来毫不相关的错误,让你往错误的方向排查。所以,从安装到建工程,全程用纯英文无空格路径,这是最省心的做法。
5.3 环境变量与多版本共存
如果你电脑上已经装了别的版本的 Vivado(比如 2015.4 或者 2020.x),再装 2019.2 时要注意环境变量的问题。Vivado 安装时会在系统 PATH 里加东西,多个版本可能冲突。
正确的做法是:不要依赖系统 PATH 里的 Vivado,而是通过开始菜单的快捷方式或者专门的批处理脚本来启动特定版本。每个版本的快捷方式里其实都设置了对应的环境,用快捷方式启动最稳妥。
如果你需要在命令行里用 Vivado(比如跑自动化脚本),可以自己写一个.bat文件,在里面先设置好该版本的环境变量,再调用vivado.bat。这样不同版本互不干扰。
5.4 关于"卸载旧版本"这件事
热词里出现了"xilinx sdk 2015.4 卸载"这样的搜索,说明很多人遇到过旧版本卸载不干净的问题。Vivado/SDK 的卸载确实比较麻烦,因为它装的东西分散在安装目录、用户目录(比如%APPDATA%)、注册表等多个地方。
如果你要彻底卸载旧版本再装 2019.2,建议:
- 先用官方卸载程序卸载;
- 手动删除残留的安装目录;
- 清理用户目录下的
.Xilinx文件夹(在C:\Users\你的用户名\下); - 检查环境变量,删掉指向旧版本的条目。
不清理干净的话,新版本安装后可能出现版本混乱的问题。
6. 装完之后:跑通第一个工程才算真的成功
6.1 用最简单的工程验证工具链
安装成功不等于工具链可用。最可靠的验证方式是跑一个最小工程。对于 FPGA 来说,最简单的验证就是点灯或者一个简单的组合逻辑。但如果你想验证得更全面一点,可以做一个带仿真的小工程,比如一个 UART 接收模块的仿真——这也是热词里"fpga 实现 uart_rx 接收仿真"对应的场景。
流程大致是:
- 新建工程,选对你的芯片型号;
- 添加一个 Verilog 源文件,写一个简单的模块(比如分频器或者 UART 接收);
- 添加一个 testbench,写激励;
- 运行行为仿真(Behavioral Simulation),看波形是否正确;
- 如果板子在手,跑一遍综合、实现、生成比特流,下载验证。
这一套走下来,如果每一步都顺利,说明你的 Vivado 安装是完整可用的。如果中间某一步报错,根据错误信息定位问题,通常能反推出是安装缺组件还是环境有问题。
6.2 综合和实现阶段的常见报错
新手在这个阶段最容易遇到两类问题:
第一类是器件不匹配。工程里选的芯片型号和实际板子不一致,综合能过,但生成比特流或者下载时会报错。解决方法是核对板子原理图上的芯片丝印,在 Vivado 里选对型号。
第二类是约束文件问题。没有约束文件(XDC)或者约束写错,会导致引脚分配错误、时序不满足。热词里"xilinx iddr rgmii timing constraint"这种就是典型的约束问题。新手阶段先把引脚约束写对,时序约束可以后面慢慢学。
6.3 关于仿真库的编译
如果你要用 Vivado 自带的仿真器(XSim)做仿真,通常不需要额外编译库。但如果你要用 ModelSim 之类的第三方仿真器,就需要编译 Xilinx 的仿真库。这个过程在 2019.2 里可以通过 GUI 完成,也可以在命令行里做。编译一次要花不少时间,但只需要做一次,之后所有工程都能用。
提示:仿真库编译时,同样要注意路径问题,编译输出目录也用纯英文路径。
7. 一些能让你少走弯路的经验
装 Vivado 这件事,说难不难,说简单也不简单。它不像装个普通软件那样一路 Next 就行,中间有很多细节会影响最终能不能用。我把这些年踩过的坑和总结的经验再集中说几条:
关于安装包,能用离线完整包就用离线包,网络安装器看着省事,实际遇到网络波动能让你崩溃。离线包拿到手先验证完整性,别急着装。
关于路径,这是出现频率最高的问题来源。从安装包解压、到安装目录、到工程目录、到仿真库目录,全程纯英文无空格。这一条能帮你避开至少一半的玄学问题。
关于杀毒软件,安装前关掉,安装目录加白名单。装完出现奇怪错误,先查隔离区。
关于磁盘,提前算好账,C 盘留临时空间,目标盘留足余量。别等装到一半才发现空间不够。
关于器件选择,只装自己需要的,不确定就全装。装完发现缺器件,可以补装,不用全部重来。
关于验证,装完一定要跑一个完整的小工程,从仿真到比特流走一遍。能跑通,才算真的装好了。
最后说一句,2019.2 虽然是个老版本,但它的稳定性在众多版本里是排得上号的。很多人装了新版本又退回来,就是因为老版本"不作妖"。把环境搭好之后,你就可以安心去折腾 UART、SPI、图像处理、相控阵相位控制这些真正有意思的东西了。工具只是工具,装好它,然后忘掉它,把精力放在设计和调试上,这才是正经事。