Skip to content

analog M3c-4: log-domain PSP103 current tables for ss, ff, fs and sf, each corner within 0.74 percent of its own ngspice run, 500 fF inverter delays within 0.032 percent - #11214

Merged
gHashTag merged 3 commits into
masterfrom
lane/wc-11211
Oct 20, 2026

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Closes #11211

analog M3c-4: log-domain PSP103 current tables for ss, ff, fs and sf, each corner within 0.74 percent of its own ngspice run, 500 fF inverter delays within 0.032 percent

Gates run on the merged tree (t27c from master): 11 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/mos_psp103.t27 tests=[40] fail=[0] vacuous=[0]
TEST specs/analog/mos_psp103_data.t27 tests=[11] fail=[0] vacuous=[0]
TEST specs/analog/mos_table.t27 tests=[20] fail=[0] vacuous=[0]
TEST specs/analog/mos_psp103_50c_data.t27 tests=[4] fail=[0] vacuous=[0]
TEST specs/analog/sar_comparator_psp.t27 tests=[13] fail=[0] vacuous=[0]
TEST specs/analog/sar_kick_net.t27 tests=[23] fail=[0] vacuous=[0]
TEST specs/analog/vacask_compare.t27 tests=[7] fail=[0] vacuous=[0]
TEST specs/analog/sar_comparator.t27 tests=[20] fail=[0] vacuous=[0]
TEST specs/analog/sar_switch.t27 tests=[14] fail=[0] vacuous=[0]
TEST specs/analog/sar_adc.t27 tests=[15] fail=[0] vacuous=[0]
TEST specs/analog/sar_kick.t27 tests=[10] fail=[0] vacuous=[0]
SEAL specs/analog/mos_psp103.t27 :: all hashes MATCH
SEAL specs/analog/mos_psp103_data.t27 :: all hashes MATCH
SEAL specs/analog/mos_table.t27 :: all hashes MATCH
SEAL specs/analog/mos_psp103_50c_data.t27 :: all hashes MATCH
SEAL specs/analog/sar_comparator_psp.t27 :: all hashes MATCH
SEAL specs/analog/sar_kick_net.t27 :: all hashes MATCH
SEAL specs/analog/vacask_compare.t27 :: all hashes MATCH
SEAL specs/analog/sar_comparator.t27 :: all hashes MATCH
SEAL specs/analog/sar_switch.t27 :: all hashes MATCH
SEAL specs/analog/sar_adc.t27 :: all hashes MATCH
SEAL specs/analog/sar_kick.t27 :: all hashes MATCH
TYPES RATCHET: CLEAN
DUPE failing=0 extra-vs-master=[]

Errors against each corner's own ngspice-47 run (relative, floor 1e-9 A, NMOS / PMOS, percent) and the 500 fF inverter against ngspice backward Euler of the same corner:

corner 576 midpoints 1000 R2 points 1000 cell centres tpLH, tpHL waveform
ff 0.048 / 0.104 0.430 / 0.432 0.490 / 0.613 0.0015, 0.0312 % 3188 units
ss 0.114 / 0.103 0.421 / 0.628 0.597 / 0.677 0.0020, 0.0236 % 2734 units
fs 0.086 / 0.100 0.588 / 0.633 0.727 / 0.734 0.0020, 0.0194 % 3027 units
sf 0.130 / 0.124 0.453 / 0.464 0.510 / 0.623 0.0017, 0.0192 % 2876 units

The worst of the 24 sets is 0.734 % (fs PMOS, cell centres). Each corner has its own gate scale fitted to its own 193 x 193 ngspice grid (the tt scale on the ff NMOS would be 1.2 % off on its own grid). Negative control: the tt log tables in the ss run are 546 % (NMOS) and 359 % (PMOS) off at the R2 points; over all 25 pairs of table corner and reference corner exactly the five diagonal pairs pass, the other 20 miss by 53 % or more. The committed decks were run twice on ngspice-47 and the numeric blocks are identical. Not done: a 10 pF check for the four corners (no ngspice 10 pF run of them exists); they are checked at 500 fF only.

🤖 Generated with Claude Code

claude and others added 3 commits October 20, 2026 10:00
…fs and sf from ngspice, each from its own run, with their held-out references

psp103_idpa_ss.cir, _ff, _fs and _sf are the tt deck of M3c-2 with the .lib section changed and the three numbers of the gate scale s(Vgs) fitted to the corner's own ngspice grid
(193 x 193 currents 7.8125 mV apart; vt 30 mV, v0 and a: ss 0.305 V / 0.725, ff 0.195 V / 0.650, fs 0.220 V / 0.525, sf 0.250 V / 0.775), plus four blocks the tt deck did not
need: the 1000 R2 points and the 576 midpoints of the corner (the linear decks of the other corners printed 200 R2 points and no midpoints). Run on ngspice-47 with the OSDI models,
twice: the numeric blocks of the two runs are identical.

