# Xilinx Vivado

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Write a PKGBUILD (Discuss in Talk:Xilinx Vivado#)

Arch Linux is not officially supported by Vivado, but as happens with Xilinx ISE WebPACK, most of its features can be used with a bit of hacking.

## Installation

Xilinx Vivado can be downloaded from its official website [1]. It's recommended to download "Vivado HLx <year>.<version>: All OS installer Single-File Download" tarball, but make sure not to be in a hurry, as it's a large download (over 35 GB). Update tarballs can also be downloaded and installed later.

### AUR Package

The vivadoAUR AUR package can be used to create a Vivado installation managed by pacman. Since the download of the installer is locked behind a login wall, it needs to be downloaded manually as outlined above and placed in the same directory as the PKGBUILD. The package only builds the latest major version (<year>.<version>), not the minor updates (<year>.<version>.<update>); if these are required, install Vivado manually instead.

### Manual Installation

#### Dependencies

The installer needs ncurses5 libs, and will not work with ncurses 6 available at official repos. You can work-around this problem by installing ncurses5-compat-libsAUR from the AUR. You will also need to install libpng12 and lib32-libpng12 for Xilinx Document Navigator to launch.

SDK 2018.3 (potentially also other versions) needs gtk2 library. You may need to install gtk2 if you are planning to use SDK. Vitis needs xorg-xlsclients in order to work properly.

Instead of manually installing all these dependencies separately, the xilinx-vivado-dummyAUR metapackage can be used instead.

On some Tiling Window Managers (confirmed dwm and Xmonad), you may need to set this environment variable before launching `xsetup` (otherwise the installation GUI will not render).

    $ export _JAVA_AWT_WM_NONREPARENTING=1

You must install the main package, and it is also recommended to install the latest update patch.

Fonts may render incorrectly making some text hard to read and causing some UI elements to be cut off. This can be fixed by installing noto-fonts.

#### Dependencies for petalinux-tools

Before Launch petalinux-tools, please install:

git diffstat unzip texinfo python chrpath wget xterm sdl rpcsvc-proto socat cpio inetutils python2 net-tools tftp-hpa python-virtualenv xorg-server-xvfb bison flex gnupg ncurses autoconf libtool tar gcc sdl sdl2 glib2 screen pax pax-utils libstdc++5 python-django iproute2 lib32-zlib openssl gawk python-pexpect python-pip python-gitpython python-jinja xz iputils python-pylint

and Aur Package

pod2manAUR libselinuxAUR debianutilsAUR

Enable the multilib repository and install the multilib-devel group.

multilib-devel

Enable tftp-hpa

    $ sudo systemctl enable tftpd.service
    $ sudo systemctl start tftpd.service

#### Vivado and SDK

Once downloaded and unpacked the tarball, run:

    # ./xsetup

It is recommended to install the suite at the default location `/opt/Xilinx`, as further instructions in this page will assume the suite is installed there.

#### Linux cable driver

    $ cd {vivado_install_dir}/data/xicom/cable_drivers/lin64/install_script/install_drivers

Then run as root privilege:

    # ./install_drivers

#### Desktop Shortcuts

The installation process must be run as root for write access to /opt/Xilinx. If shortcuts in application menus are desired, they must be moved from the root account to /usr/share. Desktop shortcuts must be moved to the users desktop.

The following commands assume only Xilinx has been installed to the root account and the user has the username username.

To copy the application menu shortcuts:

    # mv /root/.local/share/applications/* /usr/share/applications/
    # mv /root/.local/share/desktop-directories/* /usr/share/desktop-directories/
    # mv /root/.config/menus/applications-merged/* /etc/xdg/menus/applications-merged/

To copy the desktop shortcuts:

    # chown username /root/Desktop/*
    # mv /root/Desktop/* /home/username/Desktop/

### Digilent USB-JTAG Drivers

To use Digilent Adept USB-JTAG adapters (e.g. the onboard JTAG adapter on the ZedBoard) from Vivado, you need to install the Digilent Adept Runtime.

Make sure you have installed fxloadAUR from the AUR .

To install the Digilent Adept Runtime, it is recommended to install digilent.adept.runtimeAUR from the AUR.

In addition, installing digilent.adept.utilitiesAUR may do good to configuring your board.

## Tips and tricks

### Enable display scaling

Start vivado, then set the scaling rate as follow:

    Tools -> Setting -> Display -> Scaling

### Disable WebTalk

The free WebPACK license does not let you disable this feature which uploads usage data to Xilinx's servers when generating a bitstream, but synthesis will complete just fine if the connection fails. A simple way to make it fail consistently for Vivado tools only is to set an invalid HTTPS proxy for it.

    /opt/Xilinx/Vivado/<version>/bin/setupEnv.sh

    ...

    export HTTPS_PROXY=localhost

This method will not pollute your environment, only the temporary environment that is configured upon startup of the tools, so it should not break anything else.

## Troubleshooting

### Synthesis segfaults

See https://forums.xilinx.com/t5/Synthesis/Vivado-crashes-on-Arch-Linux-when-performing-synthesis/td-p/706847

You will need to recompile glibc (just take the PKGBUILD from the abs) with `--disable-lock-elision`. Instead of patching the system libc in `/usr/lib`, copy the newly compiled `libpthread-2.25.so` and `libc-2.25.so` to `/opt/Xilinx/Vivado/2016.4/ids_lite/ISE/lib/lin64` Do not forget to repeat this when glibc gets upgraded.

### xsct, xsdb, xmd, and tclsh segfault

The Xilinx Vivado command-line tools xsct, xsdb, xmd, and tclsh may crash with a message similar to the following:

    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[@]}"

