How mit-emze/cimloop works
CiMLoop is a configurable compute-in-memory (CiM) architecture modeling tool built around Timeloop and Accelergy. Users select macro, tile, chip, and system models and workload layers; the workspace combines those descriptions into a specification, runs mapping and energy estimation, and provides results for analysis. The repository also supplies published architecture models, memory-cell and component models, photonic accelerator examples, and scripts for parsing and plotting results. Source excerpts show the modeling and analysis utilities, but not every runtime detail; some subsystem links below reflect README documentation or remain unverified.
Main entry points: utils.py Spec Builder · arch Architecture Models · tl_output_parsing.py Output Parsing · X2X_ladder.py Energy Plug-ins
Components 24
Model Inputs
- Architecture Models
workspace/models/arch - Workload Layers
workspace/models/workloads - Memory Cells
workspace/models/memory_cells - Component Models
workspace/models/components - Macro Models
workspace/models/arch/1_macro - Tile Models
workspace/models/arch/2_tile - Chip Models
workspace/models/arch/3_chip - System Models
workspace/models/arch/4_system - Model Includes
workspace/models/include
Modeling Engine
- Top Specification
workspace/models/top.yaml.jinja2 - Spec Builder
workspace/scripts/utils.py - Array Processor
workspace/scripts/processors.py - Mapper Runner
workspace/scripts/utils.py - Energy Plug-ins
workspace/models/components/accelergy_plug_ins/X2X_ladder.py - Bit Helpers
workspace/models/components/accelergy_plug_ins/utils/bit_functions.py - Circuit Helpers
workspace/models/components/accelergy_plug_ins/misc.py
Analysis
- Output Parsing
workspace/scripts/tl_output_parsing.py - Result Utilities
workspace/scripts/utils.py - Notebook Tools
workspace/scripts/notebook_utils.py - Result Plotting
workspace/scripts/plots.py - Model Results
External Tools
- Timeloop
- Accelergy
Other components
- Modeler
Connections 24
- Modeler → Architecture Models: selects models
README.md - Modeler → Workload Layers: selects workloads
README.md - Architecture Models → Spec Builder: configures
workspace/scripts/utils.py - Workload Layers → Spec Builder: configures
workspace/scripts/utils.py - Memory Cells → Spec Builder: configures
- Component Models → Spec Builder: configures
- Macro Models → Architecture Models: specializes
README.md - Tile Models → Architecture Models: defines stage
- Chip Models → Architecture Models: defines stage
- System Models → Architecture Models: defines stage
- Model Includes → Spec Builder: supplies config
- Top Specification → Spec Builder: builds from
workspace/scripts/utils.py - Spec Builder → Array Processor: configures
workspace/scripts/utils.py - Spec Builder → Mapper Runner: runs specification
workspace/scripts/utils.py - Mapper Runner → Timeloop: invokes
workspace/scripts/utils.py - Mapper Runner → Accelergy: invokes estimation
workspace/scripts/utils.py - Energy Plug-ins → Bit Helpers: uses
workspace/models/components/accelergy_plug_ins/X2X_ladder.py - Energy Plug-ins → Circuit Helpers: uses
workspace/models/components/accelergy_plug_ins/X2X_ladder.py - Mapper Runner → Output Parsing: parses output
workspace/scripts/utils.py - Output Parsing → Model Results: produces
- Result Utilities → Output Parsing: uses
workspace/scripts/utils.py - Result Utilities → Result Plotting: uses
workspace/scripts/utils.py - Notebook Tools → Result Utilities: uses
workspace/scripts/notebook_utils.py - Model Results → Result Plotting: visualizes