Skip to content

Commit 0eac91e

Browse files
committed
merging assorted small updates with BK
1 parent 02a8ce9 commit 0eac91e

File tree

5 files changed

+116
-36
lines changed

5 files changed

+116
-36
lines changed

femb_python/configuration/configs/wib_sbnd_v109_femb_protodune_v308.py

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -666,42 +666,47 @@ def readCurrent(self,femb):
666666
results = []
667667

668668
self.femb.write_reg_bits( 5 , 0, 0xFF, 0)
669-
self.femb.write_reg_bits( 5 , 16, 0x1, 0)
670-
self.femb.write_reg_bits( 5 , 16, 0x1, 1)
671-
self.femb.write_reg_bits( 5 , 16, 0x1, 0)
672-
self.femb.write_reg_bits( 5 , 16, 0x1, 0)
673-
self.femb.write_reg_bits( 5 , 16, 0x1, 1)
674-
self.femb.write_reg_bits( 5 , 16, 0x1, 0)
675-
676-
time.sleep(1)
677-
val = self.femb.read_reg(6)
678-
val = self.femb.read_reg(6)
679-
val1 = (val & 0xFFFF)
680-
val2 = ((val >> 16) & 0xFFFF)
681-
results.append(val)
682-
#print( "FEMB " + str(fembVal) + "\t 0 \t" + str(val) + "\t" + str(val1) + "\t" + str(val2) )
683-
684-
for pwrSel in range(pwrSelBase, pwrSelBase+6, 1):
685-
self.femb.write_reg_bits( 5 , 0, 0xFF, pwrSel )
669+
tryagain = True
670+
tries = 0
671+
while (tryagain and tries < 2):
672+
tries += 1
686673
self.femb.write_reg_bits( 5 , 16, 0x1, 0)
687674
self.femb.write_reg_bits( 5 , 16, 0x1, 1)
688-
self.femb.write_reg_bits( 5 , 16, 0x1, 0)
689-
self.femb.write_reg_bits( 5 , 16, 0x1, 0)
690-
self.femb.write_reg_bits( 5 , 16, 0x1, 1)
691-
self.femb.write_reg_bits( 5 , 16, 0x1, 0)
692-
675+
#self.femb.write_reg_bits( 5 , 16, 0x1, 0)
693676
time.sleep(1)
694677
val = self.femb.read_reg(6)
695678
val = self.femb.read_reg(6)
696-
if val == None :
697-
return
698679
val1 = (val & 0xFFFF)
699680
val2 = ((val >> 16) & 0xFFFF)
700-
#print( "FEMB " + str(fembVal) + "\t" + str(pwrSel) + "\t" + str(val) + "\t" + str(val1) + "\t" + str(val2) )
681+
if ( (val1 >> 15)==1 and (val2 >> 15)==1 ):
682+
tryagain = False
683+
684+
results.append(val)
685+
#print( "FEMB " + str(fembVal) + "\t 0 \t" + str(val) + "\t" + str(val1) + "\t" + str(val2) )
686+
687+
for pwrSel in range(pwrSelBase, pwrSelBase+6, 1):
688+
self.femb.write_reg_bits( 5 , 0, 0xFF, pwrSel )
689+
tryagain = True
690+
tries = 0
691+
while (tryagain and tries < 2):
692+
tries += 1
693+
self.femb.write_reg_bits( 5 , 16, 0x1, 0)
694+
self.femb.write_reg_bits( 5 , 16, 0x1, 1)
695+
#self.femb.write_reg_bits( 5 , 16, 0x1, 0)
696+
time.sleep(1)
697+
val = self.femb.read_reg(6)
698+
val = self.femb.read_reg(6)
699+
val1 = (val & 0xFFFF)
700+
val2 = ((val >> 16) & 0xFFFF)
701+
if ( (val1 >> 15)==1 and (val2 >> 15)==1 ):
702+
tryagain = False
703+
704+
#print( "FEMB " + str(fembVal) + "\t" + str(pwrSel) + "\t" + str(val) + "\t" + str(val2) + "\t" + str(val1) )
701705
results.append(val)
702706

703707
self.selectFemb(fembVal)
704708
return results
709+
705710

