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: T1 T7 T14
66 1/1 if (wmask[i]) begin
Tests: T1 T7 T14
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T1 T7 T14
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 |
T1,T7,T14 |
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 |
8320 |
8320 |
0 |
0 |
T1 |
8 |
8 |
0 |
0 |
T2 |
8 |
8 |
0 |
0 |
T3 |
8 |
8 |
0 |
0 |
T7 |
8 |
8 |
0 |
0 |
T13 |
8 |
8 |
0 |
0 |
T14 |
8 |
8 |
0 |
0 |
T15 |
8 |
8 |
0 |
0 |
T20 |
8 |
8 |
0 |
0 |
T21 |
8 |
8 |
0 |
0 |
T22 |
8 |
8 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
2147483647 |
173249610 |
0 |
0 |
T8 |
0 |
100 |
0 |
0 |
T9 |
4067 |
100 |
0 |
0 |
T14 |
55235 |
2750 |
0 |
0 |
T15 |
96557 |
556 |
0 |
0 |
T16 |
3578 |
0 |
0 |
0 |
T17 |
76086 |
1400 |
0 |
0 |
T22 |
179002 |
9750 |
0 |
0 |
T23 |
95417 |
0 |
0 |
0 |
T25 |
0 |
3000 |
0 |
0 |
T27 |
6288 |
1280 |
0 |
0 |
T31 |
1415 |
0 |
0 |
0 |
T35 |
0 |
12800 |
0 |
0 |
T43 |
56502 |
0 |
0 |
0 |
T57 |
0 |
99864 |
0 |
0 |
T64 |
5152 |
0 |
0 |
0 |
T65 |
54909 |
0 |
0 |
0 |
T104 |
0 |
9 |
0 |
0 |
T110 |
250635 |
0 |
0 |
0 |
T129 |
823214 |
1310720 |
0 |
0 |
T130 |
0 |
65536 |
0 |
0 |
T131 |
0 |
65536 |
0 |
0 |
T132 |
0 |
458752 |
0 |
0 |
T133 |
0 |
12800 |
0 |
0 |
T134 |
0 |
524638 |
0 |
0 |
T135 |
0 |
458752 |
0 |
0 |
T136 |
0 |
655360 |
0 |
0 |
T137 |
0 |
506 |
0 |
0 |
T138 |
0 |
12800 |
0 |
0 |
T139 |
49306 |
0 |
0 |
0 |
T140 |
366747 |
0 |
0 |
0 |
T141 |
63172 |
0 |
0 |
0 |
T142 |
414874 |
0 |
0 |
0 |
T143 |
2071 |
0 |
0 |
0 |
T144 |
76469 |
0 |
0 |
0 |
T145 |
248002 |
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 T2 T3
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T1 T7 T14
66 1/1 if (wmask[i]) begin
Tests: T1 T7 T14
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T1 T7 T14
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.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 |
T1,T7,T14 |
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.u_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1040 |
1040 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T15 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
T21 |
1 |
1 |
0 |
0 |
T22 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
386976888 |
59561290 |
0 |
0 |
T1 |
3874 |
1950 |
0 |
0 |
T2 |
10675 |
0 |
0 |
0 |
T3 |
2553 |
0 |
0 |
0 |
T7 |
2265 |
506 |
0 |
0 |
T13 |
1325 |
0 |
0 |
0 |
T14 |
55235 |
13400 |
0 |
0 |
T15 |
96557 |
23558 |
0 |
0 |
T16 |
0 |
900 |
0 |
0 |
T17 |
0 |
29600 |
0 |
0 |
T20 |
1473 |
0 |
0 |
0 |
T21 |
1922 |
0 |
0 |
0 |
T22 |
179002 |
56500 |
0 |
0 |
T23 |
0 |
10454 |
0 |
0 |
T27 |
0 |
1792 |
0 |
0 |
T64 |
0 |
2324 |
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: T14 T22 T15
66 1/1 if (wmask[i]) begin
Tests: T14 T22 T15
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T14 T22 T15
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 |
T14,T22,T15 |
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 |
1040 |
1040 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T15 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
T21 |
1 |
1 |
0 |
0 |
T22 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
386976888 |
15655355 |
0 |
0 |
T8 |
0 |
100 |
0 |
0 |
T14 |
55235 |
2750 |
0 |
0 |
T15 |
96557 |
556 |
0 |
0 |
T16 |
3578 |
0 |
0 |
0 |
T17 |
76086 |
1400 |
0 |
0 |
T22 |
179002 |
9750 |
0 |
0 |
T23 |
95417 |
0 |
0 |
0 |
T25 |
0 |
3000 |
0 |
0 |
T27 |
6288 |
1280 |
0 |
0 |
T35 |
0 |
12800 |
0 |
0 |
T43 |
56502 |
0 |
0 |
0 |
T57 |
0 |
99864 |
0 |
0 |
T64 |
5152 |
0 |
0 |
0 |
T65 |
54909 |
0 |
0 |
0 |
T104 |
0 |
9 |
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: T14 T146 T147
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T12 T129 T130
66 1/1 if (wmask[i]) begin
Tests: T12 T129 T130
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T12 T129 T130
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: T14 T146 T147
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 |
T12,T129,T130 |
1 |
0 |
Covered |
T14,T146,T147 |
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 |
1040 |
1040 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T15 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
T21 |
1 |
1 |
0 |
0 |
T22 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
386976888 |
5007192 |
0 |
0 |
T31 |
1415 |
0 |
0 |
0 |
T110 |
250635 |
0 |
0 |
0 |
T129 |
823214 |
655360 |
0 |
0 |
T130 |
0 |
65536 |
0 |
0 |
T131 |
0 |
65536 |
0 |
0 |
T132 |
0 |
458752 |
0 |
0 |
T133 |
0 |
12800 |
0 |
0 |
T134 |
0 |
524638 |
0 |
0 |
T135 |
0 |
458752 |
0 |
0 |
T136 |
0 |
655360 |
0 |
0 |
T137 |
0 |
506 |
0 |
0 |
T138 |
0 |
12800 |
0 |
0 |
T139 |
49306 |
0 |
0 |
0 |
T140 |
366747 |
0 |
0 |
0 |
T141 |
63172 |
0 |
0 |
0 |
T142 |
414874 |
0 |
0 |
0 |
T143 |
2071 |
0 |
0 |
0 |
T144 |
76469 |
0 |
0 |
0 |
T145 |
248002 |
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: T17 T65 T9
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T9 T54 T28
66 1/1 if (wmask[i]) begin
Tests: T9 T54 T28
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T9 T54 T28
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: T17 T65 T9
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 |
T9,T54,T28 |
1 |
0 |
Covered |
T17,T65,T9 |
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 |
1040 |
1040 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T15 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
T21 |
1 |
1 |
0 |
0 |
T22 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
386976888 |
5162252 |
0 |
0 |
T9 |
4067 |
100 |
0 |
0 |
T10 |
825 |
0 |
0 |
0 |
T25 |
77527 |
0 |
0 |
0 |
T26 |
5583 |
0 |
0 |
0 |
T28 |
0 |
6000 |
0 |
0 |
T34 |
0 |
600 |
0 |
0 |
T54 |
0 |
100 |
0 |
0 |
T57 |
185541 |
0 |
0 |
0 |
T66 |
1136 |
0 |
0 |
0 |
T67 |
482 |
0 |
0 |
0 |
T88 |
0 |
500 |
0 |
0 |
T112 |
1892 |
0 |
0 |
0 |
T126 |
1008 |
0 |
0 |
0 |
T129 |
0 |
655360 |
0 |
0 |
T148 |
0 |
350 |
0 |
0 |
T149 |
0 |
6400 |
0 |
0 |
T150 |
0 |
4500 |
0 |
0 |
T151 |
0 |
1000 |
0 |
0 |
T152 |
1066 |
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.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: T2 T20 T14
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T14 T22 T15
66 1/1 if (wmask[i]) begin
Tests: T14 T22 T15
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T14 T22 T15
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: T2 T20 T14
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 |
T14,T22,T15 |
1 |
0 |
Covered |
T2,T20,T14 |
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 |
1040 |
1040 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T15 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
T21 |
1 |
1 |
0 |
0 |
T22 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
386976888 |
64621392 |
0 |
0 |
T9 |
0 |
50 |
0 |
0 |
T14 |
55235 |
14800 |
0 |
0 |
T15 |
96557 |
30680 |
0 |
0 |
T16 |
3578 |
550 |
0 |
0 |
T17 |
76086 |
19850 |
0 |
0 |
T22 |
179002 |
58950 |
0 |
0 |
T23 |
95417 |
6745 |
0 |
0 |
T25 |
0 |
100 |
0 |
0 |
T27 |
6288 |
512 |
0 |
0 |
T43 |
56502 |
0 |
0 |
0 |
T64 |
5152 |
0 |
0 |
0 |
T65 |
54909 |
0 |
0 |
0 |
T66 |
0 |
100 |
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: T15 T27 T36
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T15 T36 T30
66 1/1 if (wmask[i]) begin
Tests: T15 T36 T30
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T15 T36 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: T15 T27 T36
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 |
T15,T36,T30 |
1 |
0 |
Covered |
T15,T27,T36 |
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 |
1040 |
1040 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T15 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
T21 |
1 |
1 |
0 |
0 |
T22 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
386976888 |
8564863 |
0 |
0 |
T4 |
1286 |
0 |
0 |
0 |
T8 |
1141 |
0 |
0 |
0 |
T15 |
96557 |
506 |
0 |
0 |
T16 |
3578 |
0 |
0 |
0 |
T17 |
76086 |
0 |
0 |
0 |
T23 |
95417 |
0 |
0 |
0 |
T27 |
6288 |
0 |
0 |
0 |
T30 |
0 |
50 |
0 |
0 |
T36 |
0 |
550188 |
0 |
0 |
T43 |
56502 |
0 |
0 |
0 |
T64 |
5152 |
0 |
0 |
0 |
T65 |
54909 |
0 |
0 |
0 |
T129 |
0 |
25600 |
0 |
0 |
T153 |
0 |
308 |
0 |
0 |
T154 |
0 |
51200 |
0 |
0 |
T155 |
0 |
1112 |
0 |
0 |
T156 |
0 |
66992 |
0 |
0 |
T157 |
0 |
656 |
0 |
0 |
T158 |
0 |
65951 |
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: T36 T12 T156
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T36 T12 T156
66 1/1 if (wmask[i]) begin
Tests: T36 T12 T156
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T36 T12 T156
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: T12 T156 T157
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 |
T36,T12,T156 |
1 |
0 |
Covered |
T12,T156,T157 |
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 |
1040 |
1040 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T15 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
T21 |
1 |
1 |
0 |
0 |
T22 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
386976888 |
7314041 |
0 |
0 |
T28 |
184298 |
0 |
0 |
0 |
T36 |
108441 |
524288 |
0 |
0 |
T48 |
137499 |
0 |
0 |
0 |
T97 |
82150 |
0 |
0 |
0 |
T113 |
1797 |
0 |
0 |
0 |
T125 |
163699 |
0 |
0 |
0 |
T132 |
0 |
655360 |
0 |
0 |
T146 |
46230 |
0 |
0 |
0 |
T156 |
0 |
65536 |
0 |
0 |
T158 |
0 |
65619 |
0 |
0 |
T159 |
0 |
196608 |
0 |
0 |
T160 |
0 |
524288 |
0 |
0 |
T161 |
0 |
524288 |
0 |
0 |
T162 |
0 |
506 |
0 |
0 |
T163 |
0 |
556 |
0 |
0 |
T164 |
0 |
589824 |
0 |
0 |
T165 |
2077 |
0 |
0 |
0 |
T166 |
2125 |
0 |
0 |
0 |
T167 |
2526 |
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: T36 T12 T50
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T36 T12 T50
66 1/1 if (wmask[i]) begin
Tests: T36 T12 T50
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T36 T12 T50
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: T12 T168 T156
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 |
T36,T12,T50 |
1 |
0 |
Covered |
T12,T168,T156 |
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 |
1040 |
1040 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T15 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
T21 |
1 |
1 |
0 |
0 |
T22 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
386976888 |
7363225 |
0 |
0 |
T28 |
184298 |
0 |
0 |
0 |
T36 |
108441 |
524544 |
0 |
0 |
T48 |
137499 |
0 |
0 |
0 |
T50 |
0 |
322 |
0 |
0 |
T97 |
82150 |
0 |
0 |
0 |
T113 |
1797 |
0 |
0 |
0 |
T125 |
163699 |
0 |
0 |
0 |
T130 |
0 |
300 |
0 |
0 |
T131 |
0 |
1350 |
0 |
0 |
T146 |
46230 |
0 |
0 |
0 |
T156 |
0 |
65786 |
0 |
0 |
T157 |
0 |
600 |
0 |
0 |
T158 |
0 |
65619 |
0 |
0 |
T159 |
0 |
196608 |
0 |
0 |
T160 |
0 |
524288 |
0 |
0 |
T165 |
2077 |
0 |
0 |
0 |
T166 |
2125 |
0 |
0 |
0 |
T167 |
2526 |
0 |
0 |
0 |
T169 |
0 |
100 |
0 |
0 |