Generating a bitstream for Xilinx devices requires a Vivado installation. Vivado is provided by Xilinx, it is freeware for certain (smaller) FPGA devices but requires a commercial license for larger FPGAs. The free version is called “WebPACK”, the commercial version “Design Edition”. The installation instructions below are valid for both installation methods.
Vivado Version: The recommendation is to use Vivado {{< tool_version “vivado” >}}. The following instructions have been tested with Vivado 2020.2. Some screenshots are generated from Vivado 2020.1, but the installation process has not changed. Vivado 2019.1 and all its minor updates are not compatible with this project.
Vivado can be installed in two ways: either through an “All OS installer Single-File Download”, or via the “Linux Self Extracting Web Installer”. Neither option is great: the “All OS installer” is a huge download of around 20 GB (and the Xilinx download servers seem to be overloaded regularly), but it supports an unattended installation. The web installer downloads only necessary subsets of the software, which significantly reduces the download size. But unfortunately it doesn't support the batch mode for unattended installations, requiring users to click through the GUI and select the right options.
To get started faster we use the web installer in the following.
Go to the Xilinx download page. Select Vivado {{< tool_version “vivado” >}} from the left-hand side and download two files:
You need to register for a free Xilinx account to download the software, and you‘ll need it again later to install the software. Create a new account if you don’t have one yet.
Before you proceed ensure that the download didn't get corrupted by verifying the checksum.
$ sha512sum --check Xilinx_Unified_2020.2_1118_1232_Lin64.bin.digests Xilinx_Unified_2020.2_1118_1232_Lin64.bin: OK sha512sum: WARNING: 22 lines are improperly formatted
If you see an “OK” after the downloaded file proceed to the next step. Otherwise delete the download and start over. (You can ignore the warning produced by sha512sum
.)
Run the graphical installer. It may warn you that a newer version is available; you can ignore the warning.
$ sh Xilinx_Unified_2020.2_1118_1232_Lin64.bin
Now you need to click through the installer. Click “Next” on the first screen.
Type in your Xilinx User ID (your email address) and the associated password. Choose the “Download and Install Now” option. Click “Next” to continue.
Click all “I Agree” checkboxes, and click on “Next” to continue.
Choose “Vivado”, and click on “Next” to continue.
Choose “Vivado HL Design Edition”. This is required to enable support for the Xilinx Kintex 7 XC7K410T FPGA device found on the ChipWhisperer CW310 board. You‘ll need a commercial Vivado license for this FPGA device. Without a valid license, you are still able to install the Vivado HL Design Edition but you’ll only be able to work with devices supported by the free WebPACK license. If you don‘t have a valid license and if you’re only planning to work with devices supported by the free WebPACK license, you can also choose “Vivado HL WebPACK” instead.
Choose the features to install. You can restrict the features to the ones shown in the screenshot below. Click “Next” to continue.
Choose an installation location. Any location which doesn't have a whitespace in its path and enough free space is fine. We use /tools
in our example, but a path in /opt
or within the home directory works equally well. Click “Next” to continue.
Double-check the installation summary and click on “Install” to start the installation process.
Now Vivado is downloaded and installed, a process which can easily take multiple hours.
As soon as the installation has completed close the installer and you're now ready to use Vivado!
To program an FPGAs the user using Vivado typically needs to have permissions to access USB devices connected to the PC. Depending on your security policy you can take different steps to enable this access. One way of doing so is given in the udev rule outlined below.
To do so, create a file named /etc/udev/rules.d/90-lowrisc.rules
and add the following content to it:
# Grant access to board peripherals connected over USB: # - The USB devices itself (used e.g. by Vivado to program the FPGA) # - Virtual UART at /dev/tty/XXX # NewAE Technology Inc. ChipWhisperer boards e.g. CW310, CW305, CW-Lite, CW-Husky ACTION=="add|change", SUBSYSTEM=="usb|tty", ATTRS{idVendor}=="2b3e", ATTRS{idProduct}=="ace[0-9]|c[3-6][0-9][0-9]", MODE="0666" # Future Technology Devices International, Ltd FT2232C/D/H Dual UART/FIFO IC # used on Digilent boards ACTION=="add|change", SUBSYSTEM=="usb|tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", ATTRS{manufacturer}=="Digilent", MODE="0666" # Future Technology Devices International, Ltd FT232 Serial (UART) IC ACTION=="add|change", SUBSYSTEM=="usb|tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666"
You then need to reload the udev rules:
$ sudo udevadm control --reload