Expected Output: 05_debug_digital

This document shows the expected console output and example figures from all examples in python/src/adctoolbox/examples/05_debug_digital/.

Summary

All examples in 05_debug_digital demonstrate digital output analysis capabilities:

Total Examples: 7

Categories: - Weight Calibration: exp_d01-d03 (lite, full, redundancy comparison) - Digital Debugging: exp_d11-d14 (bit activity, ENOB sweep, weight scaling, overflow check)

Key Features: - Foreground calibration using sine waves - Redundancy analysis for pipeline ADCs - Bit-level activity monitoring - Weight and radix calculations - Overflow detection

exp_d01_cal_weight_sine_lite.py

Description: Lightweight weight calibration using sine wave.

[Config] N=8192, Fs=1000 MHz, Fin=79.96 MHz, Bin=655
[Signal] Bit_width=12, MSB_mismatch=-1%, Quantized range=[4, 4091]

[Spectrum Before] ENOB= 8.05 b, SNDR= 50.21 dB, SFDR= 53.48 dB, SNR= 54.70 dB, NSD=-141.68 dBFS/Hz
[Spectrum Before] Noise Floor= -54.69 dBFS, Signal Power=  0.01 dBFS

[Spectrum After]  ENOB=11.99 b, SNDR= 73.95 dB, SFDR= 95.26 dB, SNR= 73.95 dB, NSD=-160.94 dBFS/Hz
[Spectrum After]  Noise Floor= -73.95 dBFS, Signal Power= -0.00 dBFS

[Weight Recovery]
  True weights     : [2048.0, 1024.0, 512.0, 256.0, 128.0,  64.0,  32.0,  16.0,   8.0,   4.0,   2.0,   1.0]
  Recovered weights: [2042.3, 1031.5, 515.8, 257.8, 128.9,  64.4,  32.2,  16.1,   8.1,   4.0,   2.0,   1.0]

[Performance]
  Calibration Runtime: 10.51 ms
  SNDR: 50.21 dB -> 73.95 dB (calc: 12.94 dB)
  ENOB: 8.05 bit -> 11.99 bit (calc: 1.86 bit)
  Improvement: +23.74 dB, +3.94 bit

[Save fig] -> [D:\ADCToolbox\python\src\adctoolbox\examples\05_debug_digital\output\exp_d01_cal_weight_sine_lite.png]

exp_d02_cal_weight_sine.py

Description: Full weight calibration with detailed analysis.

[Nominal Resolution] 12 bits
[Weight Calibration] [ENoB =  8.05 bit] -> [ENoB = 12.02 bit]
  [Nominal]: [0.50000, 0.25000, 0.12500, 0.06250, 0.03125, 0.01562, 0.00781, 0.00391, 0.00195, 0.00098, 0.00049, 0.00024]
  [Real   ]: [0.49749, 0.25126, 0.12563, 0.06281, 0.03141, 0.01570, 0.00785, 0.00393, 0.00196, 0.00098, 0.00049, 0.00025] <-- Truth
  [Cal    ]: [0.49848, 0.25176, 0.12588, 0.06294, 0.03147, 0.01574, 0.00787, 0.00394, 0.00198, 0.00099, 0.00049, 0.00025] <-- Result

[Save fig] -> [D:\ADCToolbox\python\src\adctoolbox\examples\05_debug_digital\output\exp_d02_cal_weight_sine.png]
[Save fig] -> [D:\ADCToolbox\python\src\adctoolbox\examples\05_debug_digital\output\exp_d02_weight_error_comparison.png]

exp_d03_redundancy_comparison.py

Description: Compare calibration with and without redundancy.

[No Redundancy (MSB -2%)            ] [Nominal = 12.00 bit] [ENoB =  7.03 bit] -> [ENoB = 11.93 bit]
[No Redundancy (MSB +2%)            ] [Nominal = 12.00 bit] [ENoB =  7.04 bit] -> [ENoB = 10.20 bit]
[With Redundancy (MSB -2%)          ] [Nominal = 12.17 bit] [ENoB =  7.20 bit] -> [ENoB = 12.13 bit]
[With Redundancy (MSB +2%)          ] [Nominal = 12.17 bit] [ENoB =  7.19 bit] -> [ENoB = 12.18 bit]

[Save fig] -> [D:\ADCToolbox\python\src\adctoolbox\examples\05_debug_digital\output\exp_d03_redundancy_comparison.png]
[Save fig] -> [D:\ADCToolbox\python\src\adctoolbox\examples\05_debug_digital\output\exp_d03_weight_error_comparison.png]

exp_d11_bit_activity.py

Description: Check bit activity for digital debugging.

[ideal                   ] [Bits = 12] [ENoB = 12.31] [Activity = 50.0% - 50.0%]
[+1% DC Offset           ] [Bits = 12] [ENoB =  9.82] [Activity = 50.3% - 53.3%]
[-1% DC Offset           ] [Bits = 12] [ENoB =  9.82] [Activity = 46.7% - 49.7%]
[Poor contact in Bit-11  ] [Bits = 12] [ENoB = 11.21] [Activity = 45.1% - 50.0%]

[Save fig] -> [D:\ADCToolbox\python\src\adctoolbox\examples\05_debug_digital\output\exp_d11_bit_activity.png]

exp_d12_sweep_bit_enob.py

Description: Sweep bit count to find optimal ENOB.

[Binary ADC with Thermal Noise                ] Runtime=  21.62ms, Nominal=12.00 bit, Max_ENOB=11.20 bit @ 12 bits, Final_ENOB=11.20 bit
[Binary ADC with Thermal Noise + LSB random   ] Runtime=  21.78ms, Nominal=12.00 bit, Max_ENOB=10.69 bit @ 11 bits, Final_ENOB=10.69 bit

[Save fig] -> [D:\ADCToolbox\python\src\adctoolbox\examples\05_debug_digital\output\exp_d12_sweep_bit_enob.png]

exp_d13_weight_scaling.py

Description: Analyze weight scaling and radix calculations.

[Strict Binary Weights ] [Resolution = 12.00 bit] [Average Radix = 2.0000]
[Sub-Radix-2 Weights   ] [Resolution = 12.34 bit] [Average Radix = 1.8196]

[Save fig] -> [D:\ADCToolbox\python\src\adctoolbox\examples\05_debug_digital\output\exp_d13_weight_scaling.png]

exp_d14_overflow_check.py

Description: Check for overflow in digital output codes.

[Binary ADC, Normal Range                ] Runtime= 33.62ms, MSB_range=[0.010, 0.990], Span=0.980
[Binary ADC, Large Signal                ] Runtime= 57.06ms, MSB_range=[0.000, 1.000], Span=1.000
[Sub-Radix with Redundancy               ] Runtime= 36.52ms, MSB_range=[0.010, 0.990], Span=0.980
[Sub-Radix, Insufficient Redundancy      ] Runtime= 34.90ms, MSB_range=[0.010, 0.990], Span=0.980

[Save fig] -> [D:\ADCToolbox\python\src\adctoolbox\examples\05_debug_digital\output\exp_d14_overflow_check.png]

---