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 M4: the SAR ADC of the golden deck -- capacitive DAC, dynamic comparator, sampling switch, SAR logic, then the whole converter against ngspice #10524
M4 of #10486, re-targeted on 2026-10-18 by the partner (Symbiotic EDA): the ring oscillator is a digital block and not relevant to them; the ADC is. The acceptance circuit is the SAR ADC of uberWAVE's golden deck (wp2-parser/golden/top.spice, xschem, IHP SG13G2, GPL-2.0, used at run time, never vendored) and the reference waveform is the ngspice result of that deck (SAR_top_tb_tran.raw, ASCII RAW; a 1 GB variant is in uberWAVE's release). The deck runs tran 0.1n 16u with a 62.5 kHz differential sine on Vinp/Vinn and a 2 MHz sample clock.
M4c -- sampling switch (tracking_switch): a bootstrapped NMOS switch, 7 transistors. Check: tracking error and charge injection against ngspice.
M4d -- SAR logic and clocks (SAR_logic, clock_gen, dff, nand, nor3, delay_cell, tgate): transistor-level digital. First at switch/gate level extracted from the netlist, with the extraction checked against ngspice edges; the analog blocks above stay at device level (mixed-level emulation).
M4e -- the whole converter: the output code of every conversion in the 16 us run equals the code ngspice produces from the same deck (read from the golden RAW), and the analog nodes VDP/VDN stay within the stated bound.
Correction to #10540's premise (mine): I wrote that the 1-unit bridge carries a built-in gain error because the ideal bridge for a 5 + 5 split is 32/31 of a unit. That holds only for an LSB array with a dummy unit (32 units). The deck's LSB array has 31 units and no dummy, and for it the ideal bridge is CL/31 = exactly 1 unit. Measured in PR #10575 over all 1024 codes of one half: the staircase is perfectly straight (INL 0; every Vout ratio is 2^(j-1)/1023), and the only deviation from a nominal 10-bit half is a gain error of (2c - 1023)/2046 LSB, at most 0.5 LSB at codes 0 and 1023. So the DAC topology is not a source of the converter's code error; the integration error has to come from elsewhere (comparator, switch, logic timing). The lane that built #10575 found and flagged this.
Activity
gHashTag commentedon Oct 18, 2026
Correction to #10540's premise (mine): I wrote that the 1-unit bridge carries a built-in gain error because the ideal bridge for a 5 + 5 split is 32/31 of a unit. That holds only for an LSB array with a dummy unit (32 units). The deck's LSB array has 31 units and no dummy, and for it the ideal bridge is CL/31 = exactly 1 unit. Measured in PR #10575 over all 1024 codes of one half: the staircase is perfectly straight (INL 0; every Vout ratio is 2^(j-1)/1023), and the only deviation from a nominal 10-bit half is a gain error of (2c - 1023)/2046 LSB, at most 0.5 LSB at codes 0 and 1023. So the DAC topology is not a source of the converter's code error; the integration error has to come from elsewhere (comparator, switch, logic timing). The lane that built #10575 found and flagged this.
analog: sar_cdac.t27 -- the SAR ADC split capacitive DAC with its 1-u…
analog: sar_comparator.t27 -- the SAR ADC dynamic comparator, multi-n…
analog M4e: the whole SAR converter -- our own ngspice + PSP103 codes…