3.15. Sodor Core

Sodor is a collection of 5 simple RV32MI cores designed for educational purpose. The Sodor core is wrapped in an tile during generation so it can be used as a component within the Rocket Chip SoC generator. The cores contain a small scratchpad memory to which the program are loaded through a TileLink slave port, and the cores DO NOT support external memory.

The five available cores and their corresponding generator configuration are:

  • 1-stage (essentially an ISA simulator) - Sodor1StageConfig

  • 2-stage (demonstrates pipelining in Chisel) - Sodor2StageConfig

  • 3-stage (uses sequential memory; supports both Harvard (Sodor3StageConfig) and Princeton (Sodor3StageSinglePortConfig) versions)

  • 5-stage (can toggle between fully bypassed or fully interlocked) - Sodor5StageConfig

  • “bus”-based micro-coded implementation - SodorUCodeConfig

For more information, please refer to the GitHub repository.

Configuration classes and Chipyard glue for Sodor live under generators/riscv-sodor/chipyard and are compiled directly from the Sodor repository sources. After running the standard setup (./build-setup.sh), build a config (e.g., 3-stage) with:

cd sims/vcs && make CONFIG=Sodor3StageConfig