Install Vivado

Generating a bitstream for Xilinx devices requires a Vivado installation. Please note that the “WebPACK” edition does not support the Xilinx Kintex 7 XC7K410T used on the CW310 board.

For software development, Vivado is still necessary for most workflows. However, the (free) Lab Edition is sufficient, and it has a significantly smaller installation footprint. For example, Vivado’s updatemem tool is used to splice ROM images into the bitstream, and this is included in the Lab Edition.

Install Xilinx Vivado

Vivado Version: The recommendation is to use Vivado 2021.1.

Following the arrival of Vivado ML Edition, you will need to follow the links for that, eg. Products -> Hardware Development -> Vivado ML. Then click on ‘Vivado Archive’ in the Version list and locate version 2021.1 of Vivado Design Suite.

See Download and Installation for installation instructions.

When asked what edition to install, choose “Vivado HL Design Edition”. Note: If you are only developing software, you may select the “Lab Edition” instead. On the feature selection screen, select at least the following features:

Vivado features selection screen

After installing Vivado, you will need to add Vivado’s paths to your shell environment. See Launching the Vivado IDE from the Command Line on Windows or Linux for instructions.

Device permissions: udev rules

To program any 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