# create statistics from wafermap # takes the text file of a wafermap as input and prints the # counts for each return code # also translates return code to human readable format # $Id$ BEGIN { total = 0; internal = 0; various = 0; } /0$/ { split($0, subsites, " "); for (ind = 1; ind <= 36 ; ind++) { count[subsites[ind]]++; if (subsites[ind]!= -1) { #print ind, subsites[ind]; total++; } # count internal errors as sum if (is_internal(subsites[ind]) == 1) { internal++; } if (is_various(subsites[ind]) == 1) { # count various errors as sum various++; } } #printf "\n\n"; } END { print " -1 no trap" n = asorti(count, dest) for (i=1; i<=n ; i++) { #print dest[i], count[dest[i]]; if (dest[i]!=-1) { printf "%3d %s: %3d, ", dest[i], ret_code_to_name_print(dest[i]), count[dest[i]]; #printf "%d: %d, ", ind, count[ind]; if (printed++ > 3) { printf "\n"; printed=0; } } } printf "\ntotal: %d, internal: %d, various: %d\n", total, internal, various; } function is_internal(code) { if (code == 5) return 1; else if (code == 11) return 1; else if (code == 12) return 1; else if (code == 13) return 1; else if (code == 14) return 1; else if (code == 15) return 1; else if (code == 16) return 1; else if (code == 33) return 1; else if (code == 34) return 1; else if (code == 94) return 1; else return 0; } function is_various(code) { if (code==6) return 1; else if (code == 10) return 1; else if (code == 18) return 1; else if (code == 52) return 1; else if (code == 41) return 1; else if (code == 97) return 1; else return 0; } function ret_code_to_name_print(code) { if (code == 0 ) return "Good"; else if (code == 3) return "high current "; else if (code == 5) return "SCSN"; else if (code == 6) return "SCSN no clock"; else if (code == 7) return "SCSN reset"; else if (code == 10) return "reset in"; else if (code == 11) return "IMEM w/ ham"; else if (code == 12) return "IMEM w/o ham"; else if (code == 13) return "DBANK w/ ham"; else if (code == 14) return "DBANK w/o ham"; else if (code == 15) return "DMEM w/ ham" else if (code == 16) return "DMEM w/o ham" else if (code == 18) return "NI failed"; else if (code == 26) return "SCSN-write"; else if (code == 33) return "ddd"; else if (code == 34) return "internal"; else if (code == 37) return "filter"; else if (code == 39) return "ADC"; else if (code == 40) return "SCSN ping"; else if (code == 41) return "SCSN timeout"; else if (code == 46) return "low current"; else if (code == 52) return "supply voltages"; else if (code == 94) return "QDA"; else if (code == 97) return "pretrigg ign"; else if (code == 98) return "wrong ID and ADC"; else if (code == 99) return "wrong ID rest OK"; else return "missing"; #,code," "; }