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: T3 T16 T15
66 1/1 if (wmask[i]) begin
Tests: T3 T16 T15
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T3 T16 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 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 |
T3,T16,T15 |
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 |
8448 |
8448 |
0 |
0 |
T1 |
8 |
8 |
0 |
0 |
T2 |
8 |
8 |
0 |
0 |
T3 |
8 |
8 |
0 |
0 |
T7 |
8 |
8 |
0 |
0 |
T8 |
8 |
8 |
0 |
0 |
T14 |
8 |
8 |
0 |
0 |
T16 |
8 |
8 |
0 |
0 |
T18 |
8 |
8 |
0 |
0 |
T19 |
8 |
8 |
0 |
0 |
T20 |
8 |
8 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
2147483647 |
157677503 |
0 |
0 |
T8 |
758 |
50 |
0 |
0 |
T9 |
9298 |
0 |
0 |
0 |
T10 |
1271 |
0 |
0 |
0 |
T11 |
0 |
8 |
0 |
0 |
T17 |
75910 |
0 |
0 |
0 |
T22 |
420814 |
0 |
0 |
0 |
T24 |
6305 |
0 |
0 |
0 |
T25 |
0 |
6300 |
0 |
0 |
T27 |
11200 |
512 |
0 |
0 |
T28 |
4402 |
100 |
0 |
0 |
T30 |
419692 |
8550 |
0 |
0 |
T33 |
0 |
25600 |
0 |
0 |
T49 |
46019 |
0 |
0 |
0 |
T50 |
0 |
1100 |
0 |
0 |
T52 |
0 |
87096 |
0 |
0 |
T55 |
27822 |
0 |
0 |
0 |
T59 |
140378 |
550 |
0 |
0 |
T65 |
0 |
400 |
0 |
0 |
T73 |
106133 |
655360 |
0 |
0 |
T132 |
0 |
524288 |
0 |
0 |
T133 |
0 |
606 |
0 |
0 |
T134 |
0 |
131072 |
0 |
0 |
T135 |
0 |
12800 |
0 |
0 |
T136 |
0 |
262144 |
0 |
0 |
T137 |
0 |
12800 |
0 |
0 |
T138 |
0 |
524288 |
0 |
0 |
T139 |
0 |
256 |
0 |
0 |
T140 |
0 |
786432 |
0 |
0 |
T141 |
2211 |
0 |
0 |
0 |
T142 |
80617 |
0 |
0 |
0 |
T143 |
70859 |
0 |
0 |
0 |
T144 |
69752 |
0 |
0 |
0 |
T145 |
213018 |
0 |
0 |
0 |
T146 |
209902 |
0 |
0 |
0 |
T147 |
2206 |
0 |
0 |
0 |
T148 |
184891 |
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: T2 T3 T14
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T3 T16 T15
66 1/1 if (wmask[i]) begin
Tests: T3 T16 T15
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T3 T16 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 T3 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[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 |
T3,T16,T15 |
1 |
0 |
Covered |
T2,T3,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[0].u_prim_flash_bank.u_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1056 |
1056 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T18 |
1 |
1 |
0 |
0 |
T19 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
387955770 |
59662006 |
0 |
0 |
T3 |
2624 |
506 |
0 |
0 |
T7 |
3618 |
0 |
0 |
0 |
T8 |
758 |
0 |
0 |
0 |
T14 |
57474 |
0 |
0 |
0 |
T15 |
82187 |
9529 |
0 |
0 |
T16 |
2778 |
650 |
0 |
0 |
T17 |
0 |
36050 |
0 |
0 |
T18 |
1453 |
0 |
0 |
0 |
T19 |
1592 |
0 |
0 |
0 |
T20 |
1905 |
0 |
0 |
0 |
T22 |
0 |
24258 |
0 |
0 |
T26 |
2605 |
50 |
0 |
0 |
T27 |
0 |
1536 |
0 |
0 |
T28 |
0 |
100 |
0 |
0 |
T30 |
0 |
71950 |
0 |
0 |
T59 |
0 |
24500 |
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: T27 T28 T30
66 1/1 if (wmask[i]) begin
Tests: T27 T28 T30
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T27 T28 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 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 |
T27,T28,T30 |
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 |
1056 |
1056 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T18 |
1 |
1 |
0 |
0 |
T19 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
387955770 |
13759278 |
0 |
0 |
T9 |
4649 |
0 |
0 |
0 |
T10 |
1271 |
0 |
0 |
0 |
T11 |
0 |
8 |
0 |
0 |
T17 |
75910 |
0 |
0 |
0 |
T22 |
210407 |
0 |
0 |
0 |
T24 |
6305 |
0 |
0 |
0 |
T25 |
0 |
5400 |
0 |
0 |
T27 |
5600 |
256 |
0 |
0 |
T28 |
2201 |
100 |
0 |
0 |
T30 |
209846 |
8450 |
0 |
0 |
T33 |
0 |
25600 |
0 |
0 |
T49 |
46019 |
0 |
0 |
0 |
T50 |
0 |
1000 |
0 |
0 |
T52 |
0 |
87096 |
0 |
0 |
T59 |
70189 |
300 |
0 |
0 |
T65 |
0 |
400 |
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: T11 T57 T149
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T11 T12 T73
66 1/1 if (wmask[i]) begin
Tests: T11 T12 T73
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T11 T12 T73
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: T11 T57 T149
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 |
T11,T12,T73 |
1 |
0 |
Covered |
T11,T57,T149 |
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 |
1056 |
1056 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T18 |
1 |
1 |
0 |
0 |
T19 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
387955770 |
4037214 |
0 |
0 |
T55 |
27822 |
0 |
0 |
0 |
T73 |
106133 |
655360 |
0 |
0 |
T132 |
0 |
524288 |
0 |
0 |
T133 |
0 |
606 |
0 |
0 |
T134 |
0 |
131072 |
0 |
0 |
T135 |
0 |
12800 |
0 |
0 |
T136 |
0 |
262144 |
0 |
0 |
T137 |
0 |
12800 |
0 |
0 |
T138 |
0 |
524288 |
0 |
0 |
T139 |
0 |
256 |
0 |
0 |
T140 |
0 |
786432 |
0 |
0 |
T141 |
2211 |
0 |
0 |
0 |
T142 |
80617 |
0 |
0 |
0 |
T143 |
70859 |
0 |
0 |
0 |
T144 |
69752 |
0 |
0 |
0 |
T145 |
213018 |
0 |
0 |
0 |
T146 |
209902 |
0 |
0 |
0 |
T147 |
2206 |
0 |
0 |
0 |
T148 |
184891 |
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: T8 T27 T28
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T8 T27 T30
66 1/1 if (wmask[i]) begin
Tests: T8 T27 T30
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T8 T27 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: T8 T27 T28
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 |
T8,T27,T30 |
1 |
0 |
Covered |
T8,T27,T28 |
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 |
1056 |
1056 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T18 |
1 |
1 |
0 |
0 |
T19 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
387955770 |
4255018 |
0 |
0 |
T4 |
1505 |
0 |
0 |
0 |
T8 |
758 |
50 |
0 |
0 |
T9 |
4649 |
0 |
0 |
0 |
T15 |
82187 |
0 |
0 |
0 |
T22 |
210407 |
0 |
0 |
0 |
T25 |
0 |
900 |
0 |
0 |
T26 |
2605 |
0 |
0 |
0 |
T27 |
5600 |
256 |
0 |
0 |
T28 |
2201 |
0 |
0 |
0 |
T30 |
209846 |
100 |
0 |
0 |
T31 |
0 |
11500 |
0 |
0 |
T32 |
0 |
2050 |
0 |
0 |
T50 |
0 |
100 |
0 |
0 |
T59 |
70189 |
250 |
0 |
0 |
T150 |
0 |
600 |
0 |
0 |
T151 |
0 |
256 |
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: T1 T7 T18
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T7 T15 T27
66 1/1 if (wmask[i]) begin
Tests: T7 T15 T27
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T7 T15 T27
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 T7 T18
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 |
T7,T15,T27 |
1 |
0 |
Covered |
T1,T7,T18 |
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 |
1056 |
1056 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T18 |
1 |
1 |
0 |
0 |
T19 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
387955770 |
59316086 |
0 |
0 |
T4 |
1505 |
0 |
0 |
0 |
T7 |
3618 |
1950 |
0 |
0 |
T8 |
758 |
0 |
0 |
0 |
T10 |
0 |
200 |
0 |
0 |
T14 |
57474 |
0 |
0 |
0 |
T15 |
82187 |
6977 |
0 |
0 |
T16 |
2778 |
0 |
0 |
0 |
T17 |
0 |
17100 |
0 |
0 |
T18 |
1453 |
0 |
0 |
0 |
T19 |
1592 |
0 |
0 |
0 |
T20 |
1905 |
0 |
0 |
0 |
T22 |
0 |
31386 |
0 |
0 |
T25 |
0 |
5250 |
0 |
0 |
T26 |
2605 |
0 |
0 |
0 |
T27 |
0 |
768 |
0 |
0 |
T30 |
0 |
74300 |
0 |
0 |
T59 |
0 |
17950 |
0 |
0 |
T65 |
0 |
200 |
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: T27 T28 T22
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T28 T22 T11
66 1/1 if (wmask[i]) begin
Tests: T28 T22 T11
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T28 T22 T11
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: T27 T28 T22
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 |
T28,T22,T11 |
1 |
0 |
Covered |
T27,T28,T22 |
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 |
1056 |
1056 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T18 |
1 |
1 |
0 |
0 |
T19 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
387955770 |
6334737 |
0 |
0 |
T9 |
4649 |
0 |
0 |
0 |
T10 |
1271 |
0 |
0 |
0 |
T11 |
520 |
0 |
0 |
0 |
T17 |
75910 |
0 |
0 |
0 |
T22 |
210407 |
506 |
0 |
0 |
T24 |
6305 |
0 |
0 |
0 |
T28 |
2201 |
50 |
0 |
0 |
T30 |
209846 |
0 |
0 |
0 |
T36 |
0 |
759296 |
0 |
0 |
T49 |
46019 |
0 |
0 |
0 |
T59 |
70189 |
0 |
0 |
0 |
T71 |
0 |
651 |
0 |
0 |
T73 |
0 |
51200 |
0 |
0 |
T89 |
0 |
1112 |
0 |
0 |
T152 |
0 |
400 |
0 |
0 |
T153 |
0 |
1150 |
0 |
0 |
T154 |
0 |
606 |
0 |
0 |
T155 |
0 |
256 |
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: T11 T153 T36
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T11 T36 T12
66 1/1 if (wmask[i]) begin
Tests: T11 T36 T12
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T11 T36 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: T11 T153 T12
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 |
T11,T36,T12 |
1 |
0 |
Covered |
T11,T153,T12 |
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 |
1056 |
1056 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T18 |
1 |
1 |
0 |
0 |
T19 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
387955770 |
5137754 |
0 |
0 |
T36 |
120660 |
720896 |
0 |
0 |
T40 |
121280 |
0 |
0 |
0 |
T103 |
82671 |
0 |
0 |
0 |
T121 |
3342 |
0 |
0 |
0 |
T156 |
0 |
327680 |
0 |
0 |
T157 |
0 |
346 |
0 |
0 |
T158 |
0 |
65536 |
0 |
0 |
T159 |
0 |
524288 |
0 |
0 |
T160 |
0 |
589824 |
0 |
0 |
T161 |
0 |
851968 |
0 |
0 |
T162 |
0 |
393216 |
0 |
0 |
T163 |
0 |
12800 |
0 |
0 |
T164 |
0 |
720896 |
0 |
0 |
T165 |
1536 |
0 |
0 |
0 |
T166 |
6054 |
0 |
0 |
0 |
T167 |
48017 |
0 |
0 |
0 |
T168 |
44385 |
0 |
0 |
0 |
T169 |
3471 |
0 |
0 |
0 |
T170 |
264512 |
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: T27 T11 T151
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T11 T151 T153
66 1/1 if (wmask[i]) begin
Tests: T11 T151 T153
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T11 T151 T153
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: T27 T11 T151
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 |
T11,T151,T153 |
1 |
0 |
Covered |
T27,T11,T151 |
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 |
1056 |
1056 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T14 |
1 |
1 |
0 |
0 |
T16 |
1 |
1 |
0 |
0 |
T18 |
1 |
1 |
0 |
0 |
T19 |
1 |
1 |
0 |
0 |
T20 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
387955770 |
5175410 |
0 |
0 |
T21 |
4106 |
0 |
0 |
0 |
T23 |
1148 |
0 |
0 |
0 |
T36 |
0 |
720896 |
0 |
0 |
T61 |
1094 |
0 |
0 |
0 |
T73 |
0 |
256 |
0 |
0 |
T82 |
20676 |
0 |
0 |
0 |
T151 |
6580 |
256 |
0 |
0 |
T153 |
0 |
450 |
0 |
0 |
T155 |
0 |
512 |
0 |
0 |
T156 |
0 |
327680 |
0 |
0 |
T171 |
0 |
256 |
0 |
0 |
T172 |
0 |
506 |
0 |
0 |
T173 |
0 |
450 |
0 |
0 |
T174 |
0 |
200 |
0 |
0 |
T175 |
463 |
0 |
0 |
0 |
T176 |
50779 |
0 |
0 |
0 |
T177 |
66533 |
0 |
0 |
0 |
T178 |
1920 |
0 |
0 |
0 |
T179 |
6376 |
0 |
0 |
0 |