This is a problem with the rlwrap version bundled with Vivado, probably due to the lack of legacy vsyscall emulation in Arch Linux. To fix this issue, either drop rlwrap altogether (losing command history and auto-completion), or install rlwrap from the official repo and edit the path to the rlwrap binary in the affected command startup script(s) from:

    /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 ...

To the following:

    /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 error with GCC

Vivado requires an older version of glibc (2.26).

The solution proposed in this thread from Xilinx forums suggests to update the fixed headers shipped by Xilinx.

Run:

     # /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

### Vivado Crashes with Wayland

If Vivado crashes and the error file contains something similar to this:

    hs_err_pid*.log

    #
    # An unexpected error has occurred (11)
    #
    Stack:
    /opt/Xilinx/Vivado/2018.2/tps/lnx64/jre/lib/amd64/server/libjvm.so(+0x923da9) [0x7fced0c19da9]
    /opt/Xilinx/Vivado/2018.2/tps/lnx64/jre/lib/amd64/server/libjvm.so(JVM_handle_linux_signal+0xb6) [0x7fced0c203f6]
    /opt/Xilinx/Vivado/2018.2/tps/lnx64/jre/lib/amd64/server/libjvm.so(+0x9209d3) [0x7fced0c169d3]
    /usr/lib/libc.so.6(+0x368f0) [0x7fcf0ea408f0]
    /opt/Xilinx/Vivado/2018.2/tps/lnx64/jre/lib/amd64/libawt_xawt.so(+0x42028) [0x7fceb1a20028]
    /opt/Xilinx/Vivado/2018.2/tps/lnx64/jre/lib/amd64/libawt_xawt.so(+0x42288) [0x7fceb1a20288]
    /opt/Xilinx/Vivado/2018.2/tps/lnx64/jre/lib/amd64/libawt_xawt.so(Java_sun_awt_X11_XRobotPeer_getRGBPixelsImpl+0x17c) [0x7fceb1a1867c]
    [0x7fcec0cb94cf]

Switch to using Xorg instead of Wayland. The version of Java Vivado uses has compatibility problems with Wayland.

