The Linux-capable, out-of-order SoomRV rv32i core on GF180MCU.
The SoomRV RISC-V core was first developed for the OpenMPW-7 shuttle. Since then, development has steadily continued. Most importantly, SoomRV now implements the RISC-V Privileged Spec including virtual memory, enabling it to run Linux. In addition, countless microarchitectural details have been optimized or re-implemented, significantly improving performance and area-efficiency.
Due to size limitations on GF180MCU, this is a rather small instantiation of the core. Still, 2-wide superscalar OoO execution is possible, with a 32 entry ROB and 2KiB each of instruction and data caches. Registers are re-named, and instructions can be re-ordered arbitrarily by the Issue Queues. Two integer, or one integer and one memory access instruction can be executed simultaneously. SoomRV's AXI memory interface is converted to a simple 32-bit bus on the Caravel GPIO pins. External memory and MMIO devices can be connected to this bus via a support FPGA.
Verification of SoomRV was performed on the following three levels:
SoomRV/
subtree.sv2v
, GL simulation after synthesis with OpenLaneverilog/dv/soomrv
(run make
/make all_rtl
/make all_gl
or e.g. make ../programs/virtual_mem_gl
for a specific program)verilog/dv/cocotb
SoomRV has also been successfully synthesized for and run on FPGA via the same sv2v
+yosys
workflow used here (see SoomRV-Arty),
though in a somewhat different configuration.
SoomRV/
subtree and run make verilog
to convert SoomRV's SystemVerilog sources to a single core.v
Verilog file.SoomRV/core.v
to verilog/rtl/core.v
patch verilog/rtl/core.v verilog/dv/soomrv/iverilog_setup.patch
.make user_project_wrapper