# 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](https://www.intel.com/content/www/us/en/software-kit/795187/intel-quartus-prime-lite-edition-design-software-version-23-1-for-linux.html). Unpack the downloaded file and start an installation. ``` ./setup.sh ``` Press next and accept a license. ![Quartus](q1.png) ![Quartus](q2.png) Leave a default installation path and press next. ![Quartus](q3.png) Choose the following packages and install them pressing next. ![Quartus](q4.png) Press next to start installation, then press finish. ![Quartus](q5.png) 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](env.jpg)