aboutsummaryrefslogtreecommitdiff
path: root/rv64cpu/README
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-11-07 03:49:29 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-11-07 03:49:29 +0800
commita149fa58296b6ee5b8853df9b18a783e72e28772 (patch)
treedf96d91a79014d6997198c7737b8731dd01714f7 /rv64cpu/README
parent0207627dee47803c7c44ded952c2daadf138b2c1 (diff)
downloadrcc-project-a149fa58296b6ee5b8853df9b18a783e72e28772.tar.gz
rcc-project-a149fa58296b6ee5b8853df9b18a783e72e28772.tar.xz
refactor: rename documents
Diffstat (limited to 'rv64cpu/README')
-rw-r--r--rv64cpu/README141
1 files changed, 141 insertions, 0 deletions
diff --git a/rv64cpu/README b/rv64cpu/README
new file mode 100644
index 0000000..a7e62a5
--- /dev/null
+++ b/rv64cpu/README
@@ -0,0 +1,141 @@
+# Richard CPU
+
+**RV64GCZicsr_Zifencei** Five-Stage In-Order Pipelined Processor SoC
+
+Written in SystemVerilog, simulated with Verilator, targeting official riscv-arch-test compliance.
+
+## Features
+
+- **ISA**: RV64IMAFDC + Zicsr + Zifencei (RV64GC)
+- **Pipeline**: 5-stage in-order single-issue (IF → ID → EX → MEM → WB)
+- **Privilege Levels**: M / S / U tri-mode
+- **Virtual Memory**: Sv39 (MMU with TLB + Hardware PTW)
+- **Cache**: I-Cache 4KB + D-Cache 4KB (AXI4-Full Burst refill)
+- **Bus**: AXI4-Full (Cache) + AXI4-Lite (Peripherals) + auto bridge
+- **Peripherals**: CLINT / PLIC / UART 16550 / GPIO / SRAM Controller
+- **Debug**: JTAG Debug Transport Module (reserved)
+- **FPGA**: Xilinx / Gowin synthesis support (reserved)
+
+## Quick Start
+
+### Dependencies
+
+- [Verilator](https://verilator.org) ≥ 5.0
+- CMake ≥ 3.20
+- C++17 compiler (GCC / Clang)
+- [riscv64-unknown-elf-gcc](https://github.com/riscv-collab/riscv-gnu-toolchain) (software compilation, optional)
+- [uv](https://docs.astral.sh/uv/) (ACT4 Python tooling)
+- [podman](https://podman.io/) (riscv-unified-db runtime)
+- [sail_riscv_sim 0.10](https://github.com/riscv/sail-riscv/releases/tag/0.10) (reference model for ACT4)
+- [GTKWave](http://gtkwave.sourceforge.net/) (waveform viewer, optional)
+
+### Build Simulation
+
+```bash
+# Configure (enable waveform tracing)
+cmake -B build -DENABLE_TRACE=ON
+
+# Compile
+cmake --build build -j$(nproc)
+
+# Run all tests
+ctest --test-dir build --output-on-failure
+```
+
+### Build Bare-Metal Programs
+
+```bash
+cmake -B build_sw -DBUILD_SW=ON \
+ -DCMAKE_TOOLCHAIN_FILE=tools/toolchain-riscv64.cmake
+
+cmake --build build_sw -j$(nproc)
+```
+
+### Run Compliance Tests
+
+```bash
+# Initialize riscv-arch-test submodule
+git submodule update --init --recursive
+
+# Sync ACT4 python dependencies
+cd sw/riscv-arch-test && uv sync --frozen && cd ../..
+
+# Run strict full implemented suite (reference signature compare enabled)
+python3 scripts/run_compliance.py --suite rv64full --max-cycles 200000 --require-reference
+```
+
+Verified strict suites (all pass):
+
+- `rv64i`
+- `rv64im`
+- `rv64ia`
+- `rv64ic`
+- `rv64if`
+- `rv64id`
+- `rv64priv`
+- `rv64full` (aggregate)
+
+### View Waveforms
+
+```bash
+./scripts/wave_view.sh # Open latest waveform
+./scripts/wave_view.sh waves/soc.vcd # Open specific file
+```
+
+## Documentation
+
+| Document | Description |
+|---|---|
+| [docs/architecture.md](docs/architecture.md) | Microarchitecture design (pipeline, privilege levels, MMU, FPU, cache, bus) |
+| [docs/memory_map.md](docs/memory_map.md) | Physical address space and peripheral register layout |
+| [docs/isa_support.md](docs/isa_support.md) | ISA instruction implementation status matrix |
+| [docs/pipeline_diagram.md](docs/pipeline_diagram.md) | Pipeline timing, inter-stage registers, forwarding/hazards |
+
+## Project Structure
+
+```
+richard-cpu/
+├── CMakeLists.txt # Top-level build
+├── rtl/ # SystemVerilog RTL
+│ ├── core/ # CPU core (pipeline stages + functional units)
+│ │ ├── include/ # Global packages (rv64_pkg, csr_pkg)
+│ │ ├── mmu/ # MMU (TLB + PTW)
+│ │ ├── fpu/ # FPU (F/D extensions)
+│ │ └── debug/ # Debug DTM (reserved)
+│ ├── cache/ # I-Cache + D-Cache
+│ ├── bus/ # AXI4 interconnect + AXI4-Lite bridge
+│ ├── perips/ # Peripherals (CLINT/PLIC/UART/GPIO/SRAM)
+│ └── soc/ # SoC top-level integration
+├── tb/ # Verilator simulation testbench
+│ ├── common/ # Common infrastructure
+│ ├── unit/ # Unit tests
+│ ├── core/ # Core integration tests
+│ ├── soc/ # SoC-level simulation
+│ └── compliance/ # riscv-arch-test runner
+├── sw/ # Software
+│ ├── common/ # Startup code + linker script
+│ ├── baremetal/ # Bare-metal test programs
+│ └── riscv-arch-test/ # Official compliance tests (git submodule)
+├── fpga/ # FPGA synthesis
+│ ├── xilinx/ # Artix-7 top-level + constraints + Tcl
+│ └── gowin/ # (reserved)
+├── scripts/ # Helper scripts
+├── tools/ # CMake toolchain files
+└── docs/ # Design documentation
+```
+
+## Roadmap
+
+| Phase | Milestone |
+|---|---|
+| P1 | RV64I five-stage pipeline + hazard handling (Done) |
+| P2 | CSR + M/S/U privilege levels + Trap (Done) |
+| P3 | MMU (TLB + PTW) |
+| P4 | Cache + AXI4-Full Burst |
+| P5 | Peripherals + AXI4-Lite bridge + SoC integration |
+| P6 | Pass riscv-arch-test (In Progress: strict suites above all pass) |
+| P7 | M/F/D/A/C extensions + FPGA bring-up |
+
+## License
+
+[GPLv3](LICENSE)