Xilinx Vivado

出自 ArchWiki

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

此方法不会污染您的环境,只会污染工具启动时配置的临时环境,因此不应破坏其他任何内容。

故障排除

帮助菜单下的 HTML 链接无法在浏览器中打开

参见 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 没有响应或只显示启动画面

参见 https://support.xilinx.com/s/question/0D52E00006hpY4PSAU/vitishls-20202-not-starting-only-splash-screen-visible

当您运行 /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$&lt'v-=

----%r&-'%rl%&n$&lt'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.solibc-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

https://support.xilinx.com/s/question/0D54U00007j9lkvSAA/vitis-20232-cmake-error-while-loading-shared-libraries-libsslso10?language=en_US

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 目录。