Skip to content

analog M4b-q: the dynamic comparator with the devices charge and the body effect at 27 C, decision time within 1.8 percent of ngspice; acceptance 7 PASS, 0 FAIL, 6 NOT MODELLED - #11325

Merged
gHashTag merged 2 commits into
masterfrom
lane/cmp-charge-11312
Oct 20, 2026

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Closes #11312

analog M4b-q: the dynamic comparator with the devices charge and the body effect at 27 C, decision time within 1.8 percent of ngspice; acceptance 7 PASS, 0 FAIL, 6 NOT MODELLED

Gates run on the merged tree (t27c from master): 3 spec(s) with tests clean and vacuous passes 0, seal --verify MATCH, tri types ratchet CLEAN, dupe_scan failure set a subset of master's (inherited red).

TEST specs/analog/sar_comparator_q.t27 tests=[8] fail=[0] vacuous=[0]
TEST specs/analog/sar_comparator.t27 tests=[20] fail=[0] vacuous=[0]
TEST specs/analog/accept_sar.t27 tests=[15] fail=[0] vacuous=[0]
SEAL specs/analog/sar_comparator_q.t27 :: all hashes MATCH
SEAL specs/analog/sar_comparator.t27 :: all hashes MATCH
SEAL specs/analog/accept_sar.t27 :: all hashes MATCH
TYPES RATCHET: CLEAN
DUPE failing=4 extra-vs-master=[]

🤖 Generated with Claude Code

claude and others added 2 commits October 20, 2026 17:56
… the body effect at 27 C -- decision time +1.75 percent from ngspice's own run (613.07 ps against 602.54 ps), accept_sar now 7 PASS, 0 FAIL, 6 NOT MODELLED of 13 blocks (Closes #11312)

specs/analog/sar_comparator_q.t27 (new): the eight-node latch of sar_comparator.t27 on the tt 27 C PSP103 log tables read on the source-to-bulk axis (M3e), with the drain, gate and source charge of the M3c tables and the same backward Euler charge step, 1.6 ps, K = 4 Newton iterations. The source terminal's charge, whose bulk part is not tabulated, is closed by its two edges (Qs = Qd at Vds = 0, Qs = 0 at a gate drive of 0, exactly); without it the Newton step does not converge. The tables are extended linearly beyond 0 and 1.5 V so that charge and slope are one function.

Decision time at +2 and -2 mV: 613.07 ps and 613.15 ps against ngspice-47 on the golden comparator at 27 C, 602.54 ps (settled start): +1.75 and +1.76 percent, +1.62 percent against ngspice's backward Euler on the same grid, +1.00 percent against the report's 607 ps; +1.75 to +3.11 percent over every input down to 1 unit. End levels at 2 ns within 0.5 mV and reset levels 1.4 ns after the clock falls within 0.2 mV of ngspice's. Negative controls: charge removed 5.40 ps (FAIL), no body effect -5.30 percent, no closure / swapped tables / K = 2 refused by the residual.

Decks (specs/analog/decks/sar_cmp_q_*.cir): the comparator written out (no golden file read), proven to be the golden comparator by reproducing its 523.032 / 528.006 / 529.386 / 529.741 ps at 50 C; the settled, golden-deck (uic, disturbed by the devices' internal nodes) and free starts; the backward Euler grids. The settled and free starts give 602.54 and 607.145 ps, the report's 607 ps.

sar_comparator.t27: sc_stamp_chan split in two (sc_stamp_chan_w, with a body slope that is 0 for every old caller): its 20 tests and pinned folds are unchanged. accept_sar.t27: the dynamic_comparator rows recomputed from the new model, a row PASS only inside the report's limit and within the bar of ngspice (10 percent for the time, 5 mV for a level); the block is PASS. docs/analog/accept-sar-2026-10-20.md: counts, table, section 3d, controls.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…body effect at 27 C, decision time within 1.8 percent of ngspice; acceptance 7 PASS, 0 FAIL, 6 NOT MODELLED (Closes #11312)

Merge of master plus sealing, gates run on the merged tree with t27c from master: tests clean with vacuous passes 0, seal --verify MATCH, tri types ratchet CLEAN, dupe_scan failure set a subset of master's.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) October 20, 2026 11:00
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-20 11:00:42 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 47
PRs with All Checks Green 3
READY 2
FAILING 47
PENDING 0
NO CHECKS YET 0

These columns do not partition: 2 + 47 + 0 + 0 = 49, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=5aec047d42ec != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

analog M4b-q: the dynamic comparator with the devices charge and the body effect at 27 C, so its decision-time row is computed, not 98 times too fast

2 participants