706711
def ext_clk_config_femb(self):
707712
#EXTERNAL CLOCK VARIABLES

femb_python/test_measurements/fembTest/code/doFembTest_gainMeasurement.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,8 @@ def main():
309309
params = json.loads(open(sys.argv[1]).read())
310310
if 'datadir' in params:
311311
datadir = params['datadir']
312+
if 'outlabel' in params:
313+
outlabel = params['outlabel']
312314
if 'wibslots' in params:
313315
wibslots = params['wibslots']
314316
if 'gain' in params:

femb_python/test_measurements/fembTest/code/femb_check_current.py

Lines changed: 76 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def __init__(self, datadir="data", outlabel="check_current"):
1616
self.status_archive_results = 0
1717
self.config = CONFIG()
1818
self.results_current = {}
19+
self.fullresults_current = {}
1920
self.datadir = datadir
2021
self.outlabel = outlabel
2122
self.outpathlabel = os.path.join(self.datadir, self.outlabel)
@@ -61,15 +62,17 @@ def record_data(self,ifemb,wibslots=[]):
6162
for j in range(0,4,1):
6263
curr_measured = self.config.readCurrent(j)
6364
results_current.append(curr_measured)
64-
self.results_current["current_none"] = results_current
65+
self.results_current["none_on"] = results_current
6566

6667
elif ("all" not in ifemb):
6768
self.config.selectFemb(ifemb)
6869
self.config.initFemb()
6970
time.sleep(5)
71+
results_current = []
7072
for j in range(0,4,1):
7173
curr_measured = self.config.readCurrent(j)
72-
self.results_current["current_femb"+str(ifemb)] = curr_measured
74+
results_current.append(curr_measured)
75+
self.results_current["femb"+str(ifemb)+"on"] = results_current
7376
self.config.powerOffFemb(ifemb)
7477

7578
elif len(wibslots)>1:
@@ -81,11 +84,79 @@ def record_data(self,ifemb,wibslots=[]):
8184
for j in range(0,4,1):
8285
curr_measured = self.config.readCurrent(j)
8386
results_current.append(curr_measured)
84-
self.results_current["current_all"] = results_current
87+
self.results_current["all_on"] = results_current
8588
for i in wibslots:
8689
self.config.powerOffFemb(i)
8790
self.status_record_data = 1
8891

92+
def do_analysis(self):
93+
if self.status_record_data == 0:
94+
print("DO ANALYSIS - Please record data before analysis")
95+
return
96+
if self.status_do_analysis == 1:
97+
print("DO ANALYSIS - Analysis already complete")
98+
return
99+
100+
print("DO ANALYSIS")
101+
rsense = 0.1
102+
103+
for key,resultlist in self.results_current.items():
104+
print (key, resultlist)
105+
jfemb = 0
106+
for result in resultlist:
107+
i = 0
108+
for val in result:
109+
val1 = ((val >> 16) & 0xFFFF)
110+
print("val1 good? ", val, val1, val1>>15)
111+
if (val1 >> 15 == 1):
112+
v1 = val1 & 0x3FF
113+
else:
114+
v1 = -9999
115+
116+
val2 = (val & 0xFFFF)
117+
print("val2 good? ", val, val2, val2>>15)
118+
if (val2 >> 15 == 1):
119+
v2 = val2 & 0x3FF
120+
else:
121+
v1 = -9999
122+
123+
if i==0:
124+
if (v1 != -9999):
125+
vcc0 = v1*305.18e-6 + 2.5
126+
else:
127+
vcc0 = -9999
128+
self.fullresults_current[key+"_femb"+str(jfemb)+"_vcc0"] = vcc0
129+
if (v2 != -9999):
130+
temp0 = v2*0.0625
131+
else:
132+
temp0 = -9999
133+
self.fullresults_current[key+"_femb"+str(jfemb)+"_temp0"] = temp0
134+
elif i==1:
135+
if (v1 != -9999):
136+
vcc1 = v1*305.18e-6 + 2.5
137+
else:
138+
vcc1 = -9999
139+
self.fullresults_current[key+"_femb"+str(jfemb)+"_vcc1"] = vcc1
140+
if (v2 != -9999):
141+
temp1 = v2*0.0625
142+
else:
143+
temp1 = -9999
144+
self.fullresults_current[key+"_femb"+str(jfemb)+"_temp1"] = temp1
145+
else:
146+
if (v1 != -9999):
147+
vi = v1*305.18e-6
148+
else:
149+
vi = -9999
150+
print(i, jfemb, v1, vi)
151+
self.fullresults_current[key+"_femb"+str(jfemb)+"_v"+str(i-1)] = vi
152+
if (v2 != -9999):
153+
ii = v2*19.075e-6/rsense
154+
else:
155+
ii = -9999
156+
self.fullresults_current[key+"_femb"+str(jfemb)+"_i"+str(i-1)] =ii
157+
i+=1
158+
jfemb += 1
159+
89160
def archive_results(self):
90161
if self.status_record_data == 0:
91162
print("ARCHIVE RESULTS - Please take data before archiving results")
@@ -98,7 +169,7 @@ def archive_results(self):
98169

