Additional resources
Any additional resources regarding lectures and labs can be found on this page. They will be added throughout the duration of the course.
Lab 1: Introduction to Vivado / Verilog
Lab 2: RISC-V
- PICORV32 Core Repo: YosysHQ/picorv32
- PICORV32 Analysis (Not an official source): Analyze PicoRV32
- RISC-V Instruction Guide: RISCV_CARD
- RISC-V Online Compiler: RISC-V Online Assembler
RISC-V Register Map
5-bit Encoding (rx) | Register | ABI Name | Description |
---|---|---|---|
0 (0b00000) | x0 | zero | hardwired zero |
1 (0b00001) | x1 | ra | return address |
2 (0b00010) | x2 | sp | stack pointer |
3 (0b00011) | x3 | gp | global pointer |
4 (0b00100) | x4 | tp | thread pointer |
5 (0b00101) | x5 | t0 | temporary register 0 |
6 (0b00110) | x6 | t1 | temporary register 1 |
7 (0b00111) | x7 | t2 | temporary register 2 |
8 (0b01000) | x8 | s0 | saved register 0 |
9 (0b01001) | x9 | s1 | saved register 1 |
10 (0b01010) | x10 | a0 | function argument 0 |
11 (0b01011) | x11 | a1 | function argument 1 |
12 (0b01100) | x12 | a2 | function argument 2 |
13 (0b01101) | x13 | a3 | function argument 3 |
14 (0b01110) | x14 | a4 | function argument 4 |
15 (0b01111) | x15 | a5 | function argument 5 |
16 (0b10000) | x16 | a6 | function argument 6 |
17 (0b10001) | x17 | a7 | function argument 7 |
18 (0b10010) | x18 | s2 | saved register 2 |
19 (0b10011) | x19 | s3 | saved register 3 |
20 (0b10100) | x20 | s4 | saved register 4 |
21 (0b10101) | x21 | s5 | saved register 5 |
22 (0b10110) | x22 | s6 | saved register 6 |
23 (0b10111) | x23 | s7 | saved register 7 |
24 (0b11000) | x24 | s8 | saved register 8 |
25 (0b11001) | x25 | s9 | saved register 9 |
26 (0b11010) | x26 | s10 | saved register 10 |
27 (0b11011) | x27 | s11 | saved register 11 |
28 (0b11100) | x28 | t3 | temporary register 3 |
29 (0b11101) | x29 | t4 | temporary register 4 |
30 (0b11110) | x30 | t5 | temporary register 5 |
31 (0b11111) | x31 | t6 | temporary register 6 |
Area Utilization
To open the area utilization report follow the following steps:
- Ensure that you have a Generated Bitstream
Open Implemented Design
, select this above the Generate Bitstream- Select
Report Utilization
- Navigate till you see the
picorv32_0
The steps are highlighted below in the picture:
Using the Desktop
Your group can use the desktops in the labs to generate the bitstream. However, some of the desktops cannot be used to program the FPGA. If you need to use the desktops, come to the front of the room, where te first two rows of computers should support programming the FPGA.
To use the desktop follow the steps:
- Login with your NetID and password
- Download the part files from here: No longer available
- Extract the file into
C:\Programs\Xilinx2023.2\Vivado\2023.2\data\parts\xilinx
- You can start Vivado and open the template project
- Make sure that you do not get any warnings when you open the template. If you get any errors please contact a TA
Flashing FPGA from the Desktop
The Desktop PCs do not have Vitis CLassic Installed on them. Thus you will be using a custom python script to flash the FPGAs. The script can be downloaded from here: Auto_Upload_Script.
To use the script, follow the steps:
- Unzip the script
- Replace the
design_1_wrapper.bit
with your generated bitstream - Double-click on
run_script.py
to execute the script
Ensure that you open a Serial Port before running the script
Running Remotely
For groups that cannot upload the program onto the FPGA, please upload your Exported Hardware file (*.xsa
) to your groups OneDrive folder here: No longer available
Once uploaded there will be TA laptops placed at the front of the Lab for you to upload your program from.
Note: This can be a bottle-neck if many groups want to test their design at the same time. So please keep that in mind and work efficiently. Such as using the desktops in front of the class.
Lab 3: CUDA
Template download
Download the template used for lab 3 here: lab3-cuda-template
List of useful commands on DelftBlue
- See your if your job sits in the queue:
squeue -u $USER
- See the job queue:
squeue