1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# hw_sim ledger
## v0 (cell_v0.py, 2026-07-17): behavioral sanity
- 64-branch settle 1.14 us with ASSUMED 60 pF node — later shown ~100x optimistic.
- Two-phase offset rejection x376 (5 mV Vos).
## v1 (cell_v1.py, 2026-07-17): datasheet-anchored — FIRST REAL DESIGN VERDICT
Anchors: AD7528 R=11k typ, R_eq(code) 0.8R-2R, C_OUT 50-120 pF/chip, settling 350/400 ns
(the chip is never the bottleneck); MCP6022 GBW 10 MHz, Vos max 500 uV.
KEY PHYSICS: 64 OUT pins share the column bus -> C_bus = 64 x ~85 pF = 5.4 nF.
E1 (settle, commit <=3 us / kill >7 us):
naive (R_f=10k, no comp) 16.6 us KILLED
R_f=10k + C_f 93 pF 8.2 us killed
R_f=3k + C_f 170 pF 5.3 us survives kill, misses commit
R_f=1k + C_f 294 pF 3.14 us 5% over commit — borderline
E2 at (1k, 294pF): Vos 500 uV -> single-read 2.71 mV, two-phase differential 0.88 uV
= x3088 rejection, 100x under the 0.1 mV contrast floor. Offset story SOLID.
DESIGN OPTIONS to clear the commit gate (for Dillavou session):
(a) faster TIA: GBW 50 MHz class (e.g. OPA356/OPA2356 ~$1-2) -> projected ~1.4 us;
(b) bus segmentation: 2x32 loads, two TIAs, digital sum -> C_bus/2 -> ~2.2 us at 10 MHz;
(c) accept 3.14 us: wall-clock 9-14 d -> ~5% slip, not a cliff.
NEXT (v1.1): resistor-mismatch Monte Carlo -> ENOB-after-cal proxy; op-amp noise integration
vs contrast floor; then stage C = SPICE-in-the-loop EP training (8x8 toy).
|