1*1b46b959SChen Xised 's/|/ /g' | awk --bignum ' 2*1b46b959SChen Xi 3*1b46b959SChen Xifunc chnstr(chn) { 4*1b46b959SChen Xi if(chn == 1){ 5*1b46b959SChen Xi return "A" 6*1b46b959SChen Xi } else if(chn == 2){ 7*1b46b959SChen Xi return "B" 8*1b46b959SChen Xi } else if(chn == 4){ 9*1b46b959SChen Xi return "C" 10*1b46b959SChen Xi } 11*1b46b959SChen Xi return "Unknown Channel" 12*1b46b959SChen Xi} 13*1b46b959SChen Xi 14*1b46b959SChen Xifunc opstr(chn, op, msTask) { 15*1b46b959SChen Xi a_op[1] = "PutFullData" 16*1b46b959SChen Xi a_op[2] = "PutPartialData" 17*1b46b959SChen Xi a_op[3] = "ArithmeticData" 18*1b46b959SChen Xi a_op[4] = "LogicalData" 19*1b46b959SChen Xi a_op[5] = "Get" 20*1b46b959SChen Xi a_op[6] = "Hint" 21*1b46b959SChen Xi a_op[7] = "AcquireBlock" 22*1b46b959SChen Xi a_op[8] = "AcquirePerm" 23*1b46b959SChen Xi 24*1b46b959SChen Xi b_op[1] = "PutFullData" 25*1b46b959SChen Xi b_op[2] = "PutPartialData" 26*1b46b959SChen Xi b_op[3] = "ArithmeticData" 27*1b46b959SChen Xi b_op[4] = "LogicalData" 28*1b46b959SChen Xi b_op[5] = "Get" 29*1b46b959SChen Xi b_op[6] = "Hint" 30*1b46b959SChen Xi b_op[7] = "Probe" 31*1b46b959SChen Xi 32*1b46b959SChen Xi c_op[1] = "AccessAck" 33*1b46b959SChen Xi c_op[2] = "AccessAckData" 34*1b46b959SChen Xi c_op[3] = "HintAck" 35*1b46b959SChen Xi c_op[4] = "Invalid Opcode" 36*1b46b959SChen Xi c_op[5] = "ProbeAck" 37*1b46b959SChen Xi c_op[6] = "ProbeAckData" 38*1b46b959SChen Xi c_op[7] = "Release" 39*1b46b959SChen Xi c_op[8] = "ReleaseData" 40*1b46b959SChen Xi 41*1b46b959SChen Xi d_op[1] = "AccessAck" 42*1b46b959SChen Xi d_op[2] = "AccessAckData" 43*1b46b959SChen Xi d_op[3] = "HintAck" 44*1b46b959SChen Xi d_op[4] = "Invalid Opcode" 45*1b46b959SChen Xi d_op[5] = "Grant" 46*1b46b959SChen Xi d_op[6] = "GrantData" 47*1b46b959SChen Xi d_op[7] = "ReleaseAck" 48*1b46b959SChen Xi 49*1b46b959SChen Xi msa_op[2] = "AccessAckData" 50*1b46b959SChen Xi msa_op[3] = "HintAck" 51*1b46b959SChen Xi msa_op[5] = "Grant" 52*1b46b959SChen Xi msa_op[6] = "GrantData" 53*1b46b959SChen Xi msa_op[7] = "Release" 54*1b46b959SChen Xi msa_op[8] = "ReleaseData" 55*1b46b959SChen Xi 56*1b46b959SChen Xi ret = "Unknown OP" 57*1b46b959SChen Xi 58*1b46b959SChen Xi if(msTask == 0){ 59*1b46b959SChen Xi switch(chn) { 60*1b46b959SChen Xi case 1: 61*1b46b959SChen Xi ret = a_op[op+1] 62*1b46b959SChen Xi break; 63*1b46b959SChen Xi case 2: 64*1b46b959SChen Xi ret = b_op[op+1] 65*1b46b959SChen Xi break; 66*1b46b959SChen Xi case 4: 67*1b46b959SChen Xi ret = c_op[op+1] 68*1b46b959SChen Xi break; 69*1b46b959SChen Xi } 70*1b46b959SChen Xi } else { 71*1b46b959SChen Xi switch(chn) { 72*1b46b959SChen Xi case 1: 73*1b46b959SChen Xi ret = msa_op[op+1] 74*1b46b959SChen Xi break; 75*1b46b959SChen Xi case 2: 76*1b46b959SChen Xi ret = c_op[op+1] 77*1b46b959SChen Xi break; 78*1b46b959SChen Xi } 79*1b46b959SChen Xi } 80*1b46b959SChen Xi return ret 81*1b46b959SChen Xi} 82*1b46b959SChen Xifunc paramstr(op, param) { 83*1b46b959SChen Xi split("Grow NtoB_Grow NtoT_Grow BtoT", grow, "_") 84*1b46b959SChen Xi split("Cap toT_Cap toB_Cap toN", cap, "_") 85*1b46b959SChen Xi split("Shrink TtoB_Shrink TtoN_Shrink BtoN_Report TotT_Report BtoB_Report NtoN", report, "_") 86*1b46b959SChen Xi 87*1b46b959SChen Xi ret = "Reserved" 88*1b46b959SChen Xi if(op == 'AcquireBlock' || op == 'AcquirePerm'){ 89*1b46b959SChen Xi ret = grow[param+1] 90*1b46b959SChen Xi } else if(op == 'Probe'){ 91*1b46b959SChen Xi ret = cap[param+1] 92*1b46b959SChen Xi } else if(op == 'Release' || op == 'ReleaseData' || op == 'ProbeAck' || op == 'ProbeAckData'){ 93*1b46b959SChen Xi ret = report[param+1] 94*1b46b959SChen Xi } else if(op == 'Grant' || op == 'GrantData'){ 95*1b46b959SChen Xi ret = cap[param+1] 96*1b46b959SChen Xi } 97*1b46b959SChen Xi return ret 98*1b46b959SChen Xi} 99*1b46b959SChen Xifunc taskstr(msTask) { 100*1b46b959SChen Xi if(msTask == 0){ 101*1b46b959SChen Xi return "Chn " 102*1b46b959SChen Xi } else { 103*1b46b959SChen Xi return "Mshr" 104*1b46b959SChen Xi } 105*1b46b959SChen Xi} 106*1b46b959SChen Xifunc fulladdr_tltest(tag, set, bank) { 107*1b46b959SChen Xi tagbits = 3; 108*1b46b959SChen Xi setbits = 7; 109*1b46b959SChen Xi bankbits = 0; 110*1b46b959SChen Xi return (tag * (2^(bankbits + setbits)) + (set * (2^bankbits)) + bank) * 64; 111*1b46b959SChen Xi} 112*1b46b959SChen Xifunc fulladdr_xs(tag, set, bank) { 113*1b46b959SChen Xi tagbits = 19; 114*1b46b959SChen Xi setbits = 9; 115*1b46b959SChen Xi bankbits = 2; 116*1b46b959SChen Xi return (tag * (2^(bankbits + setbits)) + (set * (2^bankbits)) + bank) * 64; 117*1b46b959SChen Xi} 118*1b46b959SChen Xi 119*1b46b959SChen Xi# TODO: add param 120*1b46b959SChen Xi{ 121*1b46b959SChen Xi METAWWAY = $2; 122*1b46b959SChen Xi METAWVALID = $3; 123*1b46b959SChen Xi MSHRID = $4; 124*1b46b959SChen Xi ALLOCPTR = $5; 125*1b46b959SChen Xi ALLOCVALID = $6; 126*1b46b959SChen Xi DIRWAY= $7; 127*1b46b959SChen Xi DIRHIT = $8; 128*1b46b959SChen Xi SSET = $9; 129*1b46b959SChen Xi TAG = $10; 130*1b46b959SChen Xi OPCODE = $11; 131*1b46b959SChen Xi CHANNEL = $12; 132*1b46b959SChen Xi MSHRTASK = $13; 133*1b46b959SChen Xi STAMP = $14; 134*1b46b959SChen Xi SITE = $15; 135*1b46b959SChen Xi 136*1b46b959SChen Xi match(SITE, /[0-9]+$/) 137*1b46b959SChen Xi BANK = substr(SITE, RSTART, RLENGTH) 138*1b46b959SChen Xi ADDR = fulladdr_xs(TAG, SSET, BANK) 139*1b46b959SChen Xi 140*1b46b959SChen Xi $1 = STAMP; 141*1b46b959SChen Xi $2 = SITE; 142*1b46b959SChen Xi $3 = taskstr(MSHRTASK); 143*1b46b959SChen Xi $4 = chnstr(CHANNEL); 144*1b46b959SChen Xi $5 = sprintf("%14s |", opstr(CHANNEL, OPCODE, MSHRTASK)); 145*1b46b959SChen Xi $6 = sprintf("%lx(%d)", TAG, TAG); 146*1b46b959SChen Xi $7 = sprintf("%lx(%d)\t", SSET, SSET); 147*1b46b959SChen Xi $8 = sprintf("%lx(%d)\t", ADDR, ADDR); 148*1b46b959SChen Xi 149*1b46b959SChen Xi $9 = sprintf("|DIR %d %d", DIRHIT, DIRWAY); 150*1b46b959SChen Xi $10 = sprintf("|ALLOC %d %2d", ALLOCVALID, ALLOCPTR); 151*1b46b959SChen Xi $11 = sprintf("|MSHRID %2d", MSHRID); 152*1b46b959SChen Xi $12 = sprintf("|METAW %d %d", METAWVALID, METAWWAY); 153*1b46b959SChen Xi 154*1b46b959SChen Xi $13 = ""; 155*1b46b959SChen Xi $14 = ""; 156*1b46b959SChen Xi $15 = ""; 157*1b46b959SChen Xi} 158*1b46b959SChen Xi 159*1b46b959SChen Xi1 # print every line 160*1b46b959SChen Xi' 161