-
Notifications
You must be signed in to change notification settings - Fork 2
HW Verify Issue 36 SSA Gain Calibration
Item: Issue #36 (Discontinuities in SSA curves due to error in front-end gain calibration for standard column-module loading). Board status: Needs HW Test · Track: Software · Priority: P1.
← back to Hardware Verification
For the standard front-end loading, the software gain model appears slightly
wrong, producing a glitch/discontinuity in some SSA (SQUID Series Array)
curves. The issue points at the gain application in _Tuning.py (the
current/voltage conversion for the amplifier chain). The task: do a careful
gain calibration on the bench and compare it against the software model, so the
discontinuity can be root-caused and the model corrected.
This is a calibration measurement, not a fix-confirmation — the deliverable is quantitative evidence of where the software model diverges from the measured front-end gain.
- A column module with SSAs (SLAC-cryostat testing is where it was seen; a representative front-end with the standard loading is the point).
- The ability to sweep SA bias/feedback and record the resulting SSA response — i.e. run an SA tune and inspect the raw curve for the discontinuity.
- The relevant front-end amplifier model nodes so you can compare measured vs. modeled gain.
-
Start the server, connect, choose an enabled set, and do the analog setup for your cryostat (see Common bench setup). In particular set the cable resistance used by the AFE amp models:
ops.set_cryo_resistance(Rcryo_Ohm=250.0) # roundtrip cable R (your value) → all AFE amps
-
Zero the setpoints, null the SA offset, and run an SA tune with enough steps to resolve the curve shape:
ncol = len(sess.group.ColTuneEnable.get()) sess.group.SaFbForceCurrent.set([0.0] * ncol) ops.sa_offset() sa_out = ops.sa_tune(SaBiasLowOffset=0.0, SaBiasHighOffset=1.0, SaBiasNumSteps=5)
-
Plot the SSA curves per column and look for the glitch/discontinuity described in the issue (a kink where the curve should be smooth):
# inspect the tune process plots, e.g.: sess.group.SaTuneProcess.PlotColumn.set(<col>)
Record which columns/loadings show it and where on the curve it sits.
- Read the front-end amplifier model's gain-related nodes (the ones
_Tuning.pyuses to convert between DAC current and referred SSA voltage/current) and note the modeled gain for the affected channels. -
Measure the actual front-end gain independently: apply known SA feedback /
input steps and record the measured output response (DMM/scope on the module
output, or the ADC readback
SaOutAdc), to get gain in physical units at several points across the curve — especially spanning the discontinuity. - Compare measured gain vs. the software model across the sweep. The discontinuity in the SSA curve should line up with where the modeled gain diverges from measured — that divergence is the bug.
- Capture the measured gain curve and the model's values side by side, and
note the correction needed in the
_Tuning.pygain application (the exact lines flagged in Issue #36). This feeds the software fix.
This is characterization; "pass" = a clear, quantitative comparison:
- SSA discontinuity reproduced and located on real hardware, with the column/loading noted.
- Measured front-end gain recorded at several points across the curve (physical units).
- Measured vs. modeled gain compared; the divergence that produces the discontinuity identified.
- Recommended correction to the software gain model documented on the issue.
- Firmware build stamp + git hash, software commit, conda env:
- Column module + front-end loading:
- SSA curves showing the discontinuity:
- Measured-vs-modeled gain table:
- Issue #36 (with the SSA-curve example and the
_Tuning.pylines flagged) -
software/python/warm_tdm_api/_Tuning.py— the gain conversion under suspicion -
operations.sa_tune/sa_offset/set_cryo_resistance - Related: Issue #27 (up/down-slope locking), Issue #59 (noisy SSA vs. ADC relock)