In order 5-stages pipeline MIPS64r6 SoC implementation with peripheral components, simulated and tested with Verilator.
mips64el-linux-gnu-binutilstoolchains(asandobjdump), they're under mips64el-linux-gnu-binutils in Arch.- [OPTIONAL] If you like to write C directly, I mainly use
mips64el-linux-gnu-gcc-bootstrapwithmuslassysroot. Usescripts/install_mips64el_musl.shto download musl and mips64el-linux-gnu-gcc-bootstrap. verilatorhttps://github.com/verilator/verilator for simulations.- [OPTIONAL]
sdl3https://github.com/libsdl-org/SDL for any simulation with VGA output. - [OPTIONAL]
lcovhttps://github.com/linux-test-project/lcov for gather coverage data. - [OPTIONAL]
capstonehttps://github.com/capstone-engine/capstone for show disassembly in debugger TUI.
cmake -B build .cmake --build build -j ${$(nproc)-1}to build all. All binaries are placed underbuild/bincmake --build build --target helpto list all targets./runAllTest.shto run all generated tests underbuild/bin(by cmake), and useDUMP_COV=1 ./runAllTest.shto dump coverage datacmake --build build --target <script_name>to compile script into memory.dat, e.g.fibonacci
- Basic 5-stages pipeline
- TUI GDB-style debugger (simulated)
- Peripherals by MMIO
- UART
- VGA
- Timer
- mock stdout
- Cache
- L1 inst & data cache and arbiter
- Interrupts
- Timer interrupt
- Break
- Syscall
-
out-of-order executiondouble-issue in-order - AXI
- Memory
- Branch prediction
- Multiplier/Divider
- FPU(cp1)
debugger_tuiGDB-style TUI debugger with information about pipeline(disassembly bycapstone), registers, memory, peripherals.SOC_debugenable debug print and press any key to step.SOC_simrun simulation under info log.SOC_run_simrun simulation without info log.SOC_VGA_simrun simulation with VGA output(provided bySDL3).VGA_simrun demo VGA simulation.
WIP