ESSCIRC 2023 · JxCDC 2024 · JSSC 2025
Making MRAM-based in-memory computing more reliable.
This project follows one 22 nm MRAM in-memory-computing macro from a parasitic-aware behavioral model to measured silicon. Statistical error compensation, mixed-signal design, tapeout, and PYNQ bring-up are the stages in between.
The complete research arc
One idea, carried from behavioral model to measured silicon.
The project begins with one physical observation: row position changes analog contribution. Everything downstream follows from it. Each stage turns the output of the previous stage into a concrete design decision.
Describe the error with
MTJ variation, BL/SL parasitics, read noise, and ADC conversion pull the analog output away from ideal arithmetic. captures the contribution of row as observed by column , making the spatial structure explicit.
Correct it with and
pre-scales each row and normalizes each output column so that statistically. Precision studies fix the fixed-point path, and OCCS, the array, ADCs, and control close into one macro.
Close the design against one identifier
Frozen interfaces and golden vectors carry through mixed-signal verification, physical and package closure, and a release manifest the bench can execute.
Measure compute SNDR on silicon
Python, a PYNQ-Z2, and a custom PCB drive the packaged macro. Per-column calibration and code-conditioned sampling turn raw ADC captures into the measured result.
Why the problem is hard
A useful signal can be a fraction of one percent.
For a 128-row dot product, the paper’s representative conductance step is against a nominal column conductance . Bitline and sourceline voltage gradients, current-sensor noise, column mismatch, and supply drop compete directly with that small step.
A larger dot product activates more rows and accumulates more current, while the step between adjacent ideal outputs remains small. Compute SNDR becomes the link between array scaling and useful arithmetic.
The experiment selects an activation and weight state with a known ideal code.
A learned 7-bit factor adjusts the digital input before array evaluation.
MRAM state, BL/SL parasitics, and row location determine the column current.
Offset-compensated sensing feeds a 6-bit SAR conversion for each ADC column.
Per-column affine calibration and code-conditioned error turn raw codes into the reported metric.
Prototype at a glance
Four levels describe the same dot product.
A physical 1T1R array stores MRAM states, differential 2T2R pairs encode signed weights, OCCS and the SAR ADC convert column current, and SEC scales rows and columns to improve bank-level compute SNDR.
Physical memory
Commercial 22 nm FD-SOI, physical 1T1R MRAM cells, operated at .
Signed weight
A differential 2T2R logical representation forms signed 4-bit weights across binary-weighted physical columns.
Column conversion
128 ADC columns combine offset-compensated current sensing, a 6-bit SAR ADC, and local control.
SEC correction
Learned row scaling and per-column normalization improve task-agnostic bank-level compute SNDR.
Engineering record
From mathematical intent to a repeatable measurement.
This repository documents the decision gates that papers usually compress: what was modeled, what was frozen for implementation, what was checked at tapeout, what the board had to make observable, and how the measurement state space was sampled.
Behavior → architecture
Trace , , and from the behavioral model into OCCS, fixed-point precision, and dataflow.
Open design principles →Netlist → packaged die
Follow the mixed-signal design gates from bit-accurate correlation through physical verification, handoff, packaging, and post-silicon readiness.
Open tapeout workflow →Host → calibrated result
Follow the PYNQ, PCB, scan-chain, calibration, sampling, and analysis sequence used to interrogate silicon.
Open test platform →The role of SEC
The array learns its own correction.
Statistical error compensation calibrates the physical compute bank. The application weights stay fixed while SEC learns row factors and column normalizers from the measured hardware response.
This raises task-agnostic bank-level compute SNDR. The CIFAR-10 experiment then uses the measured final fully connected layer of ResNet-20 to show how that signal-quality change affects classification.
The ESSCIRC 2023 paper introduces the result as an SNR boost. The JSSC 2025 extension separates temporal noise and state-dependent distortion through the broader compute-SNDR methodology used throughout this site.