xref: /XiangShan/scripts/cache/convert_mp.sh (revision 1b46b9591920008655d659ac88cd0250db769664)
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