Our group has successfully implemented a pipelined RISC-V CPU with a cache. Testing showed that the CPU can run a program simulating a F1 light sequence, and the reference program to calculate the PDF of a provided distribution. The allocation of work was as follows:
- Roshan was responsible for pipelining the CPU, adding the two-way associative write-back cache, writing a Python script to produce the correct PDF to compare the reference program output to, as well as fixing numerous issues throughout the CPU.
- Corey was responsible for the memory, which implemented signed and unsigned load/store word, half and byte instructions, a makefile to generate the F1 program and an initial F1 assembly program, as well as modifying the RAM to work with a cache.
- Anlan was responsible for the control unit which consisted of the main decoder and ALU decoder, and the PC_src component. He was also responsible for the sign extension unit, the instruction memory, the initial draft of the assembly code for the F1 program, and producing .vcd files for each PDF to test if it matched the expected results generated by the Python script.
- Shaheer was responsible for implementing the ALU Block with all the required functionality as well as helping add additional functionality and debugging of the ALU Decode block. He was also involved with making the register file, debugging some issues, and removing pipelining to create a sperate single cycle cpu as per requirements.
This repository contains three branches to be assessed: main, cache, and single_cycle.
- The 'main' branch contains the pipelined CPU.
- The 'cache' branch contains the pipelined CPU with a two-way associative write-back cache.
- The 'single_cycle' branch contains the single-cycle version of the CPU.
In each branch, the test folder contains .vcd test results. The folder test/media contains images and videos as additional testing evidence. The commands 'make f1' and 'make ref' can be used to assemble and run the F1 and reference programs respectively. For the reference program, the distribution to calculate the PDF of can be changed by modifying ref_vbuddy_sim.sh.