Skip to main content

The Mini Core

  • Mini core is a RISC-V core that supports the RV32I and RV32E instruction set. The core is pipelined and has 5 stages: IF, ID, EX, MEM, WB. The core is written in SystemVerilog. The core is written in a modular way, so it is easy to add or remove modules.

  • mini_core.sv is the top module of the core. It instantiates all the modules of the core and connects them together. The modules are connected by registers. The registers are named Q100H, Q101H, Q102H, Q103H, Q104H. The registers are used to pass data between the stages of the pipeline.

  • The mini_core share some common files that used in other cores and includes macros, parameters and typedefs.

  • We strongly recommend to learn the mini_core architecture and code in details because its the base of all the other cores and MAFIA project.

Mini Core Files and location

modulefile namecoding style namedescriptionlinklocation in MAFIA repository
mini_coremini_core.svmain file with all instantiations/source/mini_core/
fetchmini_core_if.svQ100Hfetch instruction from instruction memoryif/source/mini_core/
decode1mini_core_id.svQ101Hdecode instruction and read register filedecode/source/mini_core/
executionmini_core_exe.svQ102Hexecute instructionexe/source/mini_core/
memorymini_core_mem.svQ103Hread/write memorymem_acs/source/mini_core/
write_backmini_core_wb.svQ104Hwrite back to register filewb/source/mini_core/

Package files and macros locations

file namedescriptionlocation
macros.svmacros file, mostly DFF types/source/common/
mini_core_pkg.svenums, structs & parameters for the MAFIA core/source/mini_core/
common_pkg.svcommon parameters, structs, enums used in the many_core_project/source/common/
big_core_pkg.svcommon parameters, structs, enums used in the many_core_project/source/bog_core/

  1. Decode stage has two modules. The first one is the decoder module: mini_core_id.sv and second one is the register file module: mini_core_rf.sv