Preparing environment

Install required packages in a terminal.

sudo apt install gcc-arm-linux-gnueabihf git picocom device-tree-compiler -y

Quartus

Download the latest version of Quartus Prime.

Unpack the downloaded file and start an installation.

./setup.sh

Press next and accept a license.

Quartus Quartus Leave a default installation path and press next. Quartus Choose the following packages and install them pressing next. Quartus Press next to start installation, then press finish. Quartus

Add the following line in ~/.bashrc file.

export PATH=$PATH:/home/konrad/intelFPGA_lite/22.1std/quartus/bin

Write quartus in a system terminal and press enter every time you need to run Quartus Prime.

Edit file sudo nano /etc/udev/rules.d/51-usbblaster.rules and fill it copying a below text.

# USB Blaster
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6002", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6003", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"

# USB Blaster II
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6810", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"

Preparing virtual environment

Create a virtual environment to install Litex.

python3 -m venv ~/.venv
source ~/.venv/bin/activate
pip3 install meson ninja

Installing LiteX

In the next step install LiteX. LiteX is required to build an embedded system on FPGA. If you encounter any errors, run the installation again.

wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
chmod +x litex_setup.py
./litex_setup.py --init --install

Installing a RISC-V toolchain

Hardware requires a software to work. Install a compiler for RiscV architecture.

wget https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14.tar.gz
tar -xvf riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14.tar.gz
export PATH=$PATH:$PWD/riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14/bin/

You can add the last line command to ~/.bashrc file. Everytime you will run a new terminal, the compiler will be added automatically to a PATH variable.

Installing Verilator (only needed for simulation)

sudo apt install verilator
sudo apt install libevent-dev libjson-c-dev

Verification

Be sure that everything was installed properly. Build RiscV CPU and load it on FPGA, to verify an integration of software.

mkdir ~/Labs
cd ~/Labs
python3 -m litex_boards.targets.terasic_de10lite --cpu-type=vexriscv --build --load

A result should look like below.

Menuconfig screen