Overview#
Welcome to RVSvKit, a lightweight, parameterized SystemVerilog library for building RISC-V–style pipelines and peripherals.
Motivation & Goals#
Provide modular, n-bit–parametrized RTL building-blocks (ALU, registers, control FSMs, CSRs, etc.)
Enable a smooth CI & verification flow (Verilator, Icarus, Dockerized Vivado)
Offer clear extension points for caches, MMU stubs, DRAM controllers, vector units
Key Features#
Composable Pipeline Primitives
Decoupled ready-valid registers, hazard detection, forwarding units, simple 5-stage core example.CSR & Trap Handler
Implements base RISC-V privileged CSRs (mstatus, mtvec, mie, mip, mepc, mcause) and exception flow.Protocol Adapters
TileLink ↔ AXI4-Lite, APB adapters; crossbars, arbiters, fragmenters.CI & Benchmarking
Per-module smoke synthesis, functional regression, area & timing thresholds, coverage gating.
Prerequisites & Getting Started#
Clone repo
git clone https://github.com/you/RVSvKit.git cd RVSvKit
Tools
Verilator ≥ 4.x
Docker & Vivado (2023.2+) for synthesis CI
First build & test
make run
Folder Hierarchy#
Below is the canonical top-level layout for the entire repo.
For the detailed breakdown of leaf RTL blocks, see the Module Inventory.
RVSvKit/
├── common/ # shared packages & utilities
│ ├── pkg/ # types, parameters, macros
│ └── utils/ # assertions & small helpers
├── modules/ # all synthesizable RTL blocks
├── protocols/ # TileLink, AXI, APB stacks & adapters
├── examples/ # end-to-end demos (simple_soc, tutorials)
├── docs/ # deep dives, diagrams, tutorials
├── ci/ # GitHub Actions / thresholds
├── scripts/ # scaffolding & automation tools
├── Dockerfile & docker/ # dev container setup
├── .gitignore
├── LICENSE
├── README.md
└── CONTRIBUTING.md