from test_common import * restart_clk=False; #False do not restart, but only check status restart_rcu=False; #False do not restart, but only check status RCUs=[0,1,2,3]; #RCUs=[0,1,2,3,4,5,6,7]; if restart_clk: print("Startup CLK"); callmethod("CLK_off") wait_not_busy("CLK_translator_busy_R") callmethod("CLK_on") wait_not_busy("CLK_translator_busy_R",timeout_sec=2) print("CLK status:") locked=get_value("CLK_PLL_locked_R") if locked: print(" CLK working (locked)") else: #not locked: i2c_status=get_value("CLK_I2C_STATUS_R"); if (i2c_status>0): print(" CLK I2C not working. Maybe power cycle subrack to restart CLK board and translator.") else: print (" CLK not locked! Subrack probably do not receive clock input (or CLK PCB broken)") setRCUmask(RCUs) if restart_rcu: print("Startup RCUs:",RCUs); callmethod("RCU_off") wait_not_busy("RCU_translator_busy_R") callmethod("RCU_on") wait_not_busy("RCU_translator_busy_R",timeout_sec=5) print("RCU status:") i2c_status=get_value("RCU_I2C_STATUS_R") i2c_working=[];i2c_not_working=[] for x in RCUs: (i2c_working.append(x) if i2c_status[x]==0 else i2c_not_working.append(x)) if len(i2c_not_working)>0: print(" RCUs not availabel",i2c_not_working) locked=get_value("RCU_ADC_lock_R") locklist=[];notlocklist=[] for x in i2c_working: if (locked[x*3+0]>0) and (locked[x*3+1]>0) and (locked[x*3+2]>0): locklist.append(x) else: notlocklist.append(x) # (locklist.append(x) if locked[x]>0 else notlocklist.append(x)) print(" RCUs working",locklist) if len(notlocklist)>0: print(" RCUs with unlocked ADCs:",notlocklist) disconnect();