{
  "schema": "semiagora.sram-memory-depth.v1",
  "version": "2026-08-12-v60",
  "experiment_id": "SA-MEM-DEPTH-READ-DISTURB-001",
  "title": "SRAM read-disturb sizing replay",
  "execution_mode": "precomputed-only",
  "model_boundary": "Educational replay built from rights-clean synthetic and analytic data. It is not a measured macro, post-layout SRAM, foundry characterization, or product signoff result.",
  "metric_contract": {
    "name": "read-disturb sizing budget",
    "input_axes": [
      "cell ratio: pull-down/access strength proxy",
      "wordline pulse width"
    ],
    "observation": "read-disturb peak and read-SNM proxy are kept separate before a retained/not-retained label",
    "pass_rule": "disturb budget >= 70 mV in this teaching replay"
  },
  "cases": [
    {
      "id": "disturb-cr12-wl1",
      "cell_ratio": 1.2,
      "wordline_pulse_ns": 1,
      "read_disturb_peak_mv": 132.6,
      "read_snm_proxy_mv": 158,
      "disturb_budget_mv": 102.3,
      "retained": true
    },
    {
      "id": "disturb-cr12-wl25",
      "cell_ratio": 1.2,
      "wordline_pulse_ns": 2.5,
      "read_disturb_peak_mv": 185.3,
      "read_snm_proxy_mv": 144.5,
      "disturb_budget_mv": 66.7,
      "retained": false
    },
    {
      "id": "disturb-cr12-wl4",
      "cell_ratio": 1.2,
      "wordline_pulse_ns": 4,
      "read_disturb_peak_mv": 224.7,
      "read_snm_proxy_mv": 131,
      "disturb_budget_mv": 36.6,
      "retained": false
    },
    {
      "id": "disturb-cr15-wl1",
      "cell_ratio": 1.5,
      "wordline_pulse_ns": 1,
      "read_disturb_peak_mv": 116.4,
      "read_snm_proxy_mv": 181.4,
      "disturb_budget_mv": 132.5,
      "retained": true
    },
    {
      "id": "disturb-cr15-wl25",
      "cell_ratio": 1.5,
      "wordline_pulse_ns": 2.5,
      "read_disturb_peak_mv": 158.7,
      "read_snm_proxy_mv": 167.9,
      "disturb_budget_mv": 101.2,
      "retained": true
    },
    {
      "id": "disturb-cr15-wl4",
      "cell_ratio": 1.5,
      "wordline_pulse_ns": 4,
      "read_disturb_peak_mv": 190.1,
      "read_snm_proxy_mv": 154.4,
      "disturb_budget_mv": 74.6,
      "retained": true
    },
    {
      "id": "disturb-cr18-wl1",
      "cell_ratio": 1.8,
      "wordline_pulse_ns": 1,
      "read_disturb_peak_mv": 105.7,
      "read_snm_proxy_mv": 204.8,
      "disturb_budget_mv": 160.4,
      "retained": true
    },
    {
      "id": "disturb-cr18-wl25",
      "cell_ratio": 1.8,
      "wordline_pulse_ns": 2.5,
      "read_disturb_peak_mv": 140.9,
      "read_snm_proxy_mv": 191.3,
      "disturb_budget_mv": 132.1,
      "retained": true
    },
    {
      "id": "disturb-cr18-wl4",
      "cell_ratio": 1.8,
      "wordline_pulse_ns": 4,
      "read_disturb_peak_mv": 167.1,
      "read_snm_proxy_mv": 177.8,
      "disturb_budget_mv": 107.6,
      "retained": true
    },
    {
      "id": "disturb-cr21-wl1",
      "cell_ratio": 2.1,
      "wordline_pulse_ns": 1,
      "read_disturb_peak_mv": 98,
      "read_snm_proxy_mv": 228.2,
      "disturb_budget_mv": 187,
      "retained": true
    },
    {
      "id": "disturb-cr21-wl25",
      "cell_ratio": 2.1,
      "wordline_pulse_ns": 2.5,
      "read_disturb_peak_mv": 128.2,
      "read_snm_proxy_mv": 214.7,
      "disturb_budget_mv": 160.9,
      "retained": true
    },
    {
      "id": "disturb-cr21-wl4",
      "cell_ratio": 2.1,
      "wordline_pulse_ns": 4,
      "read_disturb_peak_mv": 150.7,
      "read_snm_proxy_mv": 201.2,
      "disturb_budget_mv": 137.9,
      "retained": true
    }
  ],
  "derived_metrics": {
    "case_count": 12,
    "retained_cases": 10,
    "failing_cases": 2,
    "minimum_retained_budget_mv": 74.6,
    "best_budget_mv": 187,
    "worst_disturb_peak_mv": 224.7
  },
  "verification": {
    "larger_cell_ratio_improves_budget": true,
    "longer_wordline_pulse_increases_disturb": true,
    "read_snm_and_dynamic_disturb_are_separate": true,
    "retained_cases_have_budget_above_threshold": true
  },
  "limitations": [
    "Cell ratio is a normalized sizing proxy, not a taped-out layout dimension.",
    "The replay does not model half-select, local variation, temperature, aging, array IR drop, or sense-amplifier kickback.",
    "Read SNM proxy and dynamic disturb are teaching quantities; neither is a silicon Vmin claim.",
    "The pass rule is for learning how to read evidence, not for SRAM compiler or bitcell qualification."
  ],
  "sources": [
    {
      "label": "UCLA eScholarship SRAM sense amplifier thesis",
      "url": "https://escholarship.org/content/qt0xn2r2wx/qt0xn2r2wx_noSplash_78b1af6aa1f3f19975d8ea05d02b6c16.pdf",
      "note": "Public thesis used for offset, attenuation, control-timing, and sense-amplifier vocabulary."
    },
    {
      "label": "Grossar et al. SRAM read stability and write-ability",
      "url": "https://lirias.kuleuven.be/retrieve/109654",
      "note": "Public paper used for read-stability, write-ability, SNM, and N-curve vocabulary."
    },
    {
      "label": "NVIDIA reverse write assist and SRAM VMIN paper",
      "url": "https://research.nvidia.com/sites/default/files/pubs/2014-03_A-Reverse-Write/ISQED14.pdf",
      "note": "Public paper used to anchor assist, reverse assist, VMIN, guardband, and canary vocabulary."
    },
    {
      "label": "CS61C average memory access time notes",
      "url": "https://notes.cs61c.org/content/caches-intro/amat/",
      "note": "Public course note used for hit time, miss rate, miss penalty, and AMAT vocabulary."
    }
  ]
}
