Skip to content

an-thony350/RV32IM-Processor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

RV32IM Processor

Public technical dossier for a five-stage pipelined RISC-V processor project, implementing the RV32I base instruction set with selected RV32M multiplication instructions, cache integration, hazard handling, and branch-prediction extensions.

Source code is not published here because the original implementation was produced for university coursework and may be subject to academic integrity restrictions. This repository documents the architecture, feature coverage, verification approach, and engineering evidence without exposing restricted RTL or test source.

Overview

This project implemented a 32-bit RISC-V processor in SystemVerilog. The design evolved from a single-cycle processor into a five-stage pipelined processor with forwarding, stalling, flushing, cache integration, full RV32I support, and selected M-extension multiplication instructions.

The final design included:

  • a five-stage pipeline: Fetch, Decode, Execute, Memory, Writeback,
  • hazard detection and forwarding,
  • branch and jump handling,
  • a two-way set-associative write-back cache,
  • complete RV32I base instruction support,
  • selected RV32M multiplication instructions,
  • a dynamic branch predictor extension,
  • Verilator/GoogleTest-style component and system verification,
  • an F1-style start-lights assembly demonstration.

Complete processor schematic

Key Results

Area Result
ISA RV32I base instruction set
Extension RV32M multiplication subset: MUL, MULH, MULHSU, MULHU
Microarchitecture Five-stage pipelined processor
Hazard handling Forwarding, load-use stalls, control-hazard flushing, cache stalls
Memory extension Two-way set-associative write-back cache
Branch extension 2-bit dynamic branch predictor with PHT/BTB-style behaviour
Verification Component-level and full-system simulation using assembly test programs
Demo F1-style start-lights program in RISC-V assembly

Pipeline

flowchart TD
    A["Fetch"] --> B["Decode"]
    B --> C["Execute"]
    C --> D["Memory"]
    D --> E["Writeback"]
Loading

Pipeline diagram

Instruction Set and Datapath

The full RV32I base instruction set required updates across the ALU, control unit, branch unit, immediate generation, pipeline registers, memory path, and writeback routing.

Full instruction set schematic

Cache Integration

The processor included a two-way set-associative write-back cache integrated into the pipelined memory stage. Cache misses stall the pipeline while the cache state machine completes writeback/fetch/update behaviour.

Pipeline with cache

Branch Prediction

The branch prediction extension used a 2-bit saturating counter style predictor. Predictions are made during fetch, while actual branch resolution occurs later and trains the predictor.

Branch predictor state machine

Technology

  • SystemVerilog
  • RISC-V RV32I/RV32M concepts
  • Five-stage CPU pipeline design
  • Hazard detection and forwarding
  • Cache design
  • Branch prediction
  • Verilator
  • C++ / GoogleTest-style testbenches
  • RISC-V assembly

Notes for Recruiters

The implementation source is intentionally private. I can discuss the datapath, hazard logic, control changes, cache integration, multiplication extension, branch-prediction design, and verification strategy in interviews. Where permitted, I can provide supervised evidence of code ownership without publishing restricted coursework material.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors