How rkycodes/opencorex works
OpenCoreX is a simulation-focused multicycle RV32 subset CPU with scalar multiply and a blocking, single-lane digital matvec accelerator. Its runtime path executes program images on the CPU, uses a shared RAM interface, and can submit accelerator work; the repository also provides generation and study tooling for matvec, GEMM, scaling, cache, convolution, tiling, and latency experiments. RTL wiring is not excerpted here, so hardware links below rely on README-level descriptions; study-tool links use the supplied source index.
Main entry points: run_cache_study.py Cache Study · run_gemm_large.py Large GEMM · evaluation Study Results · opencorex_core.sv RV32 Core
Components 28
CPU Core
- RV32 Core
rtl/cpu/opencorex_core.sv - Decode Control
rtl/cpu/controller.sv - Execution Datapath
rtl/cpu/datapath.sv - ALU
rtl/cpu/alu.sv - Register File
rtl/cpu/register_file.sv
Memory System
- Memory Subsystem
rtl/system/opencorex_memory_subsystem.sv - Address Router
rtl/system/cpu_address_router.sv - Shared RAM
rtl/memory/memory.sv - Memory Interconnect
rtl/memory/memory_interconnect.sv - Instruction Cache
rtl/memory/instruction_cache.sv
PIM Accelerator
- PIM Subsystem
rtl/system/opencorex_pim_subsystem.sv - Matvec Accelerator
rtl/pim/pim_accelerator.sv - Command Validation
rtl/pim/pim_command_validator.sv - Vector Buffer
rtl/pim/pim_vector_buffer.sv
Benchmark Studies
- GEMM Studies
scripts/run_gemm_study.py - Large GEMM
scripts/run_gemm_large.py - Scaling Study
scripts/run_scaling_study.py - Tiling Study
scripts/run_tiling_study.py - Cache Study
scripts/run_cache_study.py - Latency Sweep
scripts/run_memory_latency_sweep.py - Conv1 Study
scripts/run_conv1_study.py - Study Results
docs/evaluation
Generation and Replay
- Program Images
programs - Image Generator
scripts/generate_matvec_1x16_16x32.py - GEMM Generator
scripts/generate_gemm.py - Conv1 Generator
scripts/generate_conv1.py - Independent Replay
scripts/gemm_large_trace.py
Other components
- Engineer
Connections 45
- Engineer → Program Images: selects image
README.md - Program Images → RV32 Core: executes image
README.md - RV32 Core → Execution Datapath: runs instructions
- RV32 Core → Decode Control: decodes instructions
- Execution Datapath → Register File: reads registers
- Execution Datapath → ALU: performs arithmetic
- RV32 Core → Memory Subsystem: accesses memory
README.md - Memory Subsystem → Address Router: routes addresses
- Memory Subsystem → Memory Interconnect: uses shared port
README.md - Memory Interconnect → Shared RAM: accesses RAM
README.md - Memory Subsystem → Instruction Cache: fetches instructions
- RV32 Core → PIM Subsystem: launches work
README.md - PIM Subsystem → Matvec Accelerator: dispatches commands
- Matvec Accelerator → Command Validation: validates commands
- Matvec Accelerator → Vector Buffer: uses vector buffer
README.md - Engineer → Image Generator: generates inputs
README.md - Image Generator → Program Images: writes images
- GEMM Generator → Image Generator: reuses encoders
scripts/generate_gemm.py - GEMM Generator → Program Images: generates GEMM images
scripts/generate_gemm.py - Engineer → GEMM Studies: runs study
README.md - GEMM Studies → GEMM Generator: generates programs
scripts/run_gemm_study.py - GEMM Studies → Cache Study: runs cache cases
scripts/run_gemm_study.py - GEMM Studies → Latency Sweep: uses latency fields
scripts/run_gemm_study.py - Large GEMM → GEMM Generator: generates programs
scripts/run_gemm_large.py - Large GEMM → Cache Study: runs cache cases
scripts/run_gemm_large.py - Large GEMM → Latency Sweep: uses latency sweep
scripts/run_gemm_large.py - Large GEMM → Independent Replay: replays traces
scripts/run_gemm_large.py - Scaling Study → Cache Study: runs cache study
scripts/run_scaling_study.py - Scaling Study → Latency Sweep: uses latency sweep
scripts/run_scaling_study.py - Tiling Study → Cache Study: runs cache study
scripts/run_tiling_study.py - Tiling Study → Latency Sweep: uses latency sweep
scripts/run_tiling_study.py - Conv1 Study → Conv1 Generator: generates cases
scripts/run_conv1_study.py - Conv1 Study → Cache Study: uses cache study
scripts/run_conv1_study.py - GEMM Studies → Study Results: records evidence
README.md - Engineer → Large GEMM: runs study
README.md - Engineer → Scaling Study: runs study
README.md - Engineer → Tiling Study: runs study
README.md - Engineer → Conv1 Study: runs study
- Engineer → Cache Study: runs study
README.md - Engineer → Latency Sweep: runs sweep
- Large GEMM → Study Results: records evidence
README.md - Scaling Study → Study Results: records evidence
README.md - Tiling Study → Study Results: records evidence
README.md - Cache Study → Study Results: records evidence
README.md - Conv1 Study → Study Results: records evidence
README.md