From 6075f29a44bf81324e1644dc0bc8f2b3aa7e5c70 Mon Sep 17 00:00:00 2001 From: Dan White Date: Sat, 6 Apr 2013 23:50:03 -0500 Subject: [PATCH] chip 14 gm testing --- python-lib/calibrate.py | 112 +++++- python-lib/slope-arb.py | 239 +++++++++---- .../vios-offset-gm/arb0-2013-04-06_225902.npz | Bin 0 -> 6558 bytes .../vios-offset-gm/arb0-2013-04-06_225902.pdf | Bin 0 -> 17342 bytes .../arb0-2013-04-06_225902.yaml | 335 ++++++++++++++++++ .../vios-offset-gm/arb0-2013-04-06_230721.npz | Bin 0 -> 6558 bytes .../vios-offset-gm/arb0-2013-04-06_230721.pdf | Bin 0 -> 17878 bytes .../arb0-2013-04-06_230721.yaml | 335 ++++++++++++++++++ .../vios-offset-gm/arb0-2013-04-06_231525.npz | Bin 0 -> 6558 bytes .../vios-offset-gm/arb0-2013-04-06_231525.pdf | Bin 0 -> 17484 bytes .../arb0-2013-04-06_231525.yaml | 335 ++++++++++++++++++ .../vios-offset-gm/arb0-2013-04-06_233301.npz | Bin 0 -> 6558 bytes .../vios-offset-gm/arb0-2013-04-06_233301.pdf | Bin 0 -> 17614 bytes .../arb0-2013-04-06_233301.yaml | 335 ++++++++++++++++++ .../vios-offset-gm/arb0-2013-04-06_233926.npz | Bin 0 -> 6558 bytes .../vios-offset-gm/arb0-2013-04-06_233926.pdf | Bin 0 -> 17631 bytes .../arb0-2013-04-06_233926.yaml | 335 ++++++++++++++++++ .../vios-offset-gm/arb0-2013-04-06_234532.npz | Bin 0 -> 6558 bytes .../vios-offset-gm/arb0-2013-04-06_234532.pdf | Bin 0 -> 17558 bytes .../arb0-2013-04-06_234532.yaml | 335 ++++++++++++++++++ 20 files changed, 2295 insertions(+), 66 deletions(-) create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_225902.npz create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_225902.pdf create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_225902.yaml create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_230721.npz create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_230721.pdf create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_230721.yaml create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_231525.npz create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_231525.pdf create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_231525.yaml create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233301.npz create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233301.pdf create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233301.yaml create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233926.npz create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233926.pdf create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233926.yaml create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_234532.npz create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_234532.pdf create mode 100644 python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_234532.yaml diff --git a/python-lib/calibrate.py b/python-lib/calibrate.py index 84fb306..cca3784 100644 --- a/python-lib/calibrate.py +++ b/python-lib/calibrate.py @@ -140,7 +140,7 @@ def secant_opt(func, x0, limits, elements=None, x1scale=0.1, maxiter=25, verbose max_step = r * 2**(-niter + 1) ia = find(abs(dp) > max_step) - if verbose and (len(ia) > 0): print 'limiting max steps:', ia + #if verbose and (len(ia) > 0): print 'limiting max steps:', ia dp.flat[ia] = sign(dp.flat[ia]) * max_step #force a +-1 step @@ -439,6 +439,63 @@ def arb_offsets(values, converged, mux_offset, verbose=True): return outs +def a01_zero(): + arb.h[0].otaA.zero = 1 + arb.h[0].otaB.zero = 1 + arb.write() + sleep(0.01) + arb.h[0].otaA.zero = 0 + arb.h[0].otaB.zero = 0 + arb.write() + +def a01_offsets(x, c, verbose=True): + #xi = int(x) + arb.h[0].otaA.offset = int(x[0]) + arb.h[0].otaB.offset = int(x[1]) + arb.write() + sleep(MUX_CAL_DELAY) + + ARB_DELAY = 1.0 + + a01_zero() + sleep(ARB_DELAY) + + mv = [0.0, 0.0] + for j in (0,): + adc.mux(6+j) + adc.read() + values = [] + for i in range(N_SAMPLES): + values.append(offset2signed(adc.read(), 16)) + sleep(SAMPLE_DELAY) + mv[j] = mean(values) + if verbose: print tpx(x[0]), tplot(mv[0]) + + return array(mv) + +def a0_offset(x, c, verbose=True): + #xi = int(x) + arb.h[0].otaA.offset = int(x[0]) + arb.write() + sleep(MUX_CAL_DELAY) + + ARB_DELAY = 1.0 + + a01_zero() + sleep(ARB_DELAY) + + mv = [0.0] + for j in (0,): + adc.mux(6+j) + adc.read() + values = [] + for i in range(N_SAMPLES): + values.append(offset2signed(adc.read(), 16)) + sleep(SAMPLE_DELAY) + mv[j] = mean(values) + if verbose: print tpx(x[0]), tplot(mv[0]) + + return array(mv) # TODO: commented out, ensure ADC is init'ed in the right places @@ -621,7 +678,60 @@ def calibrate(name, elements=None, verbose=True): for i,mode in enumerate(old_mode): amux.ota[i].mode = mode amux.write() + # + # Secondary direct arb.h[0].otaA ==> a0 + # + elif name == 'a0': + #adc setup + adc.reset() + adc.triggerMode(adc.MODE_IDLE) + adc.average(16) + adc.convst_spi(1) + adc.channelMode(6, adc.SE) #even channel only + adc.channelGain(6, 1) + adc.channelGain(7, 1) + adc.mux(6) + adc.triggerMode(adc.MODE_MANUAL_MANUAL) + + #amux affects operation, set to a consistent state + amux.otaA.mode = amux.otaB.mode = amux.otaA.CAL_CMP + amux.otaA.fast = amux.otaB.fast = 0 + amux.otaA.gain = amux.otaB.gain = 0 + amux.selA = amux.selB = 16 + amux.write() + + #old config + old_cint = [arb.h[0].ota[i].cint for i in range(2)] + + for i in range(2): + arb.h[0].ota[i].cint = 1 + arb.write() + def func(values, converging): + out = a0_offset(values, converging, verbose) + #outA = amux_a_offset(values[0], converging[0], verbose) + #outB = amux_b_offset(values[1], converging[1], verbose) + #out = zeros((2,)) + #out[0] = outA + #out[1] = outB + return out + + #setup initial guess, just use the current values + x0 = zeros((1,), dtype=int) + for i in range(1): + x0[i] = int(arb.h[0].ota[i].offset) + + offsets, stats = secant_opt(func, x0, limits, + elements=elements, + verbose=verbose, + maxiter=10) + #put cint back + for i in range(1): + arb.h[0].ota[i].cint = old_cint[i] + arb.write() + # + # OOPS + # else: print 'ERROR: unknown name %s' % name diff --git a/python-lib/slope-arb.py b/python-lib/slope-arb.py index 8018891..0b4e685 100644 --- a/python-lib/slope-arb.py +++ b/python-lib/slope-arb.py @@ -1,8 +1,58 @@ +#!/usr/bin/env python +from time import sleep + +import IPython +from pylab import * + +import devboard as dev +dev.init_devboard(1) + +# requires devboard be already initialized +#import calibrate as cal +import calibrate +cal = calibrate.calibrate + + +# ?are we already under an IPython shell? +in_ipython = IPython.core.interactiveshell.InteractiveShell.initialized() + +# ?be interactive afterwards? +do_shell = True + + +chain = dev.chain +mux = dev.mux + +arb = dev.arb +amux = dev.amux + +a0 = arb.h[0] + +vina = dev.dac.vina +vinb = dev.dac.vinb +vcmi = dev.dac.vcmi + +dac = dev.dac +adc = dev.adc + + +amux.otaA.mode = amux.otaB.mode = amux.otaA.CAL_CMP +amux.otaA.fast = amux.otaB.fast = 0 +amux.otaA.gain = amux.otaB.gain = 0 +amux.selA = amux.selB = 16 -amux.otaA.mode = amux.otaA.CAL_CMP -amux.otaB.mode = amux.otaB.CAL_CMP amux.write() +######################### + + + + + + + + + a0.otaA.fast = 0 a0.otaA.gain = 15 @@ -17,6 +67,50 @@ a0.otaB.offset = 118 arb.write() +def z(): + a0.otaA.zero = 1 + a0.otaB.zero = 1 + arb.write() + sleep(0.01) + a0.otaA.zero = 0 + a0.otaB.zero = 0 + arb.write() + + +def offset(v): + a0.otaA.offset = v + a0.otaB.offset = v + arb.write() + z() + + + +vios = 0.0 +vcmi(1.25) +def cal_vios(v): + global vios + vios = v + vina(vcmi() + v) + vinb(vcmi() - v) + z() + +print '***************************************************************' +print '***************************************************************' +print '**** please calibrate a0.otaA, then exit the inner interp *****' +print '**** please calibrate a0.otaA, then exit the inner interp *****' +print '**** please calibrate a0.otaA, then exit the inner interp *****' +print '**** please calibrate a0.otaA, then exit the inner interp *****' +print '***************************************************************' +print '***************************************************************' +IPython.embed() + + +#print '*** calibrating a0 and a1 ***' +#cal('a0') + + + + #vina = dev.dac.vina @@ -26,61 +120,58 @@ arb.write() #arb = dev.arb #a0 = arb.h[0] +interactive(True) -while True: - vcm = 1.25 +for g in (15,): + print + print '***********************************************************' + print '**** gain =', g + print '***********************************************************' + a0.otaA.fast = 0 + a0.otaA.gain = g + a0.otaA.cint = 1 + a0.otaA.offset = 118 - dev.adc.triggerMode(dev.adc.MODE_IDLE) - dev.adc.channelMode(6, dev.adc.SE) #even channel only - dev.adc.channelGain(6, 1) - dev.adc.channelGain(7, 1) - dev.adc.mux(6) - dev.adc.triggerMode(dev.adc.MODE_MANUAL_MANUAL) - dev.adc.read() + a0.otaB.fast = 0 + a0.otaB.gain = g + a0.otaB.cint = 1 + a0.otaB.offset = 118 - vout = [] - vd = [] - tint = [] + arb.write() - #for i in range(80,130,10): - if 1: - #print '****' - #print '* offset=', i + cal('a0') - #a0.otaA.offset = i - #a0.otaB.offset = i + while True: + dev.adc.triggerMode(dev.adc.MODE_IDLE) + dev.adc.channelMode(6, dev.adc.SE) #even channel only + dev.adc.channelGain(6, 1) + dev.adc.channelGain(7, 1) + dev.adc.mux(6) + dev.adc.triggerMode(dev.adc.MODE_MANUAL_MANUAL) + dev.adc.read() - #a0.otaA.cint = 1 - #a0.otaB.cint = 1 + vout = [] + vd = [] + tint = [] - #a0.otaA.fast = 1 - #a0.otaB.fast = 1 - - #a0.otaA.gain = 15 - #a0.otaB.gain = 15 - - #arb.write() - - #d = -2.5 + #for i in range(80,130,10): ti = 1.0 - timax = 4.1 - #while d >= -2.5 and d <= 2.5: - for d in arange(-2500e-3, 2500e-3+1e-3, 10e-3): + timax = 2.1 + for d in arange(-2500e-3, 2500e-3+1e-3, 20e-3): print d*1e3 vd.append(d) - #for ti in (0.4, 0.2, 0.1, 0.05, 0.025): while True: a0.otaA.zero=1; arb.write(); a0.otaA.zero=0; arb.write() dev.adc.read() v0 = dev.adc.read() * (2.5 / 2**16) - vina(vcm + d/2) - vinb(vcm - d/2) + vina(vcmi() + vios + d/2) + vinb(vcmi() - vios - d/2) sleep(ti) - vina(vcm) - vinb(vcm) + vina(vcmi() + vios) + vinb(vcmi() - vios) dev.adc.read() v1 = dev.adc.read() * (2.5 / 2**16) @@ -91,9 +182,9 @@ while True: print ti, vo tiold = ti - if abs(vo) < 0.5: + if abs(vo) < 0.45: ti *= 2.0 - elif abs(vo) > 1.1: + elif abs(vo) > 1.0: ti *= 0.5 else: break @@ -109,38 +200,56 @@ while True: #sleep(0.1) - break - -vout = array(vout) -vd = array(vd) -tint = array(tint) + break + + vout = array(vout) + vd = array(vd) + tint = array(tint) + + def mkgm(vd, vout, tint, Cint=50e-12): + dvout = diff(vout / tint) + dvd = diff(vd) + gm = Cint * dvout / dvd + return (vd[:-1], gm) + + figure() + suptitle('Chip #14, arb0\nVios = %.3f, offset = %i, gain = %i' % (vios, a0.otaA.offset, g)) + subplot(221) + plot(vd, vout, '.') + ylim((-1.25, 1.25)) -figure() -suptitle('Vout*tint vs. vd\nChip #14, arb0') -subplot(221) -plot(vd, vout, 'o') + subplot(222) + plot(vd, vout/tint, '.') + ylim((-6.0, 6.0)) -subplot(222) -plot(vd, vout/tint, 'o') + subplot(223) + plot(vd, tint, '.') + ylim((0, 4.5)) -subplot(223) -plot(vd, tint, 'o') -ylim([0, 1.2*tint.max()]) + subplot(224) + gm_easy = 50e-12 * vout / (vd * tint) + #plot(vd, gm_easy, '+') + #i = find(gm_easy == gm_easy.max())[0] + #ylim((0, 1.1*max(gm_easy[i-1], gm_easy[i+1]))) + vdgm, dgm = mkgm(vd, vout, tint) + plot(vdgm, dgm, '.') + #ylim((0.0, dgm.max())) + ylim((0.0, 300e-12)) -subplot(224) -gm = 50e-12 * vout / (vd * tint) -plot(vd, gm, 'o') -i = find(gm == gm.max())[0] -ylim((0, 1.1*max(gm[i-1], gm[i+1]))) + import datetime as dt + datestr = dt.datetime.now().strftime('%Y-%m-%d_%H%M%S') -import datetime as dt -datestr = dt.datetime.now().strftime('%Y-%m-%d_%H%M%S') + savefig('arb0-%s.pdf' % datestr) + savez('arb0-%s.npz' % datestr, vout=vout, vd=vd, tint=tint) + dev.save_config('arb0-%s.yaml' % datestr) -savefig('arb0-%s.pdf' % datestr) -savez('arb0-%s.npz' % datestr, vout=vout, vd=vd, tint=tint) -dev.save_config('arb0-%s.yaml' % datestr) +############################################################################## +# drop into an IPython shell +# +if do_shell and not in_ipython: + IPython.embed() diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_225902.npz b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_225902.npz new file mode 100644 index 0000000000000000000000000000000000000000..99b7dc623d0dcd4fe6f96038dbf911b26b74fb57 GIT binary patch literal 6558 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 J#q&y_{|^SirwsrA literal 0 HcmV?d00001 diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_225902.yaml b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_225902.yaml new file mode 100644 index 0000000..83103a3 --- /dev/null +++ b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_225902.yaml @@ -0,0 +1,335 @@ +amux: + csname: chain1_mux + otaA: {fast: 0, gain: 0, mode: 4, offset: 0} + otaB: {fast: 0, gain: 0, mode: 4, offset: 0} + selA: 16 + selB: 16 +arb: + csname: chain1_conf + harmonics: + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 1, fast: 0, gain: 15, offset: 105, se: 0, zero: 0} + otaB: {cint: 1, fast: 0, gain: 15, offset: 118, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + length: 16 +chain: + csname: chain0_conf + harmonics: + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 46, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 110, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 108, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 124, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 106, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 56, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 85, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 81, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 111, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 59, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 89, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 120, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 80, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 118, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 100, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 111, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 68, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 94, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 120, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 109, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 60, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 112, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 97, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 109, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 81, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 95, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 126, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 57, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 95, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 72, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 64, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 90, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 92, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 101, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 58, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 87, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 117, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 57, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 96, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 101, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 123, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 83, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 93, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 112, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 88, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 124, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 64, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 93, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 88, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 92, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 106, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + length: 48 +dac: {cs: dac, vbias_buf: 0.0, vbias_core: 0.0, vcmi: 1.24998935546875, vina: 1.2919711669921874, + vinb: 1.2080075439453124} +date: 2013-04-06_225903 +i2c: {delay: 0.0001, interface: 3, pid: 24593, scl: 0, sda: 1, timeout: 100, vid: 1027} +ibias: {addr: 0, gpo1: 0, gpo2: 0, posA: 128, posB: 128} +isupply: {AVdd_atoi: 0.0018875022460937499, DVdd_ns430: 0.00037701193359374996, Vdd_digi: 0.0201329501953125, + Vdd_ns430: 0.02017264208984375} +mux: + csname: chain0_mux + otaA: {fast: 1, gain: 15, mode: 2, offset: 44} + otaB: {fast: 1, gain: 15, mode: 2, offset: 81} + selA: 48 + selB: 48 +spi0: + cs: + _idle: [-1, 200] + _mask: [-1, 56] + adc: [1, 232] + convst: [1, 248] + dac: [1, 216] + flash: [3, 192] + freq: 1000000.0 + interface: 1 + latency: 1 + pid: 24593 + pindir: 251 + pinstate: 249 + vid: 1027 +spi1: + cs: + _idle: [-1, 248] + _mask: [-1, 248] + chain0_conf: [0, 240] + chain0_mux: [0, 232] + chain1_conf: [0, 216] + chain1_mux: [0, 184] + freq: 1000000.0 + interface: 2 + latency: 1 + pid: 24593 + pindir: 251 + pinstate: 184 + vid: 1027 +v430: + addr: 2 + aliases: {va: vdigi, vb: avdd} + gpo1: 0 + gpo2: 0 + posA: 201 + posB: 159 + va: 1.2008223529411763 + va_range: [0.5015, 1.3887] + vb: 2.5009129411764706 + vb_range: [1.9552, 2.8304] +vatoi: + addr: 2 + aliases: {va: vdigi, vb: avdd} + gpo1: 0 + gpo2: 0 + posA: 201 + posB: 159 + va: 1.2008223529411763 + va_range: [0.5015, 1.3887] + vb: 2.5009129411764706 + vb_range: [1.9552, 2.8304] diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_230721.npz b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_230721.npz new file mode 100644 index 0000000000000000000000000000000000000000..40afe0e193f2156ecaacbce648d9d7e04921cb90 GIT binary patch literal 6558 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
    9^MDqK{Z{lH^6bwNb1m(oMQ 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 E2abtxD*ylh literal 0 HcmV?d00001 diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_230721.yaml b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_230721.yaml new file mode 100644 index 0000000..f9b2a41 --- /dev/null +++ b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_230721.yaml @@ -0,0 +1,335 @@ +amux: + csname: chain1_mux + otaA: {fast: 0, gain: 0, mode: 4, offset: 0} + otaB: {fast: 0, gain: 0, mode: 4, offset: 0} + selA: 16 + selB: 16 +arb: + csname: chain1_conf + harmonics: + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 1, fast: 0, gain: 15, offset: 110, se: 0, zero: 0} + otaB: {cint: 1, fast: 0, gain: 15, offset: 118, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + length: 16 +chain: + csname: chain0_conf + harmonics: + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 46, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 110, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 108, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 124, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 106, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 56, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 85, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 81, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 111, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 59, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 89, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 120, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 80, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 118, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 100, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 111, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 68, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 94, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 120, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 109, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 60, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 112, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 97, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 109, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 81, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 95, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 126, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 57, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 95, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 72, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 64, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 90, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 92, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 101, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 58, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 87, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 117, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 57, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 96, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 101, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 123, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 83, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 93, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 112, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 88, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 124, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 64, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 93, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 88, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 92, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 106, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + length: 48 +dac: {cs: dac, vbias_buf: 0.0, vbias_core: 0.0, vcmi: 1.24998935546875, vina: 1.278994970703125, + vinb: 1.2209837402343748} +date: 2013-04-06_230723 +i2c: {delay: 0.0001, interface: 3, pid: 24593, scl: 0, sda: 1, timeout: 100, vid: 1027} +ibias: {addr: 0, gpo1: 0, gpo2: 0, posA: 128, posB: 128} +isupply: {AVdd_atoi: 0.001862771142578125, DVdd_ns430: 0.00037243209960937496, Vdd_digi: 0.0198032021484375, + Vdd_ns430: 0.019806255371093748} +mux: + csname: chain0_mux + otaA: {fast: 1, gain: 15, mode: 2, offset: 44} + otaB: {fast: 1, gain: 15, mode: 2, offset: 81} + selA: 48 + selB: 48 +spi0: + cs: + _idle: [-1, 200] + _mask: [-1, 56] + adc: [1, 232] + convst: [1, 248] + dac: [1, 216] + flash: [3, 192] + freq: 1000000.0 + interface: 1 + latency: 1 + pid: 24593 + pindir: 251 + pinstate: 249 + vid: 1027 +spi1: + cs: + _idle: [-1, 248] + _mask: [-1, 248] + chain0_conf: [0, 240] + chain0_mux: [0, 232] + chain1_conf: [0, 216] + chain1_mux: [0, 184] + freq: 1000000.0 + interface: 2 + latency: 1 + pid: 24593 + pindir: 251 + pinstate: 184 + vid: 1027 +v430: + addr: 2 + aliases: {va: vdigi, vb: avdd} + gpo1: 0 + gpo2: 0 + posA: 201 + posB: 159 + va: 1.2008223529411763 + va_range: [0.5015, 1.3887] + vb: 2.5009129411764706 + vb_range: [1.9552, 2.8304] +vatoi: + addr: 2 + aliases: {va: vdigi, vb: avdd} + gpo1: 0 + gpo2: 0 + posA: 201 + posB: 159 + va: 1.2008223529411763 + va_range: [0.5015, 1.3887] + vb: 2.5009129411764706 + vb_range: [1.9552, 2.8304] diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_231525.npz b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_231525.npz new file mode 100644 index 0000000000000000000000000000000000000000..e5db1c593d7c17e2f75a7734d17615383ef3711e GIT binary patch literal 6558 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 literal 0 HcmV?d00001 diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_231525.yaml b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_231525.yaml new file mode 100644 index 0000000..4b90032 --- /dev/null +++ b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_231525.yaml @@ -0,0 +1,335 @@ +amux: + csname: chain1_mux + otaA: {fast: 0, gain: 0, mode: 4, offset: 0} + otaB: {fast: 0, gain: 0, mode: 4, offset: 0} + selA: 16 + selB: 16 +arb: + csname: chain1_conf + harmonics: + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 1, fast: 0, gain: 15, offset: 116, se: 0, zero: 0} + otaB: {cint: 1, fast: 0, gain: 15, offset: 118, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + length: 16 +chain: + csname: chain0_conf + harmonics: + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 46, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 110, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 108, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 124, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 106, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 56, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 85, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 81, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 111, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 59, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 89, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 120, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 80, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 118, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 100, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 111, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 68, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 94, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 120, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 109, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 60, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 112, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 97, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 109, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 81, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 95, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 126, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 57, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 95, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 72, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 64, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 90, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 92, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 101, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 58, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 87, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 117, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 57, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 96, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 101, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 123, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 83, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 93, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 112, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 88, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 124, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 64, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 93, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 88, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 92, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 106, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + length: 48 +dac: {cs: dac, vbias_buf: 0.0, vbias_core: 0.0, vcmi: 1.24998935546875, vina: 1.253996710205078, + vinb: 1.2459820007324218} +date: 2013-04-06_231527 +i2c: {delay: 0.0001, interface: 3, pid: 24593, scl: 0, sda: 1, timeout: 100, vid: 1027} +ibias: {addr: 0, gpo1: 0, gpo2: 0, posA: 128, posB: 128} +isupply: {AVdd_atoi: 0.00195711572265625, DVdd_ns430: 0.00039154527343749994, Vdd_digi: 0.02011157763671875, + Vdd_ns430: 0.020154322753906252} +mux: + csname: chain0_mux + otaA: {fast: 1, gain: 15, mode: 2, offset: 44} + otaB: {fast: 1, gain: 15, mode: 2, offset: 81} + selA: 48 + selB: 48 +spi0: + cs: + _idle: [-1, 200] + _mask: [-1, 56] + adc: [1, 232] + convst: [1, 248] + dac: [1, 216] + flash: [3, 192] + freq: 1000000.0 + interface: 1 + latency: 1 + pid: 24593 + pindir: 251 + pinstate: 249 + vid: 1027 +spi1: + cs: + _idle: [-1, 248] + _mask: [-1, 248] + chain0_conf: [0, 240] + chain0_mux: [0, 232] + chain1_conf: [0, 216] + chain1_mux: [0, 184] + freq: 1000000.0 + interface: 2 + latency: 1 + pid: 24593 + pindir: 251 + pinstate: 184 + vid: 1027 +v430: + addr: 2 + aliases: {va: vdigi, vb: avdd} + gpo1: 0 + gpo2: 0 + posA: 201 + posB: 159 + va: 1.2008223529411763 + va_range: [0.5015, 1.3887] + vb: 2.5009129411764706 + vb_range: [1.9552, 2.8304] +vatoi: + addr: 2 + aliases: {va: vdigi, vb: avdd} + gpo1: 0 + gpo2: 0 + posA: 201 + posB: 159 + va: 1.2008223529411763 + va_range: [0.5015, 1.3887] + vb: 2.5009129411764706 + vb_range: [1.9552, 2.8304] diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233301.npz b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233301.npz new file mode 100644 index 0000000000000000000000000000000000000000..be54f5669c7d57252037ff1111d711f22f40bd5b GIT binary patch literal 6558 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 literal 0 HcmV?d00001 diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233301.yaml b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233301.yaml new file mode 100644 index 0000000..f7ae2c2 --- /dev/null +++ b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233301.yaml @@ -0,0 +1,335 @@ +amux: + csname: chain1_mux + otaA: {fast: 0, gain: 0, mode: 4, offset: 0} + otaB: {fast: 0, gain: 0, mode: 4, offset: 0} + selA: 16 + selB: 16 +arb: + csname: chain1_conf + harmonics: + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 1, fast: 0, gain: 15, offset: 100, se: 0, zero: 0} + otaB: {cint: 1, fast: 0, gain: 15, offset: 118, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + length: 16 +chain: + csname: chain0_conf + harmonics: + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 46, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 110, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 108, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 124, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 106, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 56, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 85, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 81, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 111, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 59, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 89, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 120, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 80, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 118, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 100, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 111, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 68, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 94, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 120, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 109, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 60, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 112, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 97, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 109, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 81, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 95, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 126, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 57, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 95, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 72, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 64, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 90, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 92, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 101, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 58, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 87, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 117, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 57, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 96, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 101, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 123, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 83, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 93, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 112, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 88, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 124, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 64, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 93, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 88, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 92, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 106, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + length: 48 +dac: {cs: dac, vbias_buf: 0.0, vbias_core: 0.0, vcmi: 1.24998935546875, vina: 1.3149848327636717, + vinb: 1.184993878173828} +date: 2013-04-06_233303 +i2c: {delay: 0.0001, interface: 3, pid: 24593, scl: 0, sda: 1, timeout: 100, vid: 1027} +ibias: {addr: 0, gpo1: 0, gpo2: 0, posA: 128, posB: 128} +isupply: {AVdd_atoi: 0.00178735654296875, DVdd_ns430: 0.000357532373046875, Vdd_digi: 0.020664210937499997, + Vdd_ns430: 0.020648944824218748} +mux: + csname: chain0_mux + otaA: {fast: 1, gain: 15, mode: 2, offset: 44} + otaB: {fast: 1, gain: 15, mode: 2, offset: 81} + selA: 48 + selB: 48 +spi0: + cs: + _idle: [-1, 200] + _mask: [-1, 56] + adc: [1, 232] + convst: [1, 248] + dac: [1, 216] + flash: [3, 192] + freq: 1000000.0 + interface: 1 + latency: 1 + pid: 24593 + pindir: 251 + pinstate: 249 + vid: 1027 +spi1: + cs: + _idle: [-1, 248] + _mask: [-1, 248] + chain0_conf: [0, 240] + chain0_mux: [0, 232] + chain1_conf: [0, 216] + chain1_mux: [0, 184] + freq: 1000000.0 + interface: 2 + latency: 1 + pid: 24593 + pindir: 251 + pinstate: 184 + vid: 1027 +v430: + addr: 2 + aliases: {va: vdigi, vb: avdd} + gpo1: 0 + gpo2: 0 + posA: 201 + posB: 159 + va: 1.2008223529411763 + va_range: [0.5015, 1.3887] + vb: 2.5009129411764706 + vb_range: [1.9552, 2.8304] +vatoi: + addr: 2 + aliases: {va: vdigi, vb: avdd} + gpo1: 0 + gpo2: 0 + posA: 201 + posB: 159 + va: 1.2008223529411763 + va_range: [0.5015, 1.3887] + vb: 2.5009129411764706 + vb_range: [1.9552, 2.8304] diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233926.npz b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233926.npz new file mode 100644 index 0000000000000000000000000000000000000000..8c3f03edb798f21f0694945afd9d9840be5fca53 GIT binary patch literal 6558 zcmeI1e{5A}8OPsyZ$}Cm)=3u$LDo640#;I)EFD6gSH!W&4+|=G1EjDPWvQhUtQ~}T zT$ni4g_so-qF4o#Ao9m-kWIq#4#5>9&_U(bN@+`JFKsCo`n$btz32Npl|bSjnvn1Z z2bvGh>3iPi`~AM}IX&E_&kDsQ8vkfH^t0(DlgbOm#T(;)#r~Q#D{|LN%*}i4-MQbH zlm1e`Ja5(|XJxN`B|mveQu5U0X~`)`$;(&fugPDUyJTg4R3=K^=J*1z&gO)?JuFFHp{v6C9qPaY1G*)yz^ z)iupC&Y!J)oN@gFICvi>8sL{9Xn^CPcYqII;(pG8zJC4;boH||>f>DK=;P5a-p41< zH_C-D5ap-QC(0EN(#vnaP%ozg=z(*&S!bb-$gO3hQfR7G7EP-(je6;f@_-N-c_-Nw- z_-Ny?@X^L+;G>m2_-N&c@X^YZ@Nt_r!N+Y*gOA%>40UeE;ivEpUgud4~jDBIB zfj(g_K~4=EJ?9&0;0)wa&!x!Y8Ydu!Yn%iBbzBDDS9vV_US$tHYq=8sYB)_cHW$NB zHCMyO75)|US8+OYU*>q|tz_Adm$(r6E^;b#UEnbEoaYkg_!noOe+4I??^!NGzmM5N zpK{K_{HM5jp&!^uPRD%5*<{u}ztC9dX`nLMPm}{) zVM-Y93kg#x^j)V6*^d;J{YfRVUug#PHd7e)TQe2O{-#tv=EN4Nfc_RLl>32(!$*WN z(I-Oh!B2$Z&@Vy@P=zEKLr=t`l)RN$6wjLijOu z1Ns^JXZSMq9QqnNfaj30iHC*i(ZqbQnk>Y5xRYPe!HGuE%fH;`Dc|Q zlp}@qLLKJwDwG?9W`)+@RZh_Jj|lCJtD@rrp|?qB^OQ@KpBB3MT8wvlg|=AhbgiG% zdYJNPjm*DEnIm-1C_Ah1eOo5RZ`Cvn%c`!uTzc|nmNrl zZ-PQ^Ym?L@bXAS0?Rw>-Lhm=%<@_|Es}7^~Rte2`q21Gf^KPop{8iT3TcPV8Qob$g z<&9UK)^%AVbd8$#2F*KJXpTvq-Zzx>n&0a}FHvZBOHRgWUS}mIGgR}MpgCn~J|i@j z#hSzK)qk)0P7s=G^|?*_*^v4jrM_O$efTHcUmdFd^U5sU53G8P>VHmkcB-y-biKYH zdTfX0zD0BYp7ixPG{1K>zsb_aUeozs)f~R6`(yVfSRZrzf-wG^aKTy7`=DIvOaBy( z{)g}tCtP+wcyPDSeP5XRJHo^B4}TGs9v03zDl9rKOgRmD_KegUE2PdpFLnDxtt*93 zTmjwHYN?0Ug67q$pgmqEb*NtIDGgG;78d^fx||>0B%Is~x-B<^hgv}M6`lW-(0;o{ zzCTR**`3;VruMxdbOqW!<(iB?Ewn!rJ?1gd-}6gReZYzx*i9$epLPcL}=@jFK7neX`y{V^LkG?LDzeu=JqMc&8}D0YmW0Zx7UU4Z_22ie@b)A)LeH9%_YrsvhJ7p z%C|J%lR`ICbA3_hc4^)lC0Dmt=)I*mpAp)pbe}C!{!y7GIeRY)%_`0R6RlgdUM#u0 zjhg=Fr0!QXq_d)2+4XxzDKZtSH* mKHs?antR_|?p(7y_UbwK9+N)n5&t6+6N>#Qi7|}-Cj1+4*{Z$( literal 0 HcmV?d00001 diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233926.pdf b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233926.pdf new file mode 100644 index 0000000000000000000000000000000000000000..635da0d00f45718ba8418cead9da9108d573b96b GIT binary patch literal 17631 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 literal 0 HcmV?d00001 diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233926.yaml b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233926.yaml new file mode 100644 index 0000000..8832935 --- /dev/null +++ b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_233926.yaml @@ -0,0 +1,335 @@ +amux: + csname: chain1_mux + otaA: {fast: 0, gain: 0, mode: 4, offset: 0} + otaB: {fast: 0, gain: 0, mode: 4, offset: 0} + selA: 16 + selB: 16 +arb: + csname: chain1_conf + harmonics: + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 1, fast: 0, gain: 15, offset: 120, se: 0, zero: 0} + otaB: {cint: 1, fast: 0, gain: 15, offset: 118, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + - cal: 0 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + otaB: {cint: 0, fast: 0, gain: 0, offset: 0, se: 0, zero: 0} + length: 16 +chain: + csname: chain0_conf + harmonics: + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 46, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 110, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 108, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 124, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 106, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 56, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 85, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 81, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 111, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 59, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 89, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 120, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 80, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 118, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 100, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 111, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 68, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 94, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 120, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 109, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 60, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 112, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 97, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 109, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 81, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 95, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 126, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 57, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 95, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 72, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 64, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 90, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 103, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 116, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 78, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 92, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 101, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 58, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 91, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 87, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 117, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 57, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 96, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 101, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 123, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 79, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 83, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 102, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 93, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 112, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 127, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 88, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 124, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 64, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 70, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 86, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 93, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 88, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 92, se: 1, zero: 0} + - cal: 1 + nco: {fcw: 0, rst: 0} + otaA: {cint: 0, fast: 1, gain: 0, offset: 106, se: 1, zero: 0} + otaB: {cint: 0, fast: 1, gain: 0, offset: 63, se: 1, zero: 0} + length: 48 +dac: {cs: dac, vbias_buf: 0.0, vbias_core: 0.0, vcmi: 1.24998935546875, vina: 1.2369749938964842, + vinb: 1.2630037170410156} +date: 2013-04-06_233930 +i2c: {delay: 0.0001, interface: 3, pid: 24593, scl: 0, sda: 1, timeout: 100, vid: 1027} +ibias: {addr: 0, gpo1: 0, gpo2: 0, posA: 128, posB: 128} +isupply: {AVdd_atoi: 0.0018348341552734374, DVdd_ns430: 0.00036724162109375, Vdd_digi: 0.019806255371093748, + Vdd_ns430: 0.019809308593749998} +mux: + csname: chain0_mux + otaA: {fast: 1, gain: 15, mode: 2, offset: 44} + otaB: {fast: 1, gain: 15, mode: 2, offset: 81} + selA: 48 + selB: 48 +spi0: + cs: + _idle: [-1, 200] + _mask: [-1, 56] + adc: [1, 232] + convst: [1, 248] + dac: [1, 216] + flash: [3, 192] + freq: 1000000.0 + interface: 1 + latency: 1 + pid: 24593 + pindir: 251 + pinstate: 249 + vid: 1027 +spi1: + cs: + _idle: [-1, 248] + _mask: [-1, 248] + chain0_conf: [0, 240] + chain0_mux: [0, 232] + chain1_conf: [0, 216] + chain1_mux: [0, 184] + freq: 1000000.0 + interface: 2 + latency: 1 + pid: 24593 + pindir: 251 + pinstate: 184 + vid: 1027 +v430: + addr: 2 + aliases: {va: vdigi, vb: avdd} + gpo1: 0 + gpo2: 0 + posA: 201 + posB: 159 + va: 1.2008223529411763 + va_range: [0.5015, 1.3887] + vb: 2.5009129411764706 + vb_range: [1.9552, 2.8304] +vatoi: + addr: 2 + aliases: {va: vdigi, vb: avdd} + gpo1: 0 + gpo2: 0 + posA: 201 + posB: 159 + va: 1.2008223529411763 + va_range: [0.5015, 1.3887] + vb: 2.5009129411764706 + vb_range: [1.9552, 2.8304] diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_234532.npz b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_234532.npz new file mode 100644 index 0000000000000000000000000000000000000000..a04d44212176e05d7e40bfec80b708bf63f8133a GIT binary patch literal 6558 zcmeI1ZBSL$6^8e{mm1=aN|iL$v4*xzz}8q|j6)nVYwHm0sHNacQd&)e2ARe&h#xV; z)XZsG6O*yUX&9&GM?wqJ($qRrhZ;%MwY7Fa0ySu;#E9gAAXh=W^8HQkdDpU;IMbg= z{ozsOaUJ&A>wVw7&*6B14Kfh$nhAr!2=ePWH zO~JZYoig{q`)ALZowOtAzsE#0G_`b_ege084q;uV+m!tp)jVz$8Y{YP^NY>lR$2cq zO2_T{U-sAkD~H-!{^w=pXWk|r87Ysy@is9b7Tvbo&+lC#&efL|JUp>JVSJR|N8b@Hgn<#h z7kx&!4nl_cMHm|9ROB+ujSx1(yJ2vM7r_4zM<8^N_rmWWrz5yQ?t<_EE%15~u5%PVqWlJYM0o{#M7ak( zu5l*xU*rAI-O2IL+sV1md6i{>J9s*Db#S3<6t07gE1Zh{S9mx2Ugik;MK~ROB3y!; z+IZxwZ>Wv4k;^5nKpw4}fE-$R1N^se6?|Xhnecm&J@{ zmWAeSe_S!SyL^_BNy2zaLR~@jb$`N2%DKlse~j!(-_UWYmHw22efTa#MIU*{p@tGL z{uI@UADW8mPE(HfrE>94QOSeSFi$;sk{4BBzH^lDyg%?`%9eboMDnJH{m*M-VTc3e(Rv!vcDY%@q3gv#FFT+Qaa?mGA2jM45 zap)JN$K?K^a`e4ULvsJo3b`NY4Y@xlD)%cbhTm=~hMsP^B==hAX)k;XQv^PSX#sqU&~Eq`p+BH;#wi~@#z}tgjMJTRgV?#~W9%yUG4_|}XY60# z%hJatPWJ z&>6Jt$RlVIp*Lh7MlKjw@N+<2GpKbhFJ z@tM!>lZo@Kc-pu_LR+b);mFxK(TCY`R z2)*y>_cMidg4WF!F`xIg@*y3+Q);_Lxl(B6=(xdV(Xn3ZGOY`QHeKsGl$V=i{M*VR z<>NvxMQMcYgD}RsKMHNW*7JmBiqQMrC!&9a@@k{h&j`&7<*5sD{&At{Z$NDy>;PR` zyVO4uy1TTlyn^%Q5#_%wOPwopla)s!GS7UWJ>G`eds=9xYrXdp&fEDy?;Tz5A1Z^o z&cD$0nW5|Tcg;Ud`GMr>J*oKymHRZmS(@ib%`H!JJ1aSvIAx~hwMlZZJ?h&Ey^Z4A zbK=vxL;WsOzb~u5!|JPD^qZ;bW0mUvz36uJs#EucU8XvBslGB@$4=GrlIoeO`CpK} z<`vB|Mf$oUn%64bkK;10c~j?Ir2Amgd0D?dehn4AX~OC^Oa1;@*{Ez5zouGwP;(g6dY-Ps z%R*D9c}$i(%wxJfe-e7#%9WCj{gu$1(fU5g$=jv5o!0tml9zo}^Q#cLNxIHI5xPpD znI<_}&C{#ZTqo&1cuMH1wVon*n$4PPy>hnX>lJFwVXc=*&gL~`m*&4(_Y-UGUy;1c z4xw#RE|lEuUS*2ry;^AY2yKJb-;un%Cp7;uq3hH0_e<_}ldgjkx*@I8BzOCY=3gyz z@tXf4p(|2WEA_szOIj&&c_5e=`rp6lke4T8yr293y77CDo3Fb06OB)=%80#`$mbh3 jUvu-D%cs}89((n?@g9@8{7e2vBqkL5QxanY|4sN0EFPk6 literal 0 HcmV?d00001 diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_234532.pdf b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-2013-04-06_234532.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4f81dfece51e128d50b295c1c9159cd6b756dd80 GIT binary patch literal 17558 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