Line Coverage for Module :
rv_core_addr_trans
| Line No. | Total | Covered | Percent |
TOTAL | | 71 | 71 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 45 | 1 | 1 | 100.00 |
CONT_ASSIGN | 45 | 1 | 1 | 100.00 |
CONT_ASSIGN | 46 | 1 | 1 | 100.00 |
CONT_ASSIGN | 46 | 1 | 1 | 100.00 |
CONT_ASSIGN | 51 | 1 | 1 | 100.00 |
CONT_ASSIGN | 51 | 1 | 1 | 100.00 |
CONT_ASSIGN | 76 | 1 | 1 | 100.00 |
CONT_ASSIGN | 83 | 1 | 1 | 100.00 |
CONT_ASSIGN | 84 | 1 | 1 | 100.00 |
40 for (genvar j = 1; j < AddrWidth; j++) begin : gen_addr_masks_lower_bits
41 62/62 assign input_masks[i][j] = ~®ion_cfg_i[i].matching_region[j-1:0];
Tests: T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74
42 end
43
44 // pack things into region controls
45 2/2 assign region_ctrls[i].output_mask = ~input_masks[i];
Tests: T214 T301 T74 | T214 T301 T74
46 2/2 assign region_ctrls[i].remap_addr = region_cfg_i[i].remap_addr;
Tests: T214 T301 T74 | T214 T301 T74
47 end
48
49 logic [NumRegions-1:0] all_matches;
50 for (genvar i = 0; i < NumRegions; i++) begin : gen_region_matches
51 2/2 assign all_matches[i] = region_cfg_i[i].en &
Tests: T1 T2 T3 | T1 T2 T3
52 ((region_cfg_i[i].matching_region & input_masks[i]) ==
53 (addr_i & input_masks[i]));
54 end
55
56 logic sel_match;
57 region_ctrls_t sel_region;
58 prim_arbiter_fixed #(
59 .N(NumRegions),
60 .DW($bits(region_ctrls_t)),
61 .EnDataPort(1)
62 ) u_sel_region (
63 .clk_i,
64 .rst_ni,
65 .req_i(all_matches),
66 .data_i(region_ctrls),
67 .gnt_o(),
68 .idx_o(),
69 .valid_o(sel_match),
70 .data_o(sel_region),
71 .ready_i(1'b1)
72 );
73
74 // if there is a match, mask off the address bits and remap
75 // if there is no match, just use incoming address
76 1/1 assign addr_o = sel_match ?
Tests: T1 T2 T3
77 (addr_i & sel_region.output_mask) | (sel_region.remap_addr & ~sel_region.output_mask) :
78 addr_i;
79
80 // unused clock/reset, only needed for assertions
81 logic unused_clk;
82 logic unused_rst_n;
83 1/1 assign unused_clk = clk_i;
Tests: T1 T2 T3
84 1/1 assign unused_rst_n = rst_ni;
Tests: T1 T2 T3
Cond Coverage for Module :
rv_core_addr_trans
| Total | Covered | Percent |
Conditions | 12 | 12 | 100.00 |
Logical | 12 | 12 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 51
EXPRESSION (region_cfg_i[0].en & ((region_cfg_i[0].matching_region & input_masks[0]) == (addr_i & input_masks[0])))
---------1-------- ----------------------------------------2----------------------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T214,T301,T74 |
1 | 1 | Covered | T214,T301,T302 |
LINE 51
SUB-EXPRESSION ((region_cfg_i[0].matching_region & input_masks[0]) == (addr_i & input_masks[0]))
----------------------------------------1----------------------------------------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T1,T2,T3 |
LINE 51
EXPRESSION (region_cfg_i[1].en & ((region_cfg_i[1].matching_region & input_masks[1]) == (addr_i & input_masks[1])))
---------1-------- ----------------------------------------2----------------------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T214,T301,T302 |
1 | 1 | Covered | T214,T301,T302 |
LINE 51
SUB-EXPRESSION ((region_cfg_i[1].matching_region & input_masks[1]) == (addr_i & input_masks[1]))
----------------------------------------1----------------------------------------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T1,T2,T3 |
LINE 76
EXPRESSION (sel_match ? (((addr_i & sel_region.output_mask) | (sel_region.remap_addr & (~sel_region.output_mask)))) : addr_i)
----1----
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T214,T301,T302 |
Branch Coverage for Module :
rv_core_addr_trans
| Line No. | Total | Covered | Percent |
Branches |
|
2 |
2 |
100.00 |
TERNARY |
76 |
2 |
2 |
100.00 |
76 assign addr_o = sel_match ?
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T214,T301,T302 |
0 |
Covered |
T1,T2,T3 |
Line Coverage for Instance : tb.dut.top_earlgrey.u_rv_core_ibex.u_ibus_trans
| Line No. | Total | Covered | Percent |
TOTAL | | 71 | 71 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 45 | 1 | 1 | 100.00 |
CONT_ASSIGN | 45 | 1 | 1 | 100.00 |
CONT_ASSIGN | 46 | 1 | 1 | 100.00 |
CONT_ASSIGN | 46 | 1 | 1 | 100.00 |
CONT_ASSIGN | 51 | 1 | 1 | 100.00 |
CONT_ASSIGN | 51 | 1 | 1 | 100.00 |
CONT_ASSIGN | 76 | 1 | 1 | 100.00 |
CONT_ASSIGN | 83 | 1 | 1 | 100.00 |
CONT_ASSIGN | 84 | 1 | 1 | 100.00 |
40 for (genvar j = 1; j < AddrWidth; j++) begin : gen_addr_masks_lower_bits
41 62/62 assign input_masks[i][j] = ~®ion_cfg_i[i].matching_region[j-1:0];
Tests: T214 T301 T302 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74
42 end
43
44 // pack things into region controls
45 2/2 assign region_ctrls[i].output_mask = ~input_masks[i];
Tests: T214 T301 T302 | T214 T301 T74
46 2/2 assign region_ctrls[i].remap_addr = region_cfg_i[i].remap_addr;
Tests: T214 T301 T74 | T214 T301 T74
47 end
48
49 logic [NumRegions-1:0] all_matches;
50 for (genvar i = 0; i < NumRegions; i++) begin : gen_region_matches
51 2/2 assign all_matches[i] = region_cfg_i[i].en &
Tests: T1 T2 T3 | T1 T2 T3
52 ((region_cfg_i[i].matching_region & input_masks[i]) ==
53 (addr_i & input_masks[i]));
54 end
55
56 logic sel_match;
57 region_ctrls_t sel_region;
58 prim_arbiter_fixed #(
59 .N(NumRegions),
60 .DW($bits(region_ctrls_t)),
61 .EnDataPort(1)
62 ) u_sel_region (
63 .clk_i,
64 .rst_ni,
65 .req_i(all_matches),
66 .data_i(region_ctrls),
67 .gnt_o(),
68 .idx_o(),
69 .valid_o(sel_match),
70 .data_o(sel_region),
71 .ready_i(1'b1)
72 );
73
74 // if there is a match, mask off the address bits and remap
75 // if there is no match, just use incoming address
76 1/1 assign addr_o = sel_match ?
Tests: T1 T2 T3
77 (addr_i & sel_region.output_mask) | (sel_region.remap_addr & ~sel_region.output_mask) :
78 addr_i;
79
80 // unused clock/reset, only needed for assertions
81 logic unused_clk;
82 logic unused_rst_n;
83 1/1 assign unused_clk = clk_i;
Tests: T1 T2 T3
84 1/1 assign unused_rst_n = rst_ni;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.top_earlgrey.u_rv_core_ibex.u_ibus_trans
| Total | Covered | Percent |
Conditions | 12 | 12 | 100.00 |
Logical | 12 | 12 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 51
EXPRESSION (region_cfg_i[0].en & ((region_cfg_i[0].matching_region & input_masks[0]) == (addr_i & input_masks[0])))
---------1-------- ----------------------------------------2----------------------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T214,T301,T302 |
1 | 0 | Covered | T214,T301,T302 |
1 | 1 | Covered | T214,T301,T302 |
LINE 51
SUB-EXPRESSION ((region_cfg_i[0].matching_region & input_masks[0]) == (addr_i & input_masks[0]))
----------------------------------------1----------------------------------------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T214,T301,T302 |
LINE 51
EXPRESSION (region_cfg_i[1].en & ((region_cfg_i[1].matching_region & input_masks[1]) == (addr_i & input_masks[1])))
---------1-------- ----------------------------------------2----------------------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T214,T301,T302 |
1 | 0 | Covered | T214,T301,T302 |
1 | 1 | Covered | T214,T301,T302 |
LINE 51
SUB-EXPRESSION ((region_cfg_i[1].matching_region & input_masks[1]) == (addr_i & input_masks[1]))
----------------------------------------1----------------------------------------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T214,T301,T302 |
LINE 76
EXPRESSION (sel_match ? (((addr_i & sel_region.output_mask) | (sel_region.remap_addr & (~sel_region.output_mask)))) : addr_i)
----1----
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T214,T301,T302 |
Branch Coverage for Instance : tb.dut.top_earlgrey.u_rv_core_ibex.u_ibus_trans
| Line No. | Total | Covered | Percent |
Branches |
|
2 |
2 |
100.00 |
TERNARY |
76 |
2 |
2 |
100.00 |
76 assign addr_o = sel_match ?
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T214,T301,T302 |
0 |
Covered |
T1,T2,T3 |
Line Coverage for Instance : tb.dut.top_earlgrey.u_rv_core_ibex.u_dbus_trans
| Line No. | Total | Covered | Percent |
TOTAL | | 71 | 71 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 41 | 1 | 1 | 100.00 |
CONT_ASSIGN | 45 | 1 | 1 | 100.00 |
CONT_ASSIGN | 45 | 1 | 1 | 100.00 |
CONT_ASSIGN | 46 | 1 | 1 | 100.00 |
CONT_ASSIGN | 46 | 1 | 1 | 100.00 |
CONT_ASSIGN | 51 | 1 | 1 | 100.00 |
CONT_ASSIGN | 51 | 1 | 1 | 100.00 |
CONT_ASSIGN | 76 | 1 | 1 | 100.00 |
CONT_ASSIGN | 83 | 1 | 1 | 100.00 |
CONT_ASSIGN | 84 | 1 | 1 | 100.00 |
40 for (genvar j = 1; j < AddrWidth; j++) begin : gen_addr_masks_lower_bits
41 62/62 assign input_masks[i][j] = ~®ion_cfg_i[i].matching_region[j-1:0];
Tests: T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T302 | T214 T301 T302 | T214 T301 T302 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74 | T214 T301 T74
42 end
43
44 // pack things into region controls
45 2/2 assign region_ctrls[i].output_mask = ~input_masks[i];
Tests: T214 T301 T74 | T214 T301 T302
46 2/2 assign region_ctrls[i].remap_addr = region_cfg_i[i].remap_addr;
Tests: T214 T301 T74 | T214 T301 T74
47 end
48
49 logic [NumRegions-1:0] all_matches;
50 for (genvar i = 0; i < NumRegions; i++) begin : gen_region_matches
51 2/2 assign all_matches[i] = region_cfg_i[i].en &
Tests: T1 T2 T3 | T1 T2 T3
52 ((region_cfg_i[i].matching_region & input_masks[i]) ==
53 (addr_i & input_masks[i]));
54 end
55
56 logic sel_match;
57 region_ctrls_t sel_region;
58 prim_arbiter_fixed #(
59 .N(NumRegions),
60 .DW($bits(region_ctrls_t)),
61 .EnDataPort(1)
62 ) u_sel_region (
63 .clk_i,
64 .rst_ni,
65 .req_i(all_matches),
66 .data_i(region_ctrls),
67 .gnt_o(),
68 .idx_o(),
69 .valid_o(sel_match),
70 .data_o(sel_region),
71 .ready_i(1'b1)
72 );
73
74 // if there is a match, mask off the address bits and remap
75 // if there is no match, just use incoming address
76 1/1 assign addr_o = sel_match ?
Tests: T1 T2 T3
77 (addr_i & sel_region.output_mask) | (sel_region.remap_addr & ~sel_region.output_mask) :
78 addr_i;
79
80 // unused clock/reset, only needed for assertions
81 logic unused_clk;
82 logic unused_rst_n;
83 1/1 assign unused_clk = clk_i;
Tests: T1 T2 T3
84 1/1 assign unused_rst_n = rst_ni;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.top_earlgrey.u_rv_core_ibex.u_dbus_trans
| Total | Covered | Percent |
Conditions | 12 | 12 | 100.00 |
Logical | 12 | 12 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 51
EXPRESSION (region_cfg_i[0].en & ((region_cfg_i[0].matching_region & input_masks[0]) == (addr_i & input_masks[0])))
---------1-------- ----------------------------------------2----------------------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T214,T301,T74 |
1 | 1 | Covered | T214,T301,T302 |
LINE 51
SUB-EXPRESSION ((region_cfg_i[0].matching_region & input_masks[0]) == (addr_i & input_masks[0]))
----------------------------------------1----------------------------------------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T1,T2,T3 |
LINE 51
EXPRESSION (region_cfg_i[1].en & ((region_cfg_i[1].matching_region & input_masks[1]) == (addr_i & input_masks[1])))
---------1-------- ----------------------------------------2----------------------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T214,T301,T302 |
1 | 1 | Covered | T214,T301,T302 |
LINE 51
SUB-EXPRESSION ((region_cfg_i[1].matching_region & input_masks[1]) == (addr_i & input_masks[1]))
----------------------------------------1----------------------------------------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T1,T2,T3 |
LINE 76
EXPRESSION (sel_match ? (((addr_i & sel_region.output_mask) | (sel_region.remap_addr & (~sel_region.output_mask)))) : addr_i)
----1----
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T214,T301,T302 |
Branch Coverage for Instance : tb.dut.top_earlgrey.u_rv_core_ibex.u_dbus_trans
| Line No. | Total | Covered | Percent |
Branches |
|
2 |
2 |
100.00 |
TERNARY |
76 |
2 |
2 |
100.00 |
76 assign addr_o = sel_match ?
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T214,T301,T302 |
0 |
Covered |
T1,T2,T3 |