99170
jsonFile = self.outpathlabel + "-results.json"
100171
with open ( jsonFile, 'w') as outfile:
101-
json.dump( self.results_current, outfile, indent=4)
172+
json.dump( self.fullresults_current, outfile, indent=4)
102173

103174
#ARCHIVING SUCCEEDED
104175
print("ARCHIVE RESULTS - DONE" + "\n")
@@ -136,12 +207,11 @@ def main():
136207

137208
#Finally begin testing
138209
currentTest.check_setup()
139-
print(wibslots)
140210
for ifemb in wibslots:
141211
currentTest.record_data(str(ifemb))
142212
currentTest.record_data("all",wibslots)
143213
currentTest.record_data("off")
144-
214+
currentTest.do_analysis()
145215
currentTest.archive_results()
146216

147217
print( "CURRENT CHECK TEST DONE")

femb_python/test_measurements/fembTest/fembTest.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def main(**params):
4444
'''
4545
print( "FEMB PRODUCTION TEST - START")
4646

47-
use_sumatra = True
47+
use_sumatra = False
4848
test_category = "femb" # pick something
4949

5050
#check for any required input paramaters here ie board id etc
@@ -76,13 +76,16 @@ def main(**params):
7676
pulser_text = ["intpulse","extpulse"]
7777
i = 0
7878
for pulser in pulser_setting:
79-
for s in range(0,4):
79+
#for s in range(0,4):
80+
for s in range(2,3):
8081
for g in range(2,4):
82+
#for g in range(2,3):
8183
params_test.update( executable="femb_test_gainenc", argstr="{paramfile}",
8284
datasubdir="fembTest_gainenc_test_g"+str(g)+"_s"+str(s)+"_"+pulser_text[i],
83-
outlabel="fembTest_gainenc_test", gain=g, shape=s, base=0, useInternalPulser=pulser)
85+
outlabel="fembTest_gainenc_test_"+pulser_text[i], gain=g, shape=s, base=0, useInternalPulser=pulser_setting[i])
8486
tests.append( Test(**params_test) )
8587
i+=1
88+
8689
#Current Measurement
8790
params_test_current = dict(params)
8891
params_test_current.update( executable="femb_check_current", argstr="{paramfile}",

femb_python/test_measurements/fembTest/gui.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,15 +128,15 @@ def get_options(self):
128128
print("CE Box ID: '{}'".format(boxid))
129129
print("Analog MB ID: '{}'".format(amid))
130130
print("FPGA Mezz ID: '{}'".format(fmid))
131-
print("Test temperature: '{}'".format(temp))
131+
print("Room temp?: '{}'".format(isRoomTemp))
132132
print("WIB Slots Filled: ", wibslots_filled)
133133

134134
inputOptions = {
135135
"operator": operator,
136136
"box_id": boxid,
137137
"fm_id": fmid,
138138
"am_id": amid,
139-
"isRoomTemp": temp,
139+
"isRoomTemp": isRoomTemp,
140140
"wibslots": wibslots_filled
141141
}
142142
print(inputOptions)

0 commit comments

Comments
 (0)