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