Xilinx Vivado
Arch Linux 并非 Vivado 官方支持的系统,但正如 Xilinx ISE WebPACK 一样,它的大部分功能可以通过一些“黑客”手段来使用。
安装
Xilinx Vivado 可以从其官方网站 [1] 下载。 建议下载 “Vivado HLx <year>.<version>: All OS installer Single-File Download” tarball,但请注意,下载文件很大(超过 70 GB),请耐心等待。更新 tarball 也可以下载并在以后安装。 也可以使用其他安装程序,但请先查看下面的故障排除部分。
AUR 软件包
可以使用 vivadoAUR 软件包来创建由 pacman 管理的 Vivado 安装。由于安装程序的下载被登录墙锁定,因此需要如上所述手动下载并将其放置在与 PKGBUILD 相同的目录中。该软件包仅构建最新的主要版本 (<year>.<version>),而不构建次要更新 (<year>.<version>.<update>); 如果需要这些更新,请改为手动安装 Vivado。
Digilent USB-JTAG 驱动
要从 Vivado 使用 Digilent Adept USB-JTAG 适配器(例如 ZedBoard 上的板载 JTAG 适配器),您需要安装 Digilent Adept Runtime。
请确保您已安装 fxloadAUR。
要安装 Digilent Adept Runtime,建议安装 digilent.adept.runtimeAUR。
此外,安装 digilent.adept.utilitiesAUR 可能有助于配置您的开发板。
技巧和诀窍
启用显示缩放
启动 Vivado,然后通过Tools > Setting > Display > Scaling设置缩放率。
禁用 WebTalk
免费的 WebPACK 许可证不允许您禁用此功能,该功能会在生成比特流时将使用情况数据上传到 Xilinx 的服务器,但是如果连接失败,综合 (synthesis) 仍然可以正常完成。 一个简单的方法是为 Vivado 工具设置一个无效的 HTTPS 代理,使其始终连接失败。
/opt/Xilinx/Vivado/<version>/bin/setupEnv.sh
... export HTTPS_PROXY=localhost
此方法不会污染您的环境,只会污染工具启动时配置的临时环境,因此不应破坏其他任何内容。
故障排除
参见 https://support.xilinx.com/s/article/76524?language=en_US
创建文件
/Xilinx_path/Vitis_HLS/yyyy.Q/bin/compat_firefox
#!/bin/sh unset LD_LIBRARY_PATH firefox $@
然后配置 Window > Preferences > Web Browser 中的脚本。
Vitis HLS 没有响应或只显示启动画面
当您运行 /Xilinx_path/Vitis_HLS/yyyy.Q/bin/vitis_hls
(Vitis_HLS 在 *.Desktop 文件中的路径) 时,您可能会得到
/Xilinx_path/Vitis_HLS/yyyy.Q/bin/vitis_hls
****** Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2021.2 (64-bit) **** SW Build 3367213 on Tue Oct 19 02:47:39 MDT 2021 **** IP Build 3369179 on Thu Oct 21 08:25:16 MDT 2021 ** Copyright 1986-2021 Xilinx, Inc. All Rights Reserved. source /opt/Xilinx/Vitis_HLS/2021.2/scripts/vitis_hls/hls.tcl -notrace INFO: [HLS 200-10] Running '/opt/Xilinx/Vitis_HLS/2021.2/bin/unwrapped/lnx64.o/vitis_hls' INFO: [HLS 200-10] For user 'username' on host 'hostname' (Linux_x86_64 version 5.14.16-arch1-1) on Sun Nov 07 21:57:50 CST 2021 INFO: [HLS 200-10] On os "Arch Linux" INFO: [HLS 200-10] In directory '$HOME' INFO: [HLS 200-10] Bringing up Vitis HLS GUI ...
然后它会卡在这里或直接退出。
要解决此问题,首先更改文件 /Xilinx_path/Vitis_HLS/yyyy.Q/common/scripts/autopilot_init.tcl
第 40 行
从
----%r&-'%rl%&n$<'v-=
到
----%r&-'%rl%&n$<'v->
然后添加
osgi.locking=none
到文件
/Xilinx_path/Vitis_HLS/yyyy.Q/lnx64/tools/eclipse/configuration/config.ini
综合 (Synthesis) 发生段错误
参见 https://support.xilinx.com/s/feed/0D52E00006hpUycSAE?language=en_US
您将需要重新编译 glibc (只需从 abs 获取 PKGBUILD) 并使用 --disable-lock-elision
。 不要修补系统 libc 在 /usr/lib
中的文件,而是将新编译的 libpthread-2.25.so
和 libc-2.25.so
复制到 /opt/Xilinx/Vivado/2016.4/ids_lite/ISE/lib/lin64
。 当 glibc 升级时,不要忘记重复此操作。
xsct, xsdb, xmd 和 tclsh 发生段错误
Xilinx Vivado 命令行工具 xsct, xsdb, xmd 和 tclsh 可能会崩溃,并显示类似于以下的错误消息
Segmentation fault (core dumped) "$RDI_BINROOT"/unwrapped/"$RDI_PLATFORM$RDI_OPT_EXT"/rlwrap -rc -f "$RDI_APPROOT"/scripts/xsdb/xsdb/cmdlist -H "$HOME"/.xsctcmdhistory "$RDI_BINROOT"/loader -exec rdi_xsct "${RDI_ARGS[@]}"
这是 Vivado 捆绑的 rlwrap 版本的问题,可能是由于 Arch Linux 中缺少旧版 vsyscall 模拟。 要解决此问题,可以完全删除 rlwrap (会丢失命令历史记录和自动完成功能),或者安装 rlwrap 并将受影响的命令启动脚本中 rlwrap 二进制文件的路径从
/opt/Xilinx/{Vivado,SDK}/YYYY.Q/bin/{xsct,xsdb,xmd,tclsh}
# Use rlwrap to invoke the tool "$RDI_BINROOT"/unwrapped/"$RDI_PLATFORM$RDI_OPT_EXT"/rlwrap ...
更改为以下内容
/opt/Xilinx/{Vivado,SDK}/YYYY.Q/bin/{xsct,xsdb,xmd,tclsh}
# Use rlwrap to invoke the tool /usr/bin/rlwrap ... # OR run the tool without rlwrap #"$RDI_BINROOT"/loader -exec rdi_{xsct,xsdb,xmd,tclsh} "${RDI_ARGS[@]}"
Vivado HLS 测试平台 (testbench) 错误与 GCC
Vivado 需要旧版本的 glibc (2.26)。
Xilinx 论坛 这个帖子 中提出的解决方案建议更新 Xilinx 提供的固定头文件。
运行
# /opt/Xilinx/Vivado/2018.1/lnx64/tools/gcc/libexec/gcc/x86_64-unknown-linux-gnu/4.6.3/install-tools/mkheaders /opt/Xilinx/Vivado/2018.1/lnx64/tools/gcc
从 2020.1 更新 Vivado 到 Vivado 2020.1.1
如果您的 2020.1 版本安装启动失败,并且需要以批处理模式安装,则您需要使用批处理模式进行更新
# ./xsetup -b Update
如果 Vivado 最初是由 root 用户安装的,则您需要以 root 用户身份启动更新。
在 Vivado 2021.2 中配置 IP 导致崩溃
参见 [2]
当使用 Vivado 2021.2 编辑 IP 时,Vivado 可能会崩溃并报告以下错误
hs_err_pid*.log
# # An unexpected error has occurred (11) # Stack: /opt/Xilinx/Vivado/2021.2/tps/lnx64/jre11.0.11_9/lib//server/libjvm.so(+0xbefecb) [0x7fd1e21efecb] /opt/Xilinx/Vivado/2021.2/tps/lnx64/jre11.0.11_9/lib//server/libjvm.so(JVM_handle_linux_signal+0xd1) [0x7fd1e21f6c81] /opt/Xilinx/Vivado/2021.2/tps/lnx64/jre11.0.11_9/lib//server/libjvm.so(+0xbead23) [0x7fd1e21ead23] /usr/lib/libc.so.6(+0x42560) [0x7fd246e38560] /opt/Xilinx/Vivado/2021.2/tps/lnx64/jre11.0.11_9/lib/libharfbuzz.so(+0x3574d) [0x7fd1bc03574d] /usr/lib/libharfbuzz.so.0(hb_font_funcs_set_glyph_shape_func+0x36) [0x7fd24503e886] /usr/lib/libharfbuzz.so.0(+0x9a802) [0x7fd2450ab802] /usr/lib/libharfbuzz.so.0(hb_ft_font_create+0x37) [0x7fd2450abcc7] /usr/lib/libfreetype.so.6(+0x5e2f0) [0x7fd2464912f0] /usr/lib/libfreetype.so.6(+0x6b7ad) [0x7fd24649e7ad] /usr/lib/libfreetype.so.6(FT_Load_Glyph+0x681) [0x7fd2464471a1] /opt/Xilinx/Vivado/2021.2/tps/lnx64/jre11.0.11_9/lib/libfontmanager.so(+0x7abf) [0x7fd1bc407abf] /opt/Xilinx/Vivado/2021.2/tps/lnx64/jre11.0.11_9/lib/libfontmanager.so(Java_sun_font_FreetypeFontScaler_getGlyphAdvanceNative+0x14) [0x7fd1bc4082b4] [0x7fd1c8e87710]
这是由于 Vivado 和系统版本的 harfbuzz 库之间存在冲突。
一种可能的解决方法是强制 Vivado 使用系统 libharfbuzz
,方法是重命名 .so
文件
# mv /opt/Xilinx/Vivado/2021.2/tps/lnx64/jre11.0.11_9/lib/libharfbuzz.so /opt/Xilinx/Vivado/2021.2/tps/lnx64/jre11.0.11_9/lib/libharfbuzz.so.bak
综合 (Synthesis) 在某些区域设置下失败
如果您的系统区域设置未使用点 .
作为十进制分隔符,而是使用逗号 ,
(例如 de_DE
),则综合 (synthesis) 可能会失败,并出现诸如 +
运算符类型错误之类的错误。
一种可能的解决方法是强制 Vivado 使用 en_US.UTF-8
作为数字的区域设置。 这可以通过附加以下内容轻松完成
export LC_NUMERIC=en_US.UTF-8
到 <your-vivado-installation-path>/bin/setupEnv.sh
。
字体忽略系统抗锯齿设置
使用 OpenJDK 11 并激活 Vivado 显示缩放后,菜单和其他 UI 元素字体可能会在不进行任何抗锯齿处理的情况下呈现,而与桌面环境设置无关。 这可以通过编辑 Vivado 启动脚本以将 awt.useSystemAAFontSettings=on
附加到 JVM 选项来解决。
假设 Vivado 安装在默认位置 /opt/Xilinx/Vivado/YYYY.Q
,其中 YYYY.Q
是版本 (即 2020.2),修改 vivado
以包含以下内容
/opt/Xilinx/Vivado/YYYY.Q/bin/vivado
... export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true" ...
空白/灰色窗口
参见 Java#灰色窗口、应用程序无法随 WM 调整大小、菜单立即关闭。
Vitis: 无法打开 libssl.so.10
在创建新平台组件时,cmake 错误
cmake: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory
sudo ln -sf /path/to/Vitis/2023.2/tps/lnx64/cmake-3.24.2/libs/Rhel/9/* /usr/lib
Vitis: 无法加载库: ... libswt-pi4-gtk.so ...
您运行 vitis
$ /tools/Xilinx/Vitis/2022.2/bin/vitis
您在此处收到错误消息
/home/<user>/.Xilinx/Vitis/2022.2/<a-long-numbers>.log
... no swt-pi4-gtk-4932r18 in java.library.path: [/tools/Xilinx/Vitis/2022.2/tps/lnx64/java-cef-95.0.4638.69/bin/lib/linux64, /tools/Xilinx/Vitis/2022.2/tps/lnx64/javafx-sdk-11.0.2/lib, /tools/Xilinx/Vitis/2022.2/lib/lnx64.o/Default, /tools/Xilinx/Vitis/2022.2/lib/lnx64.o, /tools/Xilinx/Vitis/2022.2/tps/lnx64/jre11.0.11_9/lib/, /tools/Xilinx/Vitis/2022.2/tps/lnx64/jre11.0.11_9/lib//server, /tools/Xilinx/Vitis/2022.2/lib/lnx64.o, /tools/Xilinx/Vitis/2022.2/lib/lnx64.o/Default, /tools/Xilinx/Vitis/2022.2/lib/lnx64.o, /tools/Xilinx/Vitis/2022.2/tps/lnx64/python-3.8.3/lib, /tools/Xilinx/Vitis/2022.2/aietools/lib/lnx64.o, /tools/Xilinx/Vitis/2022.2/bin/../lnx64/tools/dot/lib, /usr/java/packages/lib, /usr/lib64, /lib64, /lib, /usr/lib] no swt-pi4-gtk in java.library.path: [/tools/Xilinx/Vitis/2022.2/tps/lnx64/java-cef-95.0.4638.69/bin/lib/linux64, /tools/Xilinx/Vitis/2022.2/tps/lnx64/javafx-sdk-11.0.2/lib, /tools/Xilinx/Vitis/2022.2/lib/lnx64.o/Default, /tools/Xilinx/Vitis/2022.2/lib/lnx64.o, /tools/Xilinx/Vitis/2022.2/tps/lnx64/jre11.0.11_9/lib/, /tools/Xilinx/Vitis/2022.2/tps/lnx64/jre11.0.11_9/lib//server, /tools/Xilinx/Vitis/2022.2/lib/lnx64.o, /tools/Xilinx/Vitis/2022.2/lib/lnx64.o/Default, /tools/Xilinx/Vitis/2022.2/lib/lnx64.o, /tools/Xilinx/Vitis/2022.2/tps/lnx64/python-3.8.3/lib, /tools/Xilinx/Vitis/2022.2/aietools/lib/lnx64.o, /tools/Xilinx/Vitis/2022.2/bin/../lnx64/tools/dot/lib, /usr/java/packages/lib, /usr/lib64, /lib64, /lib, /usr/lib] Can't load library: /home/<user>/.swt/lib/linux/x86_64/libswt-pi4-gtk-4932r18.so Can't load library: /home/<user>/.swt/lib/linux/x86_64/libswt-pi4-gtk.so ...
此问题是由于 libstdc++.so.6
引起的。
确保您的计算机中已安装 libstdc++.so.6
$ find /usr/lib -iname 'libstdc++.so.6'
让我们修复它
# cd /tools/Xilinx/Vitis/2022.2/lib/lnx64.o/Default/ # mv libstdc++.so.6 libstdc++.so.6.bak # ln -sf /usr/lib/libstdc++.so.6 ./libstdc++.so
以上方法应该可以解决您运行 Vitis 时遇到的此问题。
自解压 Web 安装程序卡在 “正在生成已安装设备列表”
安装 ncurses5-compat-libsAUR。
LDAP 用户编译 Vitis 内核时发生段错误
症状:LDAP 用户遇到段错误,但本地用户没有。
使用 v++
编译 Vitis 内核时的示例错误
/opt/Xilinx/Vivado/2023.2/bin/rdiArgs.sh: line 369: ... Segmentation fault (core dumped) "$RDI_PROG" "$@" segfault in /opt/Xilinx/Vivado/2023.2/bin/unwrapped/lnx64.o/vivado -exec vivado -notrace -mode batch -source run_ippack.tcl, exiting... ERROR: [IMPL 213-28] Failed to generate IP. ... command 'ap_source' returned error code while executing "source vadd.tcl" ("uplevel" body line 1) invoked from within "uplevel \#0 [list source $tclfile] "
如果您从名称服务交换机配置文件中删除 ldap
,则症状消失,但是 LDAP 用户无法登录
/etc/nsswitch.conf
... passwd: files systemd [success=return] #ldap ...
解决方法是创建本地用户。
Vivado 在 Sway 上显示空白屏幕
此行为发生在 2024.{1,2} 版本中。 在您的环境中设置 _JAVA_AWT_WM_NONREPARENTING=1
。 参见 https://github.com/swaywm/sway/wiki#issues-with-java-applications。
许可
Xilinx Vivado 包含称为知识产权 (IP) 核的模块,顾名思义,您应该预料到这些模块需要许可证。 有两种可能的许可模式:浮动 (服务器) 或节点锁定 (许可证文件)。
浮动许可
设置环境变量 XILINX_LICENSE_FILE
以指向浮动服务器许可证。 您将必须与服务器位于同一网络上,因此可能需要使用 VPN 连接。
your-vivado-installation-path/bin/setupEnv.sh
... # Add your floating license export XILINXD_LICENSE_FILE=2100@<server_name>
节点锁定许可
在 https://www.xilinx.com/getlicense 生成许可证文件。 您很快将收到一封自动生成的电子邮件,其中包含许可证文件 Xilinx.lic
。 将其下载到 ${HOME}/.Xilinx
目录。