You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
analog M3c-1: PSP103 drain and gate charge tables (tt, ss) and the 500 fF inverter against ngspice backward Euler #10880
The charge half of #10777 (M3c of #10486): the drain and gate charge of the IHP SG13G2 sg13_lv_nmos (W 1.0 um) and sg13_lv_pmos (W 3.0 um), L 0.45 um, as tables on the M3b grid (25 x 25 nodes of 62.5 mV over 0 .. 1.5 V) for the corners tt and ss, made from ngspice-47 and PSP103 (IHP-Open-PDK commit 21133f219b1a6da10d803e345761e77415ceff40, 27 C), and the table solver of M3a generalized to use them. Measured before this issue (M3b, PR #10778): the tt inverter at 500 fF and dt = 100 ps is 3.09 percent (tpLH) and 3.63 percent (tpHL) faster than ngspice backward Euler on the same grid, because a current-only table has no device capacitance.
This issue is the finished part of #10777; the weak-inversion read and the other corners stay there (see the issues it files).
Boundary
specs/analog/mos_psp103_data.t27
specs/analog/mos_psp103.t27
specs/analog/mos_table.t27
specs/analog/decks/psp103_q_tt.cir
specs/analog/decks/psp103_q_ss.cir
specs/analog/decks/psp103_inv_be_500f.cir
Scenarios
Given the tt drain-charge tables from ngspice+PSP103, when the inverter at 500 fF and dt = 100 ps runs the 400 steps of M3b, then tpLH and tpHL are within 1 percent of ngspice backward Euler on the same grid, and the three errors (arithmetic, table plus model, discretization) are reported apart.
Given the ss charge tables loaded into the tt run, when compared with ngspice tt backward Euler, then the check fails (negative control).
Given the charge tables, when their slopes at Vgs = 0.9 V, Vds = 0.75 V are compared with the capacitances ngspice reports at that operating point, then they agree within 1 percent.
Requirements
FR-001: Charge tables MUST name the PDK commit, the corner, W, L, the temperature and the grid, and MUST come from one ngspice deck run that also prints the current tables, byte for byte.
FR-002: A capacitance MUST be read off the same table as the charge it is the derivative of, as gm and gds are read off the table of Id.
FR-003: The reader MUST stay exact-integer and unsigned words, with no float on the board path, and the charge-aware solver MUST be the current-only solver with zero charge tables, not a copy of it.
Success Criteria
t27c test-report specs/analog/mos_psp103.t27 exits 0 with 0 vacuous passes, and the same for mos_table.t27 and mos_psp103_data.t27.
The tt inverter at 500 fF, dt = 100 ps: tpLH and tpHL within 1 percent of ngspice backward Euler on the same grid (was 3.09 percent and 3.63 percent); the tests hold 0.05 percent.
The ss charge tables in the tt run fail the check by at least 2.4 times its bound.
specs/analog/decks/psp103_q_tt.cir and specs/analog/decks/psp103_q_ss.cir regenerate the pasted arrays byte for byte.
python3 -I tools/dupe_scan.py reports 0 new duplicate bodies.
Activity
analog: PSP103 drain and gate charge tables (tt, ss), the charge-awar…