Linux安装Vivado和Vitis
本文介绍了如何在Linux上安装FPGA开发常用软件Vivado和Vitis。
为什么选择Linux作为开发环境
首先,Vitis需要Petalinux工具构建自定义Linux镜像,而Petalinux生成的部分文件格式与Windows系统不兼容(文件名大小写问题),导致Vitis和Petalinux必须同时运行在Linux系统中。其次,Vivado在Linux上的编译速度更快1。
选择哪个Linux发行版
AMD官网列出了Vivado支持的操作系统2,其中包括了大家熟悉的Windows和Ubuntu。但同时也要注意,它支持的Ubuntu版本也非常有限,比如不支持Ubuntu 25.04。
如果你使用其他的Ubuntu版本,或者其他的Linux发行版(例如Arch Linux),别着急安装新系统,只需要一点修改便能正常使用所有功能。
安装流程
这里给出Vitis + Vivado的安装流程。如果你在安装过程中出现问题,请参考后文的常见问题。
如果你使用Arch Linux,而且想安装最新的Vivado和Vitis,请查看这个yay包,注意你仍然需要提前下载安装包3。
下载安装包
根据你所需要的版本,在AMD官网下载对应的安装包,名称为Vivado HLx <year>.<version>: All OS installer Single-File Download。
以批处理模式启动安装程序
这里的安装流程参考了AMD论坛上的这篇文章。
如果您使用虚拟机或服务器,可能需要scp命令将本地下载的压缩包上传到Linux中。
下载好的压缩包需要先解压,以2020.1版本的压缩包为例:
1
$ tar -xvzf Xilinx_Unified_2020.1_0602_1208.tar.gz
注意解压之后删除Xilinx_Unified_2020.1_0602_1208.tar.gz,否则可能会显示磁盘空间不足。安装过程需要100GB的空间。
1
2
$ rm Xilinx_Unified_2020.1_0602_1208.tar.gz
$ cd Xilinx_Unified_2020.1_0602_1208/
使用刚才下载安装包时所用的AMD帐户生成身份验证令牌,输入账户邮箱和密码:
1
2
3
4
5
6
7
8
9
10
11
12
13
$ ./xsetup -b AuthTokenGen
Running in batch mode...
Copyright (c) 1986-2025 Xilinx, Inc. All rights reserved.
INFO : Log file location - /home/yutong/.Xilinx/xinstall/xinstall_1760787987002.log
INFO : Log file location - /home/yutong/.Xilinx/xinstall/xinstall_1760787987002.log
INFO : Internet connection validated, can connect to internet.
INFO : In order to generate the authentication token please provide your Xilinx account User ID and password.
User ID:yvts@qq.com
Password:
INFO : Generating authentication token...
INFO : Saved authentication token file successfully, valid until 10/25/2025 07:48 PM
接着生成安装配置,注意安装Vitis默认包括安装Vivado:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ ./xsetup -b ConfigGen
Running in batch mode...
Copyright (c) 1986-2025 Xilinx, Inc. All rights reserved.
INFO : Log file location - /home/yutong/.Xilinx/xinstall/xinstall_1760789173614.log
Select a Product from the list:
1. Vitis
2. Vivado
3. On-Premises Install for Cloud Deployments
4. BootGen
5. Lab Edition
6. Hardware Server
7. Documentation Navigator (Standalone)
Please choose: 1
INFO : Config file available at /home/yutong/.Xilinx/install_config.txt. Please use -c <filename> to point to this install configuration.
现在可以安装了,你可以更改安装的路径--location,注意将user_name更改为实际的用户名:
1
sudo ./xsetup --batch Install --agree XilinxEULA,3rdPartyEULA,WebTalkTerms --location /opt/Xilinx/ --config "/home/_user_name_/.Xilinx/install_config.txt"
安装成功后,启动Vivado:
1
2
3
$ bash
$ source /opt/Xilinx/Vivado/2020.1/settings64.sh
$ vivado
卸载
之前我们将软件安装在了/opt/Xilinx目录下,以卸载Vivado_2020.1为例:
1
2
$ cd /opt/Xilinx/.xinstall/Vivado_2020.1
$ sudo ./xsetup -b Uninstall
快捷启动
下面我们制作启动Vivado/Vitis的桌面文件,这样我们就无需每次输入命令行,直接在搜索栏中即可打开Vivado/Vitis。
1
sudoedit /usr/local/bin/run-vivado
将以下内容粘贴至/usr/local/bin/run-vivado中:
1
2
3
4
#!/bin/bash
source /opt/Xilinx/Vivado/2020.1/settings64.sh
vivado &
在~/.local/share/application中新建一个文件:
1
vim ~/.local/share/applications/Vivado\ 2020.1.desktop
粘贴以下内容:
1
2
3
4
5
6
7
8
9
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon=/opt/Xilinx/Vivado/2020.1/doc/images/vivado_logo.ico
Name[en_US]=Vivado 2020.1
Exec=/usr/local/bin/run-vivado
Name=Vivado 2020.1
StartupNotify=true
同理,我们创建Vitis的桌面文件:
1
sudoedit /usr/local/bin/run-vitis
粘贴以下内容:
1
2
3
4
#!/bin/bash
source /opt/Xilinx/Vitis/2020.1/settings64.sh
vitis &
1
vim ~/.local/share/applications/Vitis \ 2020.1.desktop
1
2
3
4
5
6
7
8
9
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon=/opt/Xilinx/Vitis/2020.1/doc/images/ide_logo.ico
Name[en_US]=Vitis 2020.1
Exec=/usr/local/bin/run-vitis
Name=Vitis 2020.1
StartupNotify=true
常见问题
安装进度99%不退出
如果你输入Ctrl-C强制取消安装,会发现有这样几行输出:
1
2
3
######## Execution of Pre/Post Installation Tasks Failed ########
Warning: Xilinx software was installed successfully, but an unexpected status was returned from the following post installation task(s) application-specific initialization failed: couldn't load file "librdi_commontasks.so": Uninstalling /opt/Xilinx/Vivado/2020.1 (Done) ry
Uninstall completed successfully
这说明了系统缺少旧版本的 libtinfo.so.54。最简单的解决方法是创建一个符号链接。
先找到库路径:
1
2
3
4
$ find /usr -name "libtinfo.so*" 2>/dev/null
/usr/lib/libtinfo.so
/usr/lib/libtinfo.so.6
这里说明libtinfo.so.6在/usr/lib路径下。不同的操作系统输出会不一样。
根据libtinfo.so.6的路径,执行:
1
sudo ln -s <path-to-libtinfo.so.6>/libtinfo.so.6 <path-to-libtinfo.so.6>/libtinfo.so.5
然后重新执行安装。
Vivado:调整缩放率
启动 Vivado,然后通过Tools > Setting > Display > Scaling设置缩放率5。
Vitis:无法创建platform,显示please select a valid processor
安装xorg-xlsclients。
Vitis:暗黑模式显示异常
解决方案:不要使用暗黑模式的系统主题。
Vitis: Failed to generate IP
请参考这篇文章安装补丁。注意请在root身份下运行命令。
Vitis:Hardware Emulation failed
注意,以下解决方案未经证实,请谨慎参考。
2020.1版本的xsc命令有bug,无法正确读取arguments。如果Vitis中显示cannot find libdpi.so,请执行以下命令:
1
2
3
sudo cp /opt/Xilinx/Vivado/2020.1/bin/xsc /opt/Xilinx/Vivado/2020.1/bin/xsc.bak
sudo rm /opt/Xilinx/Vivado/2020.1/bin/xsc
sudoedit /opt/Xilinx/Vivado/2020.1/bin/xsc
将/opt/Xilinx/Vivado/2020.1/bin/xsc填充为以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env bash
# Wrapper for Vivado xsc on modern distros (Arch, Fedora, etc.)
# Detect real xsc binary inside Xilinx installation
REAL_XSC="/opt/Xilinx/Vivado/2020.1/bin/xsc"
# Rewrite --gcc_link_options so that multiple -L/-l args are passed as one string
args=()
while [[ $# -gt 0 ]]; do
case "$1" in
--gcc_link_options)
shift
quoted="$1"
# Collect following args until next option starts with -
while [[ $# -gt 1 && ! "$2" =~ ^- ]]; do
quoted+=" $2"
shift
done
args+=(--gcc_link_options "$quoted")
;;
*)
args+=("$1")
;;
esac
shift
done
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" PATH="/usr/bin:$PATH" exec "$REAL_XSC" "${args[@]}"
然后:
1
2
sudo chown -R <your-user-name>:<your-user-name> /opt/Xilinx/Vivado/2020.1/bin/xsc
sudo chmod 777 /opt/Xilinx/Vivado/2020.1/bin/xsc
参考文献
-
什么样的电脑编译Verilog快一些?https://www.zhihu.com/question/293015897 ↩︎
-
https://docs.amd.com/r/en-US/ug973-vivado-release-notes-install-license/Supported-Operating-Systems ↩︎
-
https://wiki.archlinux.org/title/Xilinx_Vivado#AUR_Package ↩︎
-
https://wiki.archlinux.org/title/Xilinx_Vivado#Missing_libtinfo.so.5_library ↩︎
-
https://wiki.archlinux.org/title/Xilinx_Vivado#Enable_display_scaling ↩︎