mos_psp103_data.t27 holds the printed arrays in the layout of the tt tables (SS_LG_N, SS_LG_P, SS_CEN_N, SS_CEN_P, SS_R2K_N, SS_R2K_P, SS_MID_N, SS_MID_P and the same for ff,
fs, sf), the gate scales (SS_LOG_S ...), the pins (PIN_SS_LG, PIN_SS_CEN, PIN_SS_REF ...), the accessors lg_n, lg_p, cen_n, cen_p, mid_n, mid_p, r2k_n, r2k_p, log_s, and a test
that pins every array, checks the rv words against the corner's own scale, bounds the extremes, and finds the first 200 R2 points word for word equal to the corner's 200
from the linear decks (a second ngspice run). The reader is the one of mos_table.t27, unchanged. t27b: 11 tests pass; test-report: 0 vacuous.

Read with the bit-exact twin of the reader against the corner's own ngspice currents (floor 1e-9 A), the worst relative error over the 576 midpoints, the 1000 R2 points and
the 1000 cell centres is 0.73 % (fs PMOS, cell centres), 0.68 % (ss PMOS), 0.61 % (ff PMOS), 0.51 % (sf NMOS, 0.62 % PMOS): under the 1 % bar in every corner and device. The tests
of that bar and of the 500 fF inverter follow in the next commit.

Updates #11211

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…nd cell centres of ss, ff, fs and sf, the 500 fF inverter within 0.05 percent of each corner's own ngspice, the tt tables in an ss run fail by 359 times

mos_psp103.t27 holds the log tables of the four corners to the bar of #11211 (FR-003, FR-004), against each corner's own ngspice currents, with the one integer reader of
mos_table.t27 unchanged. Relative error with a floor of 1e-9 A, NMOS / PMOS, and the 500 fF inverter on the corner's log tables with its own drain charge against that corner's
ngspice backward Euler:

  corner  576 midpoints     1000 R2 points    1000 cell centres  tpLH, tpHL vs ngspice    waveform (units)
  ff      0.048 / 0.104 %   0.430 / 0.432 %   0.490 / 0.613 %    0.0015 %, 0.0312 %       3188
  ss      0.114 / 0.103 %   0.421 / 0.628 %   0.597 / 0.677 %    0.0020 %, 0.0236 %       2734
  fs      0.086 / 0.100 %   0.588 / 0.633 %   0.727 / 0.734 %    0.0020 %, 0.0194 %       3027
  sf      0.130 / 0.124 %   0.453 / 0.464 %   0.510 / 0.623 %    0.0017 %, 0.0192 %       2876

Five tests: the bar at all 24 sets (pinned both sides, with the points above the floor and the gap of the integer read to its f64 twin, at most 0.111 %); the 500 fF inverter
of each corner (delays under 0.05 %, last Newton residual 2 units, the run pinned by a fold, the waveform 2.0 to 2.7 times closer than the linear tables with the same charge);
the negative control (the tt log tables against the ss currents are 546 % and 359 % off, 359 times the bar or more; in ff, fs and sf 54 to 154 %; the tt tables in the 500 fF
inverter of a corner miss its delays by 60 to 283 times; over all 25 pairs of table corner and reference corner exactly the five diagonal pairs pass, the 20 others miss by 53 %
or more, 84 times the worst pass); the DC transfer (13 to 27 times closer to ngspice than the linear tables); and the linear tables of the corners (0.57 and more at the same sets).
The headers of both specs say what is measured and what is not (no 10 pF run per corner exists). test-report: mos_psp103 40 tests, mos_psp103_data 11, mos_table 20, mos_psp103_50c_data
4, sar_comparator_psp 13, sar_kick_net 23, vacask_compare 7, sar_comparator 20, sar_switch 14, sar_adc 15, sar_kick 10: 0 failed, 0 vacuous; t27b --check exits 0 for both specs.

Closes #11211

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… each corner within 0.74 percent of its own ngspice run, 500 fF inverter delays within 0.032 percent (Closes #11211)

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>
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-20 03:09:54 UTC

Summary

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

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=08d882e79f8d != 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).

@gHashTag
gHashTag merged commit ba1d0b6 into master Oct 20, 2026
34 of 38 checks passed
gHashTag pushed a commit that referenced this pull request Oct 20, 2026
Takes analog M3c-4 and M5c (#11214, #11215), which touch only specs/analog; compiler.rs is unchanged on master.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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 M3c-4: log-domain current tables for ss, ff, fs and sf against ngspice

2 participants