Repository navigation
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
Conversation
…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>
gHashTag
enabled auto-merge (squash)
October 20, 2026 03:08
Contributor
This was referenced Oct 20, 2026
gHashTag
pushed a commit
that referenced
this pull request
Oct 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
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