2017.4 这个版本号,现在拿出来说多少有点"考古"的味道。但只要你还在带 FPGA 相关的课程实验、在维护一台跑了七八年的老设备,或者手上那块 Artix-7、Zynq-7000 的开发板配套资料写的就是这个版本,那 Vivado2017.4 就绕不过去。我自己前后装过不下十次,Windows 装过,Ubuntu 也装过,从当年的全新装机到后来的"高版本系统跑老软件",坑基本踩了个遍,所以这篇 Vivado2017.4 安装教程不打算只给你一份"下一步下一步"的流水账,而是把版本怎么选、包怎么验、盘怎么分、装完怎么收拾这一整条链路讲清楚。不管你是刚接触 FPGA 的新手,还是被某个老工程绑住手脚的老手,看完应该都能少折腾几个小时。下面从最容易被忽略的"为什么是这个版本"开始聊。
1. 版本选择之前,得先把这事想明白
1.1 为什么到现在还有人在用 2017.4
很多人第一次接触 FPGA 工具链,看到官网上一堆版本号会本能地选最新的,这思路在做纯软件的时候基本没错,但在 FPGA 这条线上未必成立。原因很实在:FPGA 项目从原理图、约束文件、IP 核配置到综合实现策略,几乎每个环节都被工具版本"腌"过一遍。教材、实验指导书、开源工程里带的工程文件,很多是 2017.x 时代留下的,你拿 2020 以后的版本打开,工具会弹一堆升级提示,IP 核要重新生成,约束语法可能报 warning,最后时序结果跟书上对不上,新手根本分不清是自己写错了还是工具版本变了。
另一个现实原因是器件支持。2017.4 覆盖了 7 系列和 UltraScale 系列的主流器件,而大量教学板、入门板用的正是 Artix-7 和 Zynq-7000。这些芯片到现在依然在出货,学校实验室的板子更是换不动。工具链只要够用,没人愿意为了"用新版本"去重买板子。
还有一个很微妙的点:2017.4 是最后一个把 SDK(软件开发套件)和 Vivado 打包在同一个安装器里的版本之一,Zynq 的裸机开发和 Linux 部分都在里面,装一次全齐。后面版本拆出去变成 Vitis,流程变化不小,很多教程对不上号。
提示:如果你手上的板子是近三年新出的 UltraScale+ 或者 Versal 器件,别硬上 2017.4,这些器件在这个版本里根本没有对应的器件库,装了也用不了。
1.2 装之前先算清楚磁盘这笔账
这是新手最容易翻车的地方。Vivado 不是那种装完两三 G 的软件,它是真的占地方,而且不同版本选项差距极大。我见过有人笔记本 C 盘剩 30G 就直接开装,结果装到一半磁盘满了,安装器报错退出,还得清理残留重新来。
大致估算如下,这是我在几台机器上实测后的数字:
| 安装版本 | 包含内容 | 安装后占用 | 安装过程临时占用 |
|---|---|---|---|
| Vivado HL WebPACK | 免费器件子集 + SDK | 约 18-22 GB | 额外 5-8 GB |
| Vivado HL Design Edition | 部分器件 | 约 25-30 GB | 额外 8-12 GB |
| Vivado System Edition | 全器件 + 全套工具 | 约 45-55 GB | 额外 15-20 GB |
注意最右列。安装器在展开文件的时候会先在临时目录解压,装完才清理。也就是说你至少要准备"安装后占用 + 临时占用"之和的空间,而且临时目录如果和安装目录在同一个盘,这个盘的压力更大。
1.3 内存、CPU 和那些被忽视的软性要求
内存这块,官方给的推荐值偏保守。我的经验是:只跑综合实现、不碰大规模 UltraScale 工程,8GB 能活但很难受,16GB 是舒适线。原因在于 Vivado 的实现阶段是典型的多线程吃内存大户,一个中等规模的 Artix-7 工程加上在线调试逻辑,峰值内存吃到 4-6GB 很常见,系统再占一部分,8GB 机器就开始频繁换页,你的综合时间会被拉长好几倍。
CPU 方面,核心数比主频更重要。综合和实现阶段的布线算法可以并行,四核八线程和八核十六线程的差距在大型工程上非常明显。单核性能只在 Elaboration 之类串行阶段起决定作用。
还有几个容易被忽略的点:显示器分辨率低于 1920×1080 的时候,Vivado 的某些对话框会被挤到屏幕外,按钮点不到,这不是 bug。另外 Windows 的缩放比例如果设成 150% 以上,老版本工具对高 DPI 支持不好,字体可能糊成一团,建议在兼容性设置里把缩放行为改成"由应用程序控制"。
2. 系统环境准备与安装包获取
2.1 Windows 还是 Linux,这不是玄学问题
两条路都走得通,但适用场景不一样。Windows 的优势在于上手快、驱动装得省心、和 Office 文档配合方便,教学场景基本都是 Windows。Linux 的优势在编译效率、脚本化流程、以及做嵌入式 Linux 开发时的天然契合,另外长时间跑大批量综合任务更稳,不会因为系统更新弹窗打断。
但要注意 2017.4 这个版本对 Linux 发行版是有明确要求的,官方支持列表大致是:Red Hat Enterprise Linux 6.6 到 7.4、SUSE Linux Enterprise 11.4 和 12.3、Ubuntu 16.04.3 LTS、CentOS 7.2 到 7.4。你拿 Ubuntu 20.04 或者 22.04 去装,大概率能装上,但启动时会因为缺少老版本的共享库而报错,需要手动补包。这一点我在第 4 章会具体给解决方案。
Windows 这边,2017.4 支持 Windows 7 SP1 64 位和 Windows 10 64 位。Windows 11 没有在官方列表里,实测能装能跑,但驱动签名和安装器权限会有些小麻烦。
提示:如果你只是想跑个课程实验、做完就删,装 Windows 版本,省事。如果你打算长期用、要跑批量脚本、要做 Zynq 的 Linux 侧开发,直接上 Ubuntu 16.04 或者 CentOS 7,后面会省很多时间。
2.2 下载渠道与安装介质的选择
安装介质有两种形态,一种是在线安装器,体积小,但安装过程中要持续联网拉取器件数据;另一种是单文件完整包,体积巨大,但下载完之后断网也能装。我强烈建议用完整包,理由有三条:一是网络中断导致安装失败是很常见的事,重来一次代价太大;二是完整包可以做 MD5 校验,能确认文件没损坏;三是完整包可以拷到 U 盘、移动硬盘上,给实验室多台机器循环使用,这在教学环境里非常实用。
完整包在官方归档页面找历史版本就能拿到,文件名里会带版本号和日期编码。Windows 和 Linux 是分开的两个包,看你自己的系统选,别下错。
下载完之后务必校验。这一步很多人跳过,但压缩包动辄十几二十 G,传输过程中出错概率不低。Windows 下可以用自带命令算哈希:
certutil -hashfile Xilinx_Vivado_SDK_2017.4_1216_1_Win64.zip MD5Linux 下更简单:
md5sum Xilinx_Vivado_SDK_2017.4_1216_1.tar.gz算出来的值跟页面上标注的一致,再往下走。不一致就重新下,别抱侥幸心理。
2.3 解压与路径规划里的三个坑
第一个坑是路径长度。Windows 有 260 字符的路径限制,而这个安装包里嵌套层级很深,如果你把压缩包解压到"桌面\新建文件夹\下载\FPGA工具\Vivado"这种地方,解压到一半就会报路径过长而失败。我的做法是直接在盘根目录建一个短名字的目录,比如D:\xsetup,把包放进去解压。
第二个坑是路径里的中文和空格。安装路径不要出现中文、空格、括号、& 符号。有些人喜欢装到C:\Program Files\Xilinx,这个路径里有空格,虽然主流程能跑,但第三方脚本、Makefile、Tcl 脚本在处理带空格的路径时经常出问题,尤其是后面你要集成一些开源工具链的时候。直接用D:\Xilinx或者C:\Xilinx最省心。
第三个坑是 Linux 下的文件系统。安装目录必须是 Linux 原生文件系统,比如 ext4。挂载到 NTFS 或者 exFAT 分区上装,权限位会出问题,安装器会直接拒绝。同理,如果你的 HOME 目录是网络挂载的,临时文件读写可能异常,建议用本地用户目录。
3. 安装过程逐环节实录
3.1 启动安装器与首屏选项
Windows 下解压完成后,在解压目录里找到xsetup.exe,右键选择以管理员身份运行。这一步别偷懒,普通权限运行会在写驱动和注册表的时候失败。
Linux 下先给执行权限:
chmod +x xsetup ./xsetup如果是在没有图形界面的服务器上装,可以走静默模式,先生成配置模板:
./xsetup -b ConfigGen它会引导你选版本、选器件、选路径,最后在~/.Xilinx/下生成一个install_config.txt。你把这个文件改好,然后执行:
./xsetup -b Install -c ~/.Xilinx/install_config.txt静默安装的好处是全程无人值守,装的时候可以去干别的,而且配置文件留着,下次批量部署直接复用。
提示:静默安装的日志会写在
~/.Xilinx/xinstall/目录下,安装过程中如果卡住,第一时间去看这个日志,比盯着黑屏猜有用得多。
3.2 选择版本:WebPACK 够不够用
首屏之后是选安装版本,这是整个流程里最关键的一个决策点。三个选项的核心差异在于授权器件范围和是否包含嵌入式开发组件。
WebPACK 是免费的,覆盖的器件子集对绝大多数入门和教学场景完全够用。它支持的典型器件包括:Spartan-7 全系、Artix-7 全系、Kintex-7 的部分型号(比如 70T、160T)、以及 Zynq-7000 系列的单核和双核部分型号。如果你用的是这些芯片,选 WebPACK 不但免费,安装体积也小一半以上。
Design Edition 和 System Edition 需要付费授权,覆盖全部器件,System Edition 还包含完整的嵌入式设计和部分高级综合能力。除非你确实要用 Virtex-7 或者大规模 Kintex,否则没必要。
我一般建议新手这么定:先确认自己板子上的芯片型号,去授权器件列表里对一下,如果在 WebPACK 范围内,直接选 WebPACK,装完立刻去申请免费授权,整个过程十几分钟。
3.3 器件选择与安装路径的讲究
选完版本之后会进入器件勾选界面。这里有个技巧:默认是全选的,但如果你明确知道自己只用某一两个系列的芯片,把不需要的取消勾选能显著减少安装体积和时间。比如只做 Artix-7 和 Zynq-7000,勾这两个系列,安装后体积能压到 12GB 左右。
但反过来说,如果你不确定以后会用到什么,或者这个安装是给实验室公用的,那就全勾上,别为了省那点空间给自己挖坑。后面再补装器件是要重跑安装器的,一样麻烦。
安装路径那一栏,我前面说过的原则要执行到底:短、纯英文、无空格。另外建议把安装目录和工程目录分开,最好放在不同的物理盘上。原因在于综合实现过程会产生大量中间文件,读写频繁,如果和工具本体抢同一块盘的 IO,整体速度会受影响。
3.4 安装过程的耗时与中途观察点
点下安装之后就是漫长的等待。我给几个实测参考值:SSD 上一块 Artix-7 加 Zynq 的 WebPACK 安装,大约 35 到 45 分钟;机械硬盘上装全器件的 System Edition,两小时以上很正常。这个时间主要花在解压和写小文件上,跟 CPU 关系不大,倒是跟硬盘的随机写入性能关系密切。
安装过程中有两个地方值得留意。一个是进度条长时间停在某个百分比不动,这不一定是死机,Vivado 安装器在某些阶段会去校验已写入的文件,磁盘繁忙时进度条会假死几分钟。判断是否真死的方法是看磁盘指示灯还在不在闪,以及日志文件有没有继续增长。
另一个是中途弹出的授权协议和"是否安装线缆驱动"的询问。线缆驱动建议勾上,装完就省得后面单独折腾。授权协议没什么可说的,勾同意往下走。
提示:安装期间把杀毒软件的实时防护暂时关掉,或者给安装目录和临时目录加白名单。Vivado 安装会写出海量的小文件,实时扫描会让安装时间翻倍,严重的情况下还会因为扫描锁文件导致安装失败。这一条我自己吃过两次亏,第二次是装到 80% 的时候报文件被占用。
3.5 收尾:授权申请与驱动配置
装完之后先别急着建工程,两件事要处理。
第一件是授权。WebPACK 的免费授权需要单独申请,拿到的是一个.lic后缀的授权文件。获取方式是通过官方渠道申请,填写基本信息后会收到邮件。拿到之后有两种加载方式:一种是在 Vivado 里通过 Help 菜单下的授权管理界面手动指定文件路径;另一种是直接把授权文件放到用户目录下的配置文件夹里,Linux 是~/.Xilinx/,Windows 是C:\Users\你的用户名\.Xilinx\,工具启动时会自动读取。
如果你有多台机器,可以用环境变量指定授权路径,比如设置XILINXD_LICENSE_FILE指向授权文件所在位置。这个方式在做批量部署的时候特别好用,不用每台机器手动点一遍。
第二件是线缆驱动。Windows 下可以在安装目录里找到驱动安装程序,路径层级大致是Vivado\2017.4\data\xicom\cable_drivers\nt64\,运行里面的安装程序,按提示装完重启。Linux 下对应的目录里有安装脚本,需要 root 权限执行。如果你用的是第三方下载器,可能还需要另外装厂商提供的驱动,这个要看板子说明书。
4. 常见报错与排查技巧实录
4.1 安装阶段就卡住的问题
安装阶段出问题,八成跟磁盘权限、路径、杀毒软件有关。最常见的几个现象和对应处理方式,我整理成了一张表,出问题的时候可以对照着查。
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 安装器双击没反应 | 权限不足 / 安装包未完整解压 | 用管理员身份运行;确认解压目录文件数量完整 |
| 解压时报路径过长 | Windows 260 字符限制 | 解压到盘根目录的短路径下 |
| 装到某个百分比卡死 | 杀毒软件扫描锁文件 | 关闭实时防护或加白名单后重装 |
| 报磁盘空间不足 | 临时空间未预留 | 清理临时目录,确认目标盘剩余空间大于两倍安装体积 |
| Linux 下提示文件系统不支持 | 安装在非原生文件系统 | 换到 ext4 分区 |
| 安装过程中断后重装报错 | 残留配置未清理 | 删除用户目录下的安装配置目录后重来 |
这里特别说一下最后一条。Vivado 的安装器会在用户目录下记录安装状态,中途失败之后如果直接重装,有时候会读到过期的状态信息而报出莫名其妙的错误。正确做法是先清掉~/.Xilinx/下的安装配置,再重新运行安装器。
4.2 装完之后启动不了或功能异常
这类问题在 Linux 上尤其多,因为高版本发行版和 2017.4 之间的库差异很明显。典型报错是启动时提示找不到某个共享库,比如libtinfo.so.5或者libncurses.so.5。原因在于新发行版已经把这些库升级到了 6.x 版本,而 2017.4 编译时链接的是 5.x。
解决办法是先尝试安装兼容包:
sudo apt-get install libtinfo5 libncurses5 libstdc++6如果发行版的软件源里已经找不到这些包了,就只能手动做软链接把 6.x 指向 5.x,或者从旧版本的安装包里提取对应的库文件放到工具自己的库目录下。软链接这种方式属于权宜之计,能解决启动问题,但个别功能模块仍可能异常,长期使用建议还是老实装一个官方支持的发行版。
另一个常见现象是启动后界面显示错乱或者菜单点不开。这通常跟显卡驱动和桌面环境有关。可以尝试在启动命令后加参数关闭硬件加速,或者在虚拟机里运行时把显存调大一点。
还有一类是编译阶段的报错,比如综合时报找不到某个 IP 核的定义文件。这十有八九是因为工程是从别的机器上拷过来的,路径变了,IP 核的缓存目录对不上。处理方式是重新生成 IP 输出产物,或者干脆删掉工程目录里的缓存文件夹让它重新生成一遍。
4.3 线缆识别不到,下载器连不上
这大概是新手最抓狂的问题:程序综合通过了,实现也过了,生成比特流了,结果一下载就提示没有检测到硬件。
排查顺序建议是这样的。先看设备管理器或者系统日志里有没有识别到 USB 设备。如果系统层面都看不到,那问题在物理层:换根线、换 USB 口、换台电脑试试。如果系统能看到设备但工具里显示不出来,那就是驱动问题,重装线缆驱动,注意要以管理员权限运行,装完重启。
Linux 下还有一层权限问题。普通用户默认没有访问 USB 设备的权限,需要配置 udev 规则,把对应的设备节点权限放开。工具安装目录里通常会附带一份规则文件,把它拷到系统的 udev 规则目录下,重新加载规则再插拔设备就行。
提示:一个很隐蔽的坑是 USB Hub。有些便宜的 Hub 供电不足,下载器插上去能被识别但一进入下载就掉线,表现是下载到一半报通信错误。遇到这种"时好时坏"的情况,先把下载器直接插到主板后置 USB 口上试试。
5. 装完之后立刻要做的几件事
5.1 让命令行也能用起来
图形界面平时够用,但一旦你要跑批量任务、做持续集成、或者远程 ssh 到服务器上操作,就必须会命令行。装完的第一件事是确认命令行可用,在终端里执行:
vivado -version能打印出版本信息就说明环境变量配好了。如果提示命令未找到,Linux 下需要手动把安装目录下的bin加到 PATH 里,写进 shell 配置文件就行:
echo 'export PATH=/opt/Xilinx/Vivado/2017.4/bin:$PATH' >> ~/.bashrc source ~/.bashrcWindows 下则是通过系统环境变量界面添加,或者在安装时勾选创建桌面快捷方式和添加环境变量。
命令行模式下有两个常用姿势值得记住。一个是 Tcl 模式,适合跑脚本:
vivado -mode tcl -nolog -nojournal-nolog和-nojournal是关掉日志和日志文件生成,跑批量脚本的时候很干净,不会在目录里堆一堆文件。另一个是批处理模式,适合在脚本里调:
vivado -mode batch -source build.tcl这套流程写顺了之后,从一个源码目录生成比特流可以变成一行命令的事,比在图形界面里点十几下鼠标高效得多。
5.2 给安装目录做个快照
这一步很多人不做,但真的能救命。Vivado 装好之后是一个相对干净的状态,把它打包或者做成虚拟机快照,以后无论你是误删了文件、装插件装崩了、还是被某个操作搞乱了配置,都能几分钟回到干净状态,不用重装两小时。
虚拟机用户直接用快照功能最方便。物理机用户可以用打包工具把安装目录压缩归档,虽然占空间,但比重新装省时间。如果磁盘紧张,至少把"能正常跑通一个完整工程"这个状态记录下来,写清楚用了哪个版本的授权文件、装过哪些驱动,出问题的时候能快速复现。
刚装完的这几个小时是状态最好的时候,趁这个时候把快照做了,比事后补救强得多。
5.3 用一个最小工程验证整条链路
环境配好了不等于环境是对的,必须跑通一个完整的流程才算数。我的习惯是建一个最小的测试工程:一个顶层模块,一个几十行的计数器,一个 LED 输出,加一个约束文件,然后走完综合、实现、生成比特流、下载这一整套。
这个测试的价值在于它把工具链的每一个环节都串了一遍。综合能过说明代码解析没问题,实现能过说明时序约束和器件选择没问题,生成比特流能过说明授权有效,下载能过说明驱动和硬件连接没问题。任何一环出问题都会在这里暴露出来,而不是等到你做了一个复杂工程、写了一千行代码之后才发现某个基础配置是错的。
测试的时候故意看一眼实现后的时序报告和资源占用报告,熟悉一下报告的格式和关键指标。这两份报告以后你会看无数遍,早点建立对它们的直觉没坏处。
我个人在实际操作中的体会是,装工具这件事看起来是纯粹的重复劳动,但真正拉开差距的是"装完之后的那半天"。同样装一个 Vivado2017.4,有人装完就开始用,遇到问题现查;有人装完花半小时做快照、配环境变量、跑最小验证、记下授权文件位置,后面一年都不会再被环境问题打断。这两种人在半年之后的工作效率差距会非常明显。
另外分享一个小技巧:把你常用的 Tcl 初始化命令写进用户目录下的初始化脚本,工具每次启动会自动加载。比如固定工作目录、设置默认的仿真器、加载常用路径,这些小事积累起来,每天能省下不少点击。这个脚本的位置在用户配置目录下,文件名是固定的,具体路径可以查工具文档,写完重启一次就能生效。以后换了新版本工具,把这个脚本拷过去,习惯就跟着走了。