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