### Vivado 2020.1 installer does not start

Note: This has been fixed as of Vivado 2020.2.

The Vivado 2020.1 installer may not start on Arch Linux. The splash-screen and warning about the unsupported OS show up, but nothing happens after closing the dialog:

    # ./xsetup
    Exception in thread "SPLASH_LOAD_MESSAGE" java.lang.IllegalStateException: no splash screen available
    	at java.desktop/java.awt.SplashScreen.checkVisible(Unknown Source)
    	at java.desktop/java.awt.SplashScreen.getBounds(Unknown Source)
    	at java.desktop/java.awt.SplashScreen.getSize(Unknown Source)
    	at com.xilinx.installer.gui.H.run(Unknown Source)
    Exception in thread "main" java.lang.IllegalStateException: no splash screen available
    	at java.desktop/java.awt.SplashScreen.checkVisible(Unknown Source)
    	at java.desktop/java.awt.SplashScreen.close(Unknown Source)
    	at com.xilinx.installer.gui.G.b(Unknown Source)
    	at com.xilinx.installer.gui.InstallerGUI.G(Unknown Source)
    	at com.xilinx.installer.gui.InstallerGUI.e(Unknown Source)
    	at com.xilinx.installer.api.InstallerLauncher.main(Unknown Source)

A possible workaround is to start the installation using the batch installer. First generate a configuration file and select your product (Vitis includes Vivado):

    # ./xsetup -b ConfigGen

Then edit the configuration file generated at `~/.Xilinx/install_config.txt` with your desired install location. Finally run the installer:

    # ./xsetup -c ~/.Xilinx/install_config.txt --agree XilinxEULA,3rdPartyEULA,WebTalkTerms --batch Add

### To update Vivado from 2020.1 to Vivado 2020.1.1

If your 2020.1 installation failed to launch and needed to be installed in batch mode, you will need to update using batch mode:

    # ./xsetup -b Update

If Vivado was originally installed by the root user, you will need to launch the update as the root user.

### Synthesis fails on certain locales

If your system locale does not use a dot `.` as the decimal seperator, but for example a comma `,` (e.g. `de_DE`), synthesis may fail with errors such as wrong operator types for `+`.

A possible workaround is to force Vivado to use `en_US.UTF-8` as the locale for numerics. This can be easily done by appending

    export LC_NUMERIC=en_US.UTF-8

to `<your-vivado-installation-path>/bin/setupEnv.sh`.

### Fonts ignore system anti-aliasing settings

With OpenJDK 11 and Vivado display scaling activated, the menu and other UI element fonts may render without any anti-antialiasing regardless of desktop environment settings. This can be fixed by editing the Vivado launch script to append `awt.useSystemAAFontSettings=on` to the JVM options.

Assuming Vivado is installed in the default location of `/opt/Xilinx/Vivado/YYYY.Q` where `YYYY.Q` is the verion (i.e. 2020.2), modify `vivado` to include the following:

    /opt/Xilinx/Vivado/YYYY.Q/bin/vivado

    ...
    export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true"
    ...

## Licensing

Xilinx Vivado contains modules called Intelectual Property (IP) cores and as the name suggests, you should expect licenses to be required for these modules. Two modes of licensing are possible: Floating (server) or Nodelocked (license file).

### Floating License

Set the environment variable `XILINX_LICENSE_FILE` to point to a floating server license. You will have to be on the same network as the server, so connecting with a VPN might me required.

    your-vivado-installation-path/bin/setupEnv.sh

    ...
    # Add your floating license
    export XILINXD_LICENSE_FILE=2100@<server_name>

### Nodeblocked License

Generate a license file at https://www.xilinx.com/getlicense . You will shortly receive an automatically generated email with the license file `Xilinx.lic`. Download this to `${HOME}/.Xilinx` directory.

Category:

- Electronic design automation

Hidden category:

- Pages or sections flagged with Template:Style