card=-c0 ring=-r0 ring0=-phy -r0 ring1=-phy -r1 report=report.log report_ni=report_ni.log report_nidyn=report_nidyn.log # this will be used only in CJP test. For the others the time for verifying the # IMEM is short enough. Note that after changing this variable, the CJP should # be recompiled. # use 0 or 1 export SCSN_Verify=0 WAFER=0 MCM=0 ROB=1 FLDdelay=500000 FPAdelay=2700000 FLAdelay=10 FGAdelay=500000 FGMdelay=2700000 FDDdelay=10000 FTAdelay=200000 FTLdelay=150000 FTSdelay=150000 FGCdelay=20000 FP0delay=20000 FP1delay=20000 FP2delay=150000 FP3delay=2000000 FP4delay=1100 FP5delay=10000 FP6delay=80000 FP7delay=1300000 IMMrep="IMEM test results" DBKrep="DBANK test results" DIVrep="DIVision in ALU test results" DMMrep="DMEM test results" DMPrep="DMEM power test results" DDDrep="DMEM cross r/w test results" QDArep="DMEM cross r/w auto scan test results" CSTrep="CPU Constants test results" EBFrep="Event buffers test results" GIOrep="Conf. Resgisters in Global Bus test results" IRQrep="IRQ controller test results" LUTrep="Look up Tables (position & nonlinearity) in GIO test results" PGrep="Privat and Global Registers test results" CJPrep="Conditional Jumps test results" FLDrep="Filter non-lin LUT test results" FPArep="Filter pedestal correction adder test results" FLArep="Filter Address MUX of non-lin LUT test results" FGArep="Gain correction adder test results" FGMrep="Gain correction multiplier test results" FDDrep="Filter input data delay test results" FTArep="Tail cancellation filter alpha weight test results" FTLrep="Tail cancellation filter long decay test results" FTSrep="Tail cancellation filter short decay test results" FP0rep="Pedestal filter TPTC=0 decay test results" FP1rep="Pedestal filter TPTC=1 decay test results" FP2rep="Pedestal filter TPTC=2 decay test results" FP3rep="Pedestal filter TPTC=3 decay test results" FP4rep="Pedestal filter TPTC=0 decay test results" FP5rep="Pedestal filter TPTC=1 decay test results" FP6rep="Pedestal filter TPTC=2 decay test results" FP7rep="Pedestal filter TPTC=3 decay test results" FGCrep="Gain filter counters test results" NIscsnrep="SCSN test of the readout tree" # For Wafer Tester ifeq ($(WAFER),1) test_targets = on PRE IMM DBK DMP DMM DDD DIV CJP CST PG GIO IRQ LUT EBF QDA \ FLA FLD FPA FGA FGM FDD FTA FTL FTS FGC \ FP0 FP1 FP2 FP3 FP4 FP5 FP6 FP7 \ NIsmp reset; scsn_pattern=3 scsn_pattern4=2|3|4|5|6|127 endif # For MCM Tester ifeq ($(MCM),1) test_targets = on PRE IMM DBK DMP DMM DDD DIV CJP CST PG GIO IRQ LUT EBF \ FLA FLD FPA FGA FGM FDD FTA FTL FTS FGC \ FP0 FP1 FP2 FP3 FP4 FP5 FP6 FP7 \ NIscsn reset scsn_pattern=2 scsn_pattern4=2|3|4|5|6|127 endif # For ROB ifeq ($(ROB),1) test_targets = reset PRE IMM DBK DMP DMM DDD DIV CJP CST PG GIO IRQ LUT EBF \ FLA FLD FPA FGA FGM FDD FTA FTL FTS FGC \ FP0 FP1 FP2 FP3 FP4 FP5 FP6 FP7 \ NIscsn reset scsn_pattern=127|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21 scsn_pattern4=127|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18 endif test_dir = PRE IMMtst DBKtst DMPtst DMMtst DDDtst DIVtst CJPtst CSTtst PGtst GIOtst IRQtst LUTtst EBFtst \ FLAtst FLDtst FPAtst FGAtst FGMtst FDDtst FTAtst FTLtst FTStst FGCtst \ FP0tst FP1tst FP2tst FP3tst FP4tst FP5tst FP6tst FP7tst \ NIscsntst ORItst all: clean_report $(test_targets) # Long (and slow) test using pc2tp and scsn scsn_long: pc2tp $(card) $(ring) -we 5 -at 0xD -hm 0x1FF -t 1 # Short test using pc2tp and scsn scsn_short: pc2tp $(card) $(ring) -at 0xD -hm 0x0 -t 1 # DMEM power using pc2tp and scsn scsn_dmp: pc2tp $(card) $(ring) -at 0xD -hm 0x0 -dmdela 2 -dmdels 15 -dmpwr # reset rd_config.dat: rd_config.tcs scsn_ids.tcs tcc rd_config.tcs > rd_config.dat reset: rd_config.dat pc2tp $(card) $(ring) -i $< -o out ## From here on, all tests are performed using ring0 PRE: simple/pretrigg.dat tcc simple/pretrigg.tcs > simple/pretrigg.dat echo "Hamming settings" >> $(report) @$(MAKE) --no-print-directory reset # hamming correction -grep -i "0xA 0xD001" out >> $(report) # delay settings DMEM -grep -i "0xA 0xD002" out >> $(report) -grep -i "0xA 0xD003" out >> $(report) pc2tp $(card) $(ring0) -i $< -o out -grep "CHIPID" out >> $(report) echo "Pretrigger test results" >> $(report) -grep wrong out | grep -h -E "^([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ($(scsn_pattern))\b" >> $(report) simple/pretrigg.dat : simple/pretrigg.tcs scsn_ids.tcs tcc simple/pretrigg.tcs > simple/pretrigg.dat simple/setvolt.dat : simple/setvolt.tcs tcc simple/setvolt.tcs > simple/setvolt.dat simple/off_volt.dat : simple/off_volt.tcs tcc simple/off_volt.tcs > simple/off_volt.dat misc/P4on.dat : misc/P4on.tcs tcc misc/P4on.tcs > misc/P4on.dat on: simple/setvolt.dat pc2tp $(card) $(ring0) -i $< -o out # trt -c 1 --poweron -Q 1 > $(report) off: simple/off_volt.dat pc2tp $(card) $(ring0) -i $< -o out CJP: rd_config.dat $(MAKE) --no-print-directory -C $@tst pc2tp $(card) $(ring0) -i $< -o out echo $@ $($@rep) >> $(report) pc2tp $(card) $(ring0) -i $@tst/dat/sc_send.dat -o out -grep wrong out | grep -h -E "^([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ($(scsn_pattern))\b" | grep -v -i "0x9 0xf004" >> $(report) IMM DBK DIV DMP DMM DDD CST EBF GIO IRQ LUT PG: rd_config.dat $(MAKE) --no-print-directory -C $@tst pc2tp $(card) $(ring0) -i $< -o out1 echo $@ $($@rep) >> $(report) pc2tp $(card) $(ring0) -i $@tst/dat/sc_send.dat -o out -grep wrong out | grep -h -E "^([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ($(scsn_pattern))\b" >> $(report) # -grep wrong out | grep -h -E "^([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ (127|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21)\b" >> $(report) QDA: rd_config.dat $(MAKE) --no-print-directory -C $@tst pc2tp $(card) $(ring0) -i $< -o out echo $@ $($@rep) >> $(report) pc2tp $(card) $(ring0) -i $@tst/dat/sc_send.dat -o out -grep wrong out | grep -h -E "^([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ($(scsn_pattern))\b" >> $(report) -rm dms_* @usleep 100000 sleep 1 pc2tp -slv1 1 -slv2 1 -dms dms_01 pc2tp -slv1 2 -slv2 2 -dms dms_02 pc2tp -slv1 3 -slv2 3 -dms dms_03 pc2tp -slv1 4 -slv2 4 -dms dms_04 pc2tp -slv1 5 -slv2 5 -dms dms_05 pc2tp -slv1 6 -slv2 6 -dms dms_06 pc2tp -slv1 7 -slv2 7 -dms dms_07 pc2tp -slv1 8 -slv2 8 -dms dms_08 pc2tp -slv1 9 -slv2 9 -dms dms_09 pc2tp -slv1 10 -slv2 10 -dms dms_10 pc2tp -slv1 11 -slv2 11 -dms dms_11 pc2tp -slv1 12 -slv2 12 -dms dms_12 pc2tp -slv1 13 -slv2 13 -dms dms_13 pc2tp -slv1 14 -slv2 14 -dms dms_14 pc2tp -slv1 15 -slv2 15 -dms dms_15 pc2tp -slv1 16 -slv2 16 -dms dms_16 pc2tp -slv1 17 -slv2 17 -dms dms_17 pc2tp -slv1 18 -slv2 18 -dms dms_18 pc2tp -slv1 19 -slv2 19 -dms dms_19 pc2tp -slv1 20 -slv2 20 -dms dms_20 pc2tp -slv1 21 -slv2 21 -dms dms_21 # pc2tp -slv1 1 -slv2 18 -dms dms_all pc2tp -slv1 4 -slv2 21 -dms dms_all ## From here on, all tests are performed using ring1 FLD FPA FLA FGA FGM FDD FTA FTL FTS FP0 FP1 FP2 FP3 FGC: rd_config.dat $(MAKE) --no-print-directory -C $@tst pc2tp $(card) $(ring1) -i $< -o out echo $@ $($@rep) >> $(report) pc2tp $(card) $(ring1) -i $@tst/work/sc_send.dat -o out @usleep $($@delay) pc2tp $(card) $(ring1) -i $@tst/src/stimuli/probe.dat -o out -grep wrong out | grep -h -E "^([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ($(scsn_pattern))\b" >> $(report) FP4 FP5 FP6 FP7: rd_config.dat $(MAKE) --no-print-directory -C $@tst pc2tp $(card) $(ring1) -i $< -o out echo $@ $($@rep) >> $(report) pc2tp $(card) $(ring1) -i $@tst/work/sc_send.dat -o out @usleep $($@delay) pc2tp $(card) $(ring1) -i $@tst/src/stimuli/trigger.dat -o out @usleep 200 pc2tp $(card) $(ring1) -i $@tst/src/stimuli/probe.dat -o out -grep wrong out | grep -h -E "^([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ($(scsn_pattern))\b" >> $(report) NIsmp: rd_config.dat # Wafer tester only pc2tp $(card) $(ring1) -i $< -o out wtst $(card) -ni 0 > out echo "NI simple test results" >> $(report) -grep "data delays" out >> $(report) # MCM Tester or ROB NIscsn : rd_config.dat @usleep $($@delay) $(MAKE) --no-print-directory -C $@tst pc2tp $(card) $(ring1) -i $< -o out pc2tp $(card) -i NIscsntst/DATA/sc_send.dat -o out pc2tp $(card) -i NIscsntst/DATA/scheck.dat -o out echo $@ $($@rep) >> $(report) -grep -E -h "wrong|0xd48|0xd42" out | grep -h -E "^([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ($(scsn_pattern))\b" >> $(report) # report_ni log file only used for NI report -grep -E -h "wrong" out | grep -h -E "^([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ($(scsn_pattern))\b" > $(report_ni) # date > $(report_nidyn) # pc2tp $(card) -i NIscsntst/DATA/scheck_dyn.dat -o out # echo "NI scsn dynamical test" >> $(report_nidyn) # -grep -E -h "wrong|0xd48|0xd42" out | grep -h -E "^([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ([0-9-]|[a-f]|x)+ ($(scsn_pattern4))\b" >> $(report_nidyn) ORI : rd_config.dat $(MAKE) --no-print-directory -C $@tst clean_report: date > $(report) # date > $(report_ni) # date > $(report_nidyn) compile: rd_config.dat for dir in $(test_dir); do \ $(MAKE) -C $$dir; \ done find -name sc_send.dat bridge: echo "Bridge test in ring 0:" > bridge_report.log pc2tp -slv 21 $(card) -r0 -we 1 -rd_bridge_test >> bridge_report.log echo "Bridge test in ring 1:" >> bridge_report.log pc2tp -slv 21 $(card) -r1 -we 1 -rd_bridge_test >> bridge_report.log P4on: misc/P4on.dat pc2tp $(ring0) -i $< -o out @echo "All NI outputs are on now..." >> P4onreport.log clean: for dir in $(test_dir); do \ $(MAKE) -C $$dir clean; \ done rm -f $(wildcard out*) rm -f $(wildcard simple/*.dat rd_config.dat) archiv: clean ./zipall .PHONY : clean clean_report compile $(test_targets) $(test_dir) archiv on off bridge all scsn_long scsn_short