Line Coverage for Module :
prim_generic_ram_1p
| Line No. | Total | Covered | Percent |
TOTAL | | 7 | 6 | 85.71 |
CONT_ASSIGN | 42 | 1 | 0 | 0.00 |
CONT_ASSIGN | 52 | 0 | 0 | |
ALWAYS | 63 | 6 | 6 | 100.00 |
41 logic unused_cfg;
42 0/1 ==> assign unused_cfg = ^cfg_i;
43
44 // Width of internal write mask. Note wmask_i input into the module is always assumed
45 // to be the full bit mask
46 localparam int MaskWidth = Width / DataBitsPerMask;
47
48 logic [Width-1:0] mem [Depth];
49 logic [MaskWidth-1:0] wmask;
50
51 for (genvar k = 0; k < MaskWidth; k++) begin : gen_wmask
52 unreachable assign wmask[k] = &wmask_i[k*DataBitsPerMask +: DataBitsPerMask];
53
54 // Ensure that all mask bits within a group have the same value for a write
55 `ASSERT(MaskCheck_A, req_i && write_i |->
56 wmask_i[k*DataBitsPerMask +: DataBitsPerMask] inside {{DataBitsPerMask{1'b1}}, '0},
57 clk_i, '0)
58 end
59
60 // using always instead of always_ff to avoid 'ICPD - illegal combination of drivers' error
61 // thrown when using $readmemh system task to backdoor load an image
62 always @(posedge clk_i) begin
63 1/1 if (req_i) begin
Tests: T1 T2 T3
64 1/1 if (write_i) begin
Tests: T1 T2 T3
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T2 T4 T10
66 1/1 if (wmask[i]) begin
Tests: T2 T4 T10
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T2 T4 T10
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
==> MISSING_ELSE
70 end
71 end else begin
72 1/1 rdata_o <= mem[addr_i];
Tests: T1 T2 T3
73 end
74 end
MISSING_ELSE
Branch Coverage for Module :
prim_generic_ram_1p
| Line No. | Total | Covered | Percent |
Branches |
|
3 |
3 |
100.00 |
IF |
63 |
3 |
3 |
100.00 |
63 if (req_i) begin
-1-
64 if (write_i) begin
-2-
65 for (int i=0; i < MaskWidth; i = i + 1) begin
==>
66 if (wmask[i]) begin
67 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
70 end
71 end else begin
72 rdata_o <= mem[addr_i];
==>
73 end
74 end
MISSING_ELSE
==>
Branches:
-1- | -2- | Status | Tests |
1 |
1 |
Covered |
T2,T4,T10 |
1 |
0 |
Covered |
T1,T2,T3 |
0 |
- |
Covered |
T1,T2,T3 |
Assert Coverage for Module :
prim_generic_ram_1p
Assertion Details
DataBitsPerMaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
8408 |
8408 |
0 |
0 |
T1 |
8 |
8 |
0 |
0 |
T2 |
8 |
8 |
0 |
0 |
T3 |
8 |
8 |
0 |
0 |
T4 |
8 |
8 |
0 |
0 |
T5 |
8 |
8 |
0 |
0 |
T8 |
8 |
8 |
0 |
0 |
T9 |
8 |
8 |
0 |
0 |
T10 |
8 |
8 |
0 |
0 |
T16 |
8 |
8 |
0 |
0 |
T17 |
8 |
8 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
2147483647 |
165291037 |
0 |
0 |
T2 |
3480 |
1950 |
0 |
0 |
T3 |
1887 |
0 |
0 |
0 |
T4 |
4370 |
50 |
0 |
0 |
T5 |
677 |
0 |
0 |
0 |
T6 |
1297 |
0 |
0 |
0 |
T8 |
45213 |
0 |
0 |
0 |
T9 |
1406 |
0 |
0 |
0 |
T10 |
2124 |
0 |
0 |
0 |
T12 |
0 |
500 |
0 |
0 |
T16 |
1541 |
0 |
0 |
0 |
T17 |
1625 |
0 |
0 |
0 |
T25 |
0 |
1024 |
0 |
0 |
T28 |
875684 |
458752 |
0 |
0 |
T30 |
0 |
2650 |
0 |
0 |
T31 |
1776 |
50 |
0 |
0 |
T32 |
0 |
9808 |
0 |
0 |
T42 |
0 |
256 |
0 |
0 |
T45 |
173828 |
0 |
0 |
0 |
T48 |
0 |
10450 |
0 |
0 |
T55 |
0 |
77520 |
0 |
0 |
T67 |
0 |
500 |
0 |
0 |
T77 |
581128 |
0 |
0 |
0 |
T79 |
0 |
524288 |
0 |
0 |
T87 |
0 |
524288 |
0 |
0 |
T127 |
216317 |
0 |
0 |
0 |
T140 |
981571 |
0 |
0 |
0 |
T147 |
0 |
327680 |
0 |
0 |
T148 |
0 |
393216 |
0 |
0 |
T149 |
0 |
393216 |
0 |
0 |
T150 |
0 |
12800 |
0 |
0 |
T151 |
0 |
655360 |
0 |
0 |
T152 |
0 |
589824 |
0 |
0 |
T153 |
0 |
12800 |
0 |
0 |
T154 |
127848 |
0 |
0 |
0 |
T155 |
3601 |
0 |
0 |
0 |
T156 |
2507 |
0 |
0 |
0 |
T157 |
120480 |
0 |
0 |
0 |
T158 |
1384 |
0 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.u_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
TOTAL | | 7 | 6 | 85.71 |
CONT_ASSIGN | 42 | 1 | 0 | 0.00 |
CONT_ASSIGN | 52 | 0 | 0 | |
ALWAYS | 63 | 6 | 6 | 100.00 |
41 logic unused_cfg;
42 0/1 ==> assign unused_cfg = ^cfg_i;
43
44 // Width of internal write mask. Note wmask_i input into the module is always assumed
45 // to be the full bit mask
46 localparam int MaskWidth = Width / DataBitsPerMask;
47
48 logic [Width-1:0] mem [Depth];
49 logic [MaskWidth-1:0] wmask;
50
51 for (genvar k = 0; k < MaskWidth; k++) begin : gen_wmask
52 unreachable assign wmask[k] = &wmask_i[k*DataBitsPerMask +: DataBitsPerMask];
53
54 // Ensure that all mask bits within a group have the same value for a write
55 `ASSERT(MaskCheck_A, req_i && write_i |->
56 wmask_i[k*DataBitsPerMask +: DataBitsPerMask] inside {{DataBitsPerMask{1'b1}}, '0},
57 clk_i, '0)
58 end
59
60 // using always instead of always_ff to avoid 'ICPD - illegal combination of drivers' error
61 // thrown when using $readmemh system task to backdoor load an image
62 always @(posedge clk_i) begin
63 1/1 if (req_i) begin
Tests: T1 T2 T3
64 1/1 if (write_i) begin
Tests: T1 T3 T5
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T10 T25 T30
66 1/1 if (wmask[i]) begin
Tests: T10 T25 T30
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T10 T25 T30
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
==> MISSING_ELSE
70 end
71 end else begin
72 1/1 rdata_o <= mem[addr_i];
Tests: T1 T3 T5
73 end
74 end
MISSING_ELSE
Branch Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.u_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
Branches |
|
3 |
3 |
100.00 |
IF |
63 |
3 |
3 |
100.00 |
63 if (req_i) begin
-1-
64 if (write_i) begin
-2-
65 for (int i=0; i < MaskWidth; i = i + 1) begin
==>
66 if (wmask[i]) begin
67 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
70 end
71 end else begin
72 rdata_o <= mem[addr_i];
==>
73 end
74 end
MISSING_ELSE
==>
Branches:
-1- | -2- | Status | Tests |
1 |
1 |
Covered |
T10,T25,T30 |
1 |
0 |
Covered |
T1,T3,T5 |
0 |
- |
Covered |
T1,T2,T3 |
Assert Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.u_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1051 |
1051 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T9 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
391176692 |
60330618 |
0 |
0 |
T6 |
1297 |
0 |
0 |
0 |
T10 |
2124 |
506 |
0 |
0 |
T11 |
493 |
0 |
0 |
0 |
T12 |
42949 |
0 |
0 |
0 |
T22 |
5453 |
0 |
0 |
0 |
T25 |
5313 |
256 |
0 |
0 |
T26 |
0 |
506 |
0 |
0 |
T30 |
0 |
9750 |
0 |
0 |
T31 |
1776 |
0 |
0 |
0 |
T32 |
0 |
11626 |
0 |
0 |
T33 |
0 |
11739 |
0 |
0 |
T37 |
0 |
74450 |
0 |
0 |
T48 |
0 |
4850 |
0 |
0 |
T53 |
1280 |
0 |
0 |
0 |
T54 |
0 |
27750 |
0 |
0 |
T61 |
1329 |
0 |
0 |
0 |
T62 |
1074 |
0 |
0 |
0 |
T67 |
0 |
8800 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.gen_info_types[0].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
TOTAL | | 7 | 6 | 85.71 |
CONT_ASSIGN | 42 | 1 | 0 | 0.00 |
CONT_ASSIGN | 52 | 0 | 0 | |
ALWAYS | 63 | 6 | 6 | 100.00 |
41 logic unused_cfg;
42 0/1 ==> assign unused_cfg = ^cfg_i;
43
44 // Width of internal write mask. Note wmask_i input into the module is always assumed
45 // to be the full bit mask
46 localparam int MaskWidth = Width / DataBitsPerMask;
47
48 logic [Width-1:0] mem [Depth];
49 logic [MaskWidth-1:0] wmask;
50
51 for (genvar k = 0; k < MaskWidth; k++) begin : gen_wmask
52 unreachable assign wmask[k] = &wmask_i[k*DataBitsPerMask +: DataBitsPerMask];
53
54 // Ensure that all mask bits within a group have the same value for a write
55 `ASSERT(MaskCheck_A, req_i && write_i |->
56 wmask_i[k*DataBitsPerMask +: DataBitsPerMask] inside {{DataBitsPerMask{1'b1}}, '0},
57 clk_i, '0)
58 end
59
60 // using always instead of always_ff to avoid 'ICPD - illegal combination of drivers' error
61 // thrown when using $readmemh system task to backdoor load an image
62 always @(posedge clk_i) begin
63 1/1 if (req_i) begin
Tests: T1 T2 T3
64 1/1 if (write_i) begin
Tests: T1 T2 T3
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T2 T4 T25
66 1/1 if (wmask[i]) begin
Tests: T2 T4 T25
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T2 T4 T25
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
==> MISSING_ELSE
70 end
71 end else begin
72 1/1 rdata_o <= mem[addr_i];
Tests: T1 T2 T3
73 end
74 end
MISSING_ELSE
Branch Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.gen_info_types[0].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
Branches |
|
3 |
3 |
100.00 |
IF |
63 |
3 |
3 |
100.00 |
63 if (req_i) begin
-1-
64 if (write_i) begin
-2-
65 for (int i=0; i < MaskWidth; i = i + 1) begin
==>
66 if (wmask[i]) begin
67 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
70 end
71 end else begin
72 rdata_o <= mem[addr_i];
==>
73 end
74 end
MISSING_ELSE
==>
Branches:
-1- | -2- | Status | Tests |
1 |
1 |
Covered |
T2,T4,T25 |
1 |
0 |
Covered |
T1,T2,T3 |
0 |
- |
Covered |
T1,T2,T3 |
Assert Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.gen_info_types[0].u_info_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1051 |
1051 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T9 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
391176692 |
16855623 |
0 |
0 |
T2 |
3480 |
1950 |
0 |
0 |
T3 |
1887 |
0 |
0 |
0 |
T4 |
4370 |
50 |
0 |
0 |
T5 |
677 |
0 |
0 |
0 |
T6 |
1297 |
0 |
0 |
0 |
T8 |
45213 |
0 |
0 |
0 |
T9 |
1406 |
0 |
0 |
0 |
T10 |
2124 |
0 |
0 |
0 |
T12 |
0 |
500 |
0 |
0 |
T16 |
1541 |
0 |
0 |
0 |
T17 |
1625 |
0 |
0 |
0 |
T25 |
0 |
1024 |
0 |
0 |
T30 |
0 |
2650 |
0 |
0 |
T32 |
0 |
3742 |
0 |
0 |
T42 |
0 |
256 |
0 |
0 |
T48 |
0 |
9700 |
0 |
0 |
T55 |
0 |
77520 |
0 |
0 |
T67 |
0 |
500 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.gen_info_types[1].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
TOTAL | | 7 | 6 | 85.71 |
CONT_ASSIGN | 42 | 1 | 0 | 0.00 |
CONT_ASSIGN | 52 | 0 | 0 | |
ALWAYS | 63 | 6 | 6 | 100.00 |
41 logic unused_cfg;
42 0/1 ==> assign unused_cfg = ^cfg_i;
43
44 // Width of internal write mask. Note wmask_i input into the module is always assumed
45 // to be the full bit mask
46 localparam int MaskWidth = Width / DataBitsPerMask;
47
48 logic [Width-1:0] mem [Depth];
49 logic [MaskWidth-1:0] wmask;
50
51 for (genvar k = 0; k < MaskWidth; k++) begin : gen_wmask
52 unreachable assign wmask[k] = &wmask_i[k*DataBitsPerMask +: DataBitsPerMask];
53
54 // Ensure that all mask bits within a group have the same value for a write
55 `ASSERT(MaskCheck_A, req_i && write_i |->
56 wmask_i[k*DataBitsPerMask +: DataBitsPerMask] inside {{DataBitsPerMask{1'b1}}, '0},
57 clk_i, '0)
58 end
59
60 // using always instead of always_ff to avoid 'ICPD - illegal combination of drivers' error
61 // thrown when using $readmemh system task to backdoor load an image
62 always @(posedge clk_i) begin
63 1/1 if (req_i) begin
Tests: T1 T2 T3
64 1/1 if (write_i) begin
Tests: T32 T59 T82
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T28 T79 T87
66 1/1 if (wmask[i]) begin
Tests: T28 T79 T87
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T28 T79 T87
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
==> MISSING_ELSE
70 end
71 end else begin
72 1/1 rdata_o <= mem[addr_i];
Tests: T32 T59 T82
73 end
74 end
MISSING_ELSE
Branch Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.gen_info_types[1].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
Branches |
|
3 |
3 |
100.00 |
IF |
63 |
3 |
3 |
100.00 |
63 if (req_i) begin
-1-
64 if (write_i) begin
-2-
65 for (int i=0; i < MaskWidth; i = i + 1) begin
==>
66 if (wmask[i]) begin
67 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
70 end
71 end else begin
72 rdata_o <= mem[addr_i];
==>
73 end
74 end
MISSING_ELSE
==>
Branches:
-1- | -2- | Status | Tests |
1 |
1 |
Covered |
T28,T79,T87 |
1 |
0 |
Covered |
T32,T59,T82 |
0 |
- |
Covered |
T1,T2,T3 |
Assert Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.gen_info_types[1].u_info_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1051 |
1051 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T9 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
391176692 |
6723328 |
0 |
0 |
T28 |
875684 |
458752 |
0 |
0 |
T45 |
173828 |
0 |
0 |
0 |
T77 |
581128 |
0 |
0 |
0 |
T79 |
0 |
524288 |
0 |
0 |
T87 |
0 |
524288 |
0 |
0 |
T127 |
216317 |
0 |
0 |
0 |
T140 |
981571 |
0 |
0 |
0 |
T147 |
0 |
327680 |
0 |
0 |
T148 |
0 |
393216 |
0 |
0 |
T149 |
0 |
393216 |
0 |
0 |
T150 |
0 |
12800 |
0 |
0 |
T151 |
0 |
655360 |
0 |
0 |
T152 |
0 |
589824 |
0 |
0 |
T153 |
0 |
12800 |
0 |
0 |
T154 |
127848 |
0 |
0 |
0 |
T155 |
3601 |
0 |
0 |
0 |
T156 |
2507 |
0 |
0 |
0 |
T157 |
120480 |
0 |
0 |
0 |
T158 |
1384 |
0 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.gen_info_types[2].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
TOTAL | | 7 | 6 | 85.71 |
CONT_ASSIGN | 42 | 1 | 0 | 0.00 |
CONT_ASSIGN | 52 | 0 | 0 | |
ALWAYS | 63 | 6 | 6 | 100.00 |
41 logic unused_cfg;
42 0/1 ==> assign unused_cfg = ^cfg_i;
43
44 // Width of internal write mask. Note wmask_i input into the module is always assumed
45 // to be the full bit mask
46 localparam int MaskWidth = Width / DataBitsPerMask;
47
48 logic [Width-1:0] mem [Depth];
49 logic [MaskWidth-1:0] wmask;
50
51 for (genvar k = 0; k < MaskWidth; k++) begin : gen_wmask
52 unreachable assign wmask[k] = &wmask_i[k*DataBitsPerMask +: DataBitsPerMask];
53
54 // Ensure that all mask bits within a group have the same value for a write
55 `ASSERT(MaskCheck_A, req_i && write_i |->
56 wmask_i[k*DataBitsPerMask +: DataBitsPerMask] inside {{DataBitsPerMask{1'b1}}, '0},
57 clk_i, '0)
58 end
59
60 // using always instead of always_ff to avoid 'ICPD - illegal combination of drivers' error
61 // thrown when using $readmemh system task to backdoor load an image
62 always @(posedge clk_i) begin
63 1/1 if (req_i) begin
Tests: T1 T2 T3
64 1/1 if (write_i) begin
Tests: T31 T25 T11
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T31 T11 T48
66 1/1 if (wmask[i]) begin
Tests: T31 T11 T48
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T31 T11 T48
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
==> MISSING_ELSE
70 end
71 end else begin
72 1/1 rdata_o <= mem[addr_i];
Tests: T31 T25 T11
73 end
74 end
MISSING_ELSE
Branch Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.gen_info_types[2].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
Branches |
|
3 |
3 |
100.00 |
IF |
63 |
3 |
3 |
100.00 |
63 if (req_i) begin
-1-
64 if (write_i) begin
-2-
65 for (int i=0; i < MaskWidth; i = i + 1) begin
==>
66 if (wmask[i]) begin
67 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
70 end
71 end else begin
72 rdata_o <= mem[addr_i];
==>
73 end
74 end
MISSING_ELSE
==>
Branches:
-1- | -2- | Status | Tests |
1 |
1 |
Covered |
T31,T11,T48 |
1 |
0 |
Covered |
T31,T25,T11 |
0 |
- |
Covered |
T1,T2,T3 |
Assert Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.gen_info_types[2].u_info_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1051 |
1051 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T9 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
391176692 |
7014452 |
0 |
0 |
T11 |
493 |
0 |
0 |
0 |
T12 |
42949 |
0 |
0 |
0 |
T20 |
2038 |
0 |
0 |
0 |
T22 |
5453 |
0 |
0 |
0 |
T25 |
5313 |
0 |
0 |
0 |
T30 |
40914 |
0 |
0 |
0 |
T31 |
1776 |
50 |
0 |
0 |
T32 |
0 |
6066 |
0 |
0 |
T37 |
0 |
1200 |
0 |
0 |
T40 |
0 |
50 |
0 |
0 |
T41 |
0 |
17500 |
0 |
0 |
T48 |
0 |
750 |
0 |
0 |
T53 |
1280 |
0 |
0 |
0 |
T54 |
0 |
400 |
0 |
0 |
T61 |
1329 |
0 |
0 |
0 |
T62 |
1074 |
0 |
0 |
0 |
T82 |
0 |
1668 |
0 |
0 |
T125 |
0 |
50 |
0 |
0 |
T159 |
0 |
1350 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.u_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
TOTAL | | 7 | 6 | 85.71 |
CONT_ASSIGN | 42 | 1 | 0 | 0.00 |
CONT_ASSIGN | 52 | 0 | 0 | |
ALWAYS | 63 | 6 | 6 | 100.00 |
41 logic unused_cfg;
42 0/1 ==> assign unused_cfg = ^cfg_i;
43
44 // Width of internal write mask. Note wmask_i input into the module is always assumed
45 // to be the full bit mask
46 localparam int MaskWidth = Width / DataBitsPerMask;
47
48 logic [Width-1:0] mem [Depth];
49 logic [MaskWidth-1:0] wmask;
50
51 for (genvar k = 0; k < MaskWidth; k++) begin : gen_wmask
52 unreachable assign wmask[k] = &wmask_i[k*DataBitsPerMask +: DataBitsPerMask];
53
54 // Ensure that all mask bits within a group have the same value for a write
55 `ASSERT(MaskCheck_A, req_i && write_i |->
56 wmask_i[k*DataBitsPerMask +: DataBitsPerMask] inside {{DataBitsPerMask{1'b1}}, '0},
57 clk_i, '0)
58 end
59
60 // using always instead of always_ff to avoid 'ICPD - illegal combination of drivers' error
61 // thrown when using $readmemh system task to backdoor load an image
62 always @(posedge clk_i) begin
63 1/1 if (req_i) begin
Tests: T1 T2 T3
64 1/1 if (write_i) begin
Tests: T8 T6 T31
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T6 T25 T12
66 1/1 if (wmask[i]) begin
Tests: T6 T25 T12
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T6 T25 T12
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
==> MISSING_ELSE
70 end
71 end else begin
72 1/1 rdata_o <= mem[addr_i];
Tests: T8 T6 T31
73 end
74 end
MISSING_ELSE
Branch Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.u_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
Branches |
|
3 |
3 |
100.00 |
IF |
63 |
3 |
3 |
100.00 |
63 if (req_i) begin
-1-
64 if (write_i) begin
-2-
65 for (int i=0; i < MaskWidth; i = i + 1) begin
==>
66 if (wmask[i]) begin
67 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
70 end
71 end else begin
72 rdata_o <= mem[addr_i];
==>
73 end
74 end
MISSING_ELSE
==>
Branches:
-1- | -2- | Status | Tests |
1 |
1 |
Covered |
T6,T25,T12 |
1 |
0 |
Covered |
T8,T6,T31 |
0 |
- |
Covered |
T1,T2,T3 |
Assert Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.u_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1051 |
1051 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T9 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
391176692 |
55644408 |
0 |
0 |
T6 |
1297 |
150 |
0 |
0 |
T11 |
493 |
0 |
0 |
0 |
T12 |
42949 |
2400 |
0 |
0 |
T20 |
0 |
400 |
0 |
0 |
T22 |
5453 |
0 |
0 |
0 |
T25 |
5313 |
256 |
0 |
0 |
T30 |
40914 |
11750 |
0 |
0 |
T31 |
1776 |
0 |
0 |
0 |
T32 |
0 |
11726 |
0 |
0 |
T33 |
0 |
5089 |
0 |
0 |
T37 |
0 |
97750 |
0 |
0 |
T48 |
0 |
3150 |
0 |
0 |
T53 |
1280 |
0 |
0 |
0 |
T61 |
1329 |
0 |
0 |
0 |
T62 |
1074 |
0 |
0 |
0 |
T67 |
0 |
18750 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[0].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
TOTAL | | 7 | 6 | 85.71 |
CONT_ASSIGN | 42 | 1 | 0 | 0.00 |
CONT_ASSIGN | 52 | 0 | 0 | |
ALWAYS | 63 | 6 | 6 | 100.00 |
41 logic unused_cfg;
42 0/1 ==> assign unused_cfg = ^cfg_i;
43
44 // Width of internal write mask. Note wmask_i input into the module is always assumed
45 // to be the full bit mask
46 localparam int MaskWidth = Width / DataBitsPerMask;
47
48 logic [Width-1:0] mem [Depth];
49 logic [MaskWidth-1:0] wmask;
50
51 for (genvar k = 0; k < MaskWidth; k++) begin : gen_wmask
52 unreachable assign wmask[k] = &wmask_i[k*DataBitsPerMask +: DataBitsPerMask];
53
54 // Ensure that all mask bits within a group have the same value for a write
55 `ASSERT(MaskCheck_A, req_i && write_i |->
56 wmask_i[k*DataBitsPerMask +: DataBitsPerMask] inside {{DataBitsPerMask{1'b1}}, '0},
57 clk_i, '0)
58 end
59
60 // using always instead of always_ff to avoid 'ICPD - illegal combination of drivers' error
61 // thrown when using $readmemh system task to backdoor load an image
62 always @(posedge clk_i) begin
63 1/1 if (req_i) begin
Tests: T1 T2 T3
64 1/1 if (write_i) begin
Tests: T25 T32 T82
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T25 T32 T82
66 1/1 if (wmask[i]) begin
Tests: T25 T32 T82
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T25 T32 T82
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
==> MISSING_ELSE
70 end
71 end else begin
72 1/1 rdata_o <= mem[addr_i];
Tests: T25 T32 T82
73 end
74 end
MISSING_ELSE
Branch Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[0].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
Branches |
|
3 |
3 |
100.00 |
IF |
63 |
3 |
3 |
100.00 |
63 if (req_i) begin
-1-
64 if (write_i) begin
-2-
65 for (int i=0; i < MaskWidth; i = i + 1) begin
==>
66 if (wmask[i]) begin
67 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
70 end
71 end else begin
72 rdata_o <= mem[addr_i];
==>
73 end
74 end
MISSING_ELSE
==>
Branches:
-1- | -2- | Status | Tests |
1 |
1 |
Covered |
T25,T32,T82 |
1 |
0 |
Covered |
T25,T32,T82 |
0 |
- |
Covered |
T1,T2,T3 |
Assert Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[0].u_info_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1051 |
1051 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T9 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
391176692 |
6979886 |
0 |
0 |
T11 |
493 |
0 |
0 |
0 |
T12 |
42949 |
0 |
0 |
0 |
T20 |
2038 |
0 |
0 |
0 |
T22 |
5453 |
0 |
0 |
0 |
T25 |
5313 |
256 |
0 |
0 |
T28 |
0 |
12800 |
0 |
0 |
T30 |
40914 |
0 |
0 |
0 |
T32 |
0 |
7128 |
0 |
0 |
T49 |
0 |
50 |
0 |
0 |
T53 |
1280 |
0 |
0 |
0 |
T61 |
1329 |
0 |
0 |
0 |
T67 |
52094 |
0 |
0 |
0 |
T82 |
0 |
4348 |
0 |
0 |
T89 |
0 |
6772 |
0 |
0 |
T120 |
1624 |
0 |
0 |
0 |
T160 |
0 |
550 |
0 |
0 |
T161 |
0 |
512 |
0 |
0 |
T162 |
0 |
3486 |
0 |
0 |
T163 |
0 |
1200 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[1].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
TOTAL | | 7 | 6 | 85.71 |
CONT_ASSIGN | 42 | 1 | 0 | 0.00 |
CONT_ASSIGN | 52 | 0 | 0 | |
ALWAYS | 63 | 6 | 6 | 100.00 |
41 logic unused_cfg;
42 0/1 ==> assign unused_cfg = ^cfg_i;
43
44 // Width of internal write mask. Note wmask_i input into the module is always assumed
45 // to be the full bit mask
46 localparam int MaskWidth = Width / DataBitsPerMask;
47
48 logic [Width-1:0] mem [Depth];
49 logic [MaskWidth-1:0] wmask;
50
51 for (genvar k = 0; k < MaskWidth; k++) begin : gen_wmask
52 unreachable assign wmask[k] = &wmask_i[k*DataBitsPerMask +: DataBitsPerMask];
53
54 // Ensure that all mask bits within a group have the same value for a write
55 `ASSERT(MaskCheck_A, req_i && write_i |->
56 wmask_i[k*DataBitsPerMask +: DataBitsPerMask] inside {{DataBitsPerMask{1'b1}}, '0},
57 clk_i, '0)
58 end
59
60 // using always instead of always_ff to avoid 'ICPD - illegal combination of drivers' error
61 // thrown when using $readmemh system task to backdoor load an image
62 always @(posedge clk_i) begin
63 1/1 if (req_i) begin
Tests: T1 T2 T3
64 1/1 if (write_i) begin
Tests: T32 T82 T89
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T78 T79 T88
66 1/1 if (wmask[i]) begin
Tests: T78 T79 T88
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T78 T79 T88
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
==> MISSING_ELSE
70 end
71 end else begin
72 1/1 rdata_o <= mem[addr_i];
Tests: T32 T82 T89
73 end
74 end
MISSING_ELSE
Branch Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[1].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
Branches |
|
3 |
3 |
100.00 |
IF |
63 |
3 |
3 |
100.00 |
63 if (req_i) begin
-1-
64 if (write_i) begin
-2-
65 for (int i=0; i < MaskWidth; i = i + 1) begin
==>
66 if (wmask[i]) begin
67 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
70 end
71 end else begin
72 rdata_o <= mem[addr_i];
==>
73 end
74 end
MISSING_ELSE
==>
Branches:
-1- | -2- | Status | Tests |
1 |
1 |
Covered |
T78,T79,T88 |
1 |
0 |
Covered |
T32,T82,T89 |
0 |
- |
Covered |
T1,T2,T3 |
Assert Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[1].u_info_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1051 |
1051 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T9 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
391176692 |
5793280 |
0 |
0 |
T58 |
35944 |
0 |
0 |
0 |
T78 |
772886 |
524288 |
0 |
0 |
T79 |
0 |
524288 |
0 |
0 |
T88 |
0 |
327680 |
0 |
0 |
T111 |
291506 |
0 |
0 |
0 |
T147 |
0 |
590080 |
0 |
0 |
T149 |
0 |
851968 |
0 |
0 |
T152 |
0 |
196608 |
0 |
0 |
T164 |
0 |
393216 |
0 |
0 |
T165 |
0 |
393216 |
0 |
0 |
T166 |
0 |
851968 |
0 |
0 |
T167 |
0 |
131072 |
0 |
0 |
T168 |
1757 |
0 |
0 |
0 |
T169 |
161828 |
0 |
0 |
0 |
T170 |
113179 |
0 |
0 |
0 |
T171 |
3086 |
0 |
0 |
0 |
T172 |
423762 |
0 |
0 |
0 |
T173 |
62818 |
0 |
0 |
0 |
T174 |
59518 |
0 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[2].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
TOTAL | | 7 | 6 | 85.71 |
CONT_ASSIGN | 42 | 1 | 0 | 0.00 |
CONT_ASSIGN | 52 | 0 | 0 | |
ALWAYS | 63 | 6 | 6 | 100.00 |
41 logic unused_cfg;
42 0/1 ==> assign unused_cfg = ^cfg_i;
43
44 // Width of internal write mask. Note wmask_i input into the module is always assumed
45 // to be the full bit mask
46 localparam int MaskWidth = Width / DataBitsPerMask;
47
48 logic [Width-1:0] mem [Depth];
49 logic [MaskWidth-1:0] wmask;
50
51 for (genvar k = 0; k < MaskWidth; k++) begin : gen_wmask
52 unreachable assign wmask[k] = &wmask_i[k*DataBitsPerMask +: DataBitsPerMask];
53
54 // Ensure that all mask bits within a group have the same value for a write
55 `ASSERT(MaskCheck_A, req_i && write_i |->
56 wmask_i[k*DataBitsPerMask +: DataBitsPerMask] inside {{DataBitsPerMask{1'b1}}, '0},
57 clk_i, '0)
58 end
59
60 // using always instead of always_ff to avoid 'ICPD - illegal combination of drivers' error
61 // thrown when using $readmemh system task to backdoor load an image
62 always @(posedge clk_i) begin
63 1/1 if (req_i) begin
Tests: T1 T2 T3
64 1/1 if (write_i) begin
Tests: T25 T32 T82
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T25 T32 T82
66 1/1 if (wmask[i]) begin
Tests: T25 T32 T82
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T25 T32 T82
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
==> MISSING_ELSE
70 end
71 end else begin
72 1/1 rdata_o <= mem[addr_i];
Tests: T25 T32 T82
73 end
74 end
MISSING_ELSE
Branch Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[2].u_info_mem.gen_generic.u_impl_generic
| Line No. | Total | Covered | Percent |
Branches |
|
3 |
3 |
100.00 |
IF |
63 |
3 |
3 |
100.00 |
63 if (req_i) begin
-1-
64 if (write_i) begin
-2-
65 for (int i=0; i < MaskWidth; i = i + 1) begin
==>
66 if (wmask[i]) begin
67 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68 wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69 end
70 end
71 end else begin
72 rdata_o <= mem[addr_i];
==>
73 end
74 end
MISSING_ELSE
==>
Branches:
-1- | -2- | Status | Tests |
1 |
1 |
Covered |
T25,T32,T82 |
1 |
0 |
Covered |
T25,T32,T82 |
0 |
- |
Covered |
T1,T2,T3 |
Assert Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[2].u_info_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1051 |
1051 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T9 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
391176692 |
5949442 |
0 |
0 |
T11 |
493 |
0 |
0 |
0 |
T12 |
42949 |
0 |
0 |
0 |
T20 |
2038 |
0 |
0 |
0 |
T22 |
5453 |
0 |
0 |
0 |
T25 |
5313 |
256 |
0 |
0 |
T30 |
40914 |
0 |
0 |
0 |
T32 |
0 |
3942 |
0 |
0 |
T53 |
1280 |
0 |
0 |
0 |
T61 |
1329 |
0 |
0 |
0 |
T67 |
52094 |
0 |
0 |
0 |
T78 |
0 |
524288 |
0 |
0 |
T79 |
0 |
524288 |
0 |
0 |
T82 |
0 |
7178 |
0 |
0 |
T89 |
0 |
5966 |
0 |
0 |
T120 |
1624 |
0 |
0 |
0 |
T160 |
0 |
150 |
0 |
0 |
T161 |
0 |
1024 |
0 |
0 |
T162 |
0 |
6872 |
0 |
0 |
T163 |
0 |
450 |
0 |
0 |