Intro
smarc is a simulation-first RISC-V architecture workspace for developing and validating sequencing-oriented SoC designs.
The current focus is workloads where ordered data movement dominates: molecular data (for miniature DNA sequencing machines), sensor and image streams (for environmental observations), and path-planning traces (for autonomous vehicles). The project is split into two complementary environments:
smilevalidates core behavior: instruction semantics, traps/debugger flow, stall behavior, and core-visible counters.smicrovalidates system behavior: memory arbitration, contention, cache and memory-control policy, and SoC topology.
In short: smile is core-centric, and smicro is fabric-centric.
Packages
- smile – core model and programs
Tile1: a simple RV32 core with a cleanMemoryPortinterface- Tiny test programs and support code for instruction decode/execute
- smicro – SoC harness and testbenches
- Instantiates cores, DRAM, memory controllers, testers
- Drives experiments via
./smicro -suite=... -topo=...
What can I do here?
- Run protocol and DRAM tests (
-suite=proto_*,-suite=hal_*) - Let the core run directly against DRAM (
-suite=proto_core) and watch instruction traces - Evolve the core and memory system together, while keeping the same high-level driver interface
When to use smile vs smicro
Use smile for…
- Checking what a small RISC-V program actually does to Tile1’s registers and memory
- Stepping instruction-by-instruction with a debugger to debug decode/execute/trap behavior
- Trying out CUSTOM-0 instructions and accelerators and verifying their results
Use smicro for…
- Testing the MemCtrl ↔ DRAM protocol and timing with scripted traffic
- Running Tile1 inside a small SoC harness to check system-level integration
- Exploring how different memory latencies/topologies affect request/response timing
For more detail, see: