xref: /XiangShan/scripts/cache/convert_tllog.sh (revision 1b46b9591920008655d659ac88cd0250db769664)
1sed 's/|/ /g' | awk --bignum '
2
3func chnstr(chn) {
4  split("A B C D E", channels, " ");
5  return channels[chn + 1]
6}
7
8func opstr(chn, op) {
9
10  a_op[1] = "PutFullData"
11	a_op[2] = "PutPartialData"
12	a_op[3] = "ArithmeticData"
13	a_op[4] = "LogicalData"
14	a_op[5] = "Get"
15	a_op[6] = "Hint"
16	a_op[7] = "AcquireBlock"
17	a_op[8] = "AcquirePerm"
18
19  b_op[1] = "PutFullData"
20  b_op[2] = "PutPartialData"
21  b_op[3] = "ArithmeticData"
22  b_op[4] = "LogicalData"
23  b_op[5] = "Get"
24  b_op[6] = "Hint"
25  b_op[7] = "Probe"
26
27  c_op[1] = "AccessAck"
28  c_op[2] = "AccessAckData"
29  c_op[3] = "HintAck"
30  c_op[4] = "Invalid Opcode"
31  c_op[5] = "ProbeAck"
32  c_op[6] = "ProbeAckData"
33  c_op[7] = "Release"
34  c_op[8] = "ReleaseData"
35
36  d_op[1] = "AccessAck"
37  d_op[2] = "AccessAckData"
38  d_op[3] = "HintAck"
39  d_op[4] = "Invalid Opcode"
40  d_op[5] = "Grant"
41  d_op[6] = "GrantData"
42  d_op[7] = "ReleaseAck"
43
44  ret = "Unknown OP"
45  switch(chn) {
46    case 0:
47      ret = a_op[op+1]
48      break;
49    case 1:
50      ret = b_op[op+1]
51      break;
52    case 2:
53      ret = c_op[op+1]
54      break;
55    case 3:
56      ret = d_op[op+1]
57      break;
58    case 4:
59      ret = "GrantAck"
60      break;
61  }
62  return ret
63}
64
65func paramstr(chn, param) {
66
67  split("Grow NtoB_Grow NtoT_Grow BtoT", grow, "_")
68	split("Cap toT_Cap toB_Cap toN", cap, "_")
69	split("Shrink TtoB_Shrink TtoN_Shrink BtoN_Report TotT_Report BtoB_Report NtoN", report, "_")
70
71  ret = "Reserved"
72  switch(chn){
73    case 0:
74      ret = grow[param+1]
75      break;
76    case 1:
77      ret = cap[param+1]
78      break;
79    case 2:
80      ret = report[param+1]
81      break;
82    case 3:
83      ret = cap[param+1]
84      break;
85  }
86  return ret
87}
88
89{
90  echo = $2;
91  user = $3;
92  data_1 = $4;
93  data_2 = $5;
94  data_3 = $6;
95  data_4 = $7;
96  sink = $9;
97  source = $10;
98
99  $1 = $14;                         # timestamp
100  $2 = $NF;                         # name
101  $3 = chnstr($13)                  # channel
102  $NF = "";                         # remove log id
103  $6 = sink;
104  $7 = source;
105  $5 = paramstr($13, $11)           # param
106  $4 = opstr($13, $12)              # opcode
107
108  $8 = sprintf("%lx", $8)           # address
109  $9  = sprintf("%016lx", data_1)
110  $10 = sprintf("%016lx", data_2)
111  $11 = sprintf("%016lx", data_3)
112  $12 = sprintf("%016lx", data_4)
113
114  $13 = sprintf("user: %lx", user);
115  $14 = sprintf("echo: %lx", echo);
116}
117
1181                                   # print every line
119'
120