This project is my own implementation of a RISC-V processor series that supports the RV32I instruction set, with three architectural versions:
- Single-Cycle CPU
- Multi-Cycle CPU
- Pipelined CPU
The ultimate goal is to create a functional RISC-V microcontroller capable of serving basic embedded system needs. To achieve this, I am developing GPIO peripherals that can be integrated with the processor, including:
- Memory-Mapped Register Interface
- Memory Controller
- I²C Controller
- SPI Controller
- UART Controller
All CPU cores and peripherals are written in SystemVerilog. Each processor design and datapath is simulated in Vivado & GTKWave using SystemVerilog testbenches. For architectural correctness, the RISCOF test framework is also used to verify performance using Python scripts.
- Overview
- ReadMe Navigator
- Project Contents
- Skills & Technologies Applied
- Current Focus / Status
- Next Steps / Roadmap
Core/ # Processor core digital design files, testbenches, and Vivado simulations
Peripheral/ # GPIO peripheral designs, testbenches, and Vivado simulations
Reference/ # Reference files and resources used during development- HDL & Simulation: SystemVerilog (CPU core + peripherals), testbench writing, RTL design & verification
- EDA Tools: Xilinx Vivado, GTKWave
- Processor Architecture: RISC-V RV32I ISA, datapath design (single-cycle, multi-cycle, pipelined)
- Verification Frameworks: RISCOF test framework, Python-based instruction tests
- Bus & Interface Design: Memory-Mapped Register Interface, AXI-Lite concepts, custom memory controller
- Peripheral Design: UART, SPI, I²C controllers from scratch
- Embedded Systems Context: Building toward a microcontroller usable for real applications
- Designing instruction-directed testbenches to cover most commonly used RV32I instructions.
- Implementing the Memory Controller and Memory-Mapped Register Interface, and integrating them with the UART controller.
- Implement remaining hardware peripherals (SPI, I²C, GPIO).
- Develop the hazard unit required for the pipelined RISC-V CPU.
- Expand test coverage with RISCOF and real software programs.
- Prepare for FPGA deployment and hardware-in-the-loop testing.