Skip to content

Commit dca91c4

Browse files
committed
Add L1 error count registers
1 parent 6bad01b commit dca91c4

3 files changed

Lines changed: 23 additions & 8 deletions

File tree

src/ctrl_unit/cluster_icache_ctrl.hjson

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@
1717
desc: "Number of cores",
1818
default: "8"
1919
},
20+
{ name: "NumL0Events",
21+
desc: "Number of L0 events",
22+
default: "5"
23+
},
24+
{ name: "NumL1Events",
25+
desc: "Number of L1 events",
26+
default: "4"
27+
},
2028
{ name: "NumAvailableCounters",
2129
desc: "Number of available counters",
2230
default: "44" // NumL1Events + NumCores * NumL0Events

src/ctrl_unit/cluster_icache_ctrl_reg_pkg.sv

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ package cluster_icache_ctrl_reg_pkg;
88

99
// Param list
1010
parameter int NumCores = 8;
11+
parameter int NumL0Events = 5;
12+
parameter int NumL1Events = 4;
1113
parameter int NumAvailableCounters = 44;
1214

1315
// Address widths within the block

src/ctrl_unit/cluster_icache_ctrl_unit.sv

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ module cluster_icache_ctrl_unit import snitch_icache_pkg::*; #(
2626
import cluster_icache_ctrl_reg_pkg::*;
2727

2828
initial begin
29-
assert(5 == $bits(icache_l0_events_t));
30-
assert(4 == $bits(icache_l1_events_t));
31-
assert(NumAvailableCounters >= 4 + NR_FETCH_PORTS*5);
29+
assert(NumL0Events == $bits(icache_l0_events_t));
30+
assert(NumL1Events == $bits(icache_l1_events_t));
31+
assert(NumAvailableCounters >= NumL1Events + NR_FETCH_PORTS*NumL0Events);
3232
assert(NR_FETCH_PORTS <= NumCores);
3333
end
3434

@@ -66,11 +66,16 @@ module cluster_icache_ctrl_unit import snitch_icache_pkg::*; #(
6666
counters_reg[3].de = reg2hw.enable_counters.q & l1_events_i.l1_handler_stall;
6767

6868
for (int unsigned i = 0; i < NR_FETCH_PORTS; i++) begin
69-
counters_reg[4 + i*5 + 0].de = reg2hw.enable_counters.q & l0_events_i[i].l0_miss;
70-
counters_reg[4 + i*5 + 1].de = reg2hw.enable_counters.q & l0_events_i[i].l0_hit;
71-
counters_reg[4 + i*5 + 2].de = reg2hw.enable_counters.q & l0_events_i[i].l0_prefetch;
72-
counters_reg[4 + i*5 + 3].de = reg2hw.enable_counters.q & l0_events_i[i].l0_double_hit;
73-
counters_reg[4 + i*5 + 4].de = reg2hw.enable_counters.q & l0_events_i[i].l0_stall;
69+
counters_reg[NumL1Events + i*NumL0Events + 0].de = reg2hw.enable_counters.q &
70+
l0_events_i[i].l0_miss;
71+
counters_reg[NumL1Events + i*NumL0Events + 1].de = reg2hw.enable_counters.q &
72+
l0_events_i[i].l0_hit;
73+
counters_reg[NumL1Events + i*NumL0Events + 2].de = reg2hw.enable_counters.q &
74+
l0_events_i[i].l0_prefetch;
75+
counters_reg[NumL1Events + i*NumL0Events + 3].de = reg2hw.enable_counters.q &
76+
l0_events_i[i].l0_double_hit;
77+
counters_reg[NumL1Events + i*NumL0Events + 4].de = reg2hw.enable_counters.q &
78+
l0_events_i[i].l0_stall;
7479
end
7580

7681
// Clear on global clear signal

0 commit comments

Comments
 (0)