Skip to content

texerai/m3

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Memory Marionette Model (m3)

Overview

The Memory Marionette Model (m3) is a powerful verification library designed to expose subtle bugs in multicore memory subsystems. By implementing the Marionette Model methodology, m3 brings unmatched precision to memory operation tracking and validation—making it an essential tool for anyone serious about building reliable multicore processors.

Why use m3?

  • Enable co-simulation of multicore systems running share memory programs
  • Verify correct memory behavior in multicore systems
  • Track and validate memory operation ordering
  • Ensure memory consistency across cores
  • Support both in-order and out-of-order execution models
  • Provide comprehensive debugging and error detection capabilities

Key Features

  1. Marionette Model: Unlike traditional single-point "at commit" verification, m3 uses a marionette model that tracks operations throughout execution, enabling true co-simulation of multicore shared memory programs

  2. Comprehensive Operation Tracking: Tracks loads, stores, and atomic operations from issue through completion, with support for store-to-load forwarding and store merging

  3. Verification Mechanisms: Memory consistency checking, operation ordering validation, error detection and reporting, comprehensive state tracking

  4. Flexible Integration: Support for multiple emulators (Dromajo, Spike), bridge-based architecture for easy extension, configurable verification parameters

Build Instructions

  1. Clone the repository:

    git clone https://github.com/texerai/m3.git
    cd m3
  2. Install dependencies:

    # Ubuntu/Debian
    sudo apt install build-essential cmake
    
    # macOS
    brew install cmake
  3. Build the project:

    mkdir build
    cd build
    cmake ..
    make -j

The library will be built as libm3.a in the build directory. Headers will be in include/.

About

Memory Marionette Model

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 78.6%
  • Python 19.6%
  • CMake 1.5%
  • Verilog 0.3%