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 T7 T12
66 1/1 if (wmask[i]) begin
Tests: T2 T7 T12
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T2 T7 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: 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,T7,T12 |
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 |
8464 |
8464 |
0 |
0 |
T1 |
8 |
8 |
0 |
0 |
T2 |
8 |
8 |
0 |
0 |
T3 |
8 |
8 |
0 |
0 |
T4 |
8 |
8 |
0 |
0 |
T7 |
8 |
8 |
0 |
0 |
T8 |
8 |
8 |
0 |
0 |
T11 |
8 |
8 |
0 |
0 |
T12 |
8 |
8 |
0 |
0 |
T13 |
8 |
8 |
0 |
0 |
T17 |
8 |
8 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
2147483647 |
159407523 |
0 |
0 |
T5 |
1123 |
0 |
0 |
0 |
T8 |
4369 |
50 |
0 |
0 |
T9 |
656 |
47 |
0 |
0 |
T14 |
1584 |
0 |
0 |
0 |
T15 |
844 |
0 |
0 |
0 |
T17 |
1829 |
0 |
0 |
0 |
T20 |
42997 |
2900 |
0 |
0 |
T22 |
1774 |
50 |
0 |
0 |
T23 |
7375 |
2048 |
0 |
0 |
T24 |
1511 |
0 |
0 |
0 |
T26 |
183857 |
0 |
0 |
0 |
T29 |
0 |
13824 |
0 |
0 |
T30 |
609342 |
256 |
0 |
0 |
T35 |
165459 |
0 |
0 |
0 |
T37 |
0 |
11000 |
0 |
0 |
T38 |
0 |
200 |
0 |
0 |
T46 |
160270 |
0 |
0 |
0 |
T55 |
6654 |
0 |
0 |
0 |
T63 |
1126 |
0 |
0 |
0 |
T66 |
0 |
1300 |
0 |
0 |
T73 |
0 |
606 |
0 |
0 |
T78 |
0 |
655360 |
0 |
0 |
T81 |
4221 |
0 |
0 |
0 |
T110 |
0 |
147288 |
0 |
0 |
T130 |
0 |
589824 |
0 |
0 |
T131 |
0 |
589824 |
0 |
0 |
T132 |
0 |
65595 |
0 |
0 |
T133 |
0 |
606 |
0 |
0 |
T134 |
0 |
262144 |
0 |
0 |
T135 |
0 |
655360 |
0 |
0 |
T136 |
0 |
262144 |
0 |
0 |
T137 |
0 |
458752 |
0 |
0 |
T138 |
233189 |
0 |
0 |
0 |
T139 |
50885 |
0 |
0 |
0 |
T140 |
1550 |
0 |
0 |
0 |
T141 |
159698 |
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: T2 T7 T12
66 1/1 if (wmask[i]) begin
Tests: T2 T7 T12
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T2 T7 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: 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 |
T2,T7,T12 |
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 |
1058 |
1058 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T11 |
1 |
1 |
0 |
0 |
T12 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
373795953 |
62921582 |
0 |
0 |
T2 |
3525 |
1950 |
0 |
0 |
T3 |
1219 |
0 |
0 |
0 |
T4 |
1433 |
0 |
0 |
0 |
T7 |
1352 |
200 |
0 |
0 |
T8 |
4369 |
100 |
0 |
0 |
T9 |
656 |
0 |
0 |
0 |
T11 |
2053 |
0 |
0 |
0 |
T12 |
2602 |
506 |
0 |
0 |
T13 |
34283 |
0 |
0 |
0 |
T15 |
0 |
100 |
0 |
0 |
T17 |
1829 |
0 |
0 |
0 |
T20 |
0 |
6750 |
0 |
0 |
T23 |
0 |
1792 |
0 |
0 |
T24 |
0 |
50 |
0 |
0 |
T37 |
0 |
6400 |
0 |
0 |
T59 |
0 |
1100 |
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: T8 T9 T22
66 1/1 if (wmask[i]) begin
Tests: T8 T9 T22
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T8 T9 T22
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 |
T8,T9,T22 |
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 |
1058 |
1058 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T11 |
1 |
1 |
0 |
0 |
T12 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
373795953 |
15726979 |
0 |
0 |
T8 |
4369 |
50 |
0 |
0 |
T9 |
656 |
47 |
0 |
0 |
T14 |
1584 |
0 |
0 |
0 |
T15 |
844 |
0 |
0 |
0 |
T17 |
1829 |
0 |
0 |
0 |
T20 |
0 |
2400 |
0 |
0 |
T22 |
1774 |
50 |
0 |
0 |
T23 |
7375 |
2048 |
0 |
0 |
T24 |
1511 |
0 |
0 |
0 |
T29 |
0 |
13824 |
0 |
0 |
T37 |
0 |
9450 |
0 |
0 |
T38 |
0 |
200 |
0 |
0 |
T55 |
6654 |
0 |
0 |
0 |
T63 |
1126 |
0 |
0 |
0 |
T73 |
0 |
606 |
0 |
0 |
T110 |
0 |
147288 |
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: T9 T69 T39
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T9 T30 T10
66 1/1 if (wmask[i]) begin
Tests: T9 T30 T10
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T9 T30 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: T9 T69 T39
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 |
T9,T30,T10 |
1 |
0 |
Covered |
T9,T69,T39 |
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 |
1058 |
1058 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T11 |
1 |
1 |
0 |
0 |
T12 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
373795953 |
5741965 |
0 |
0 |
T5 |
1123 |
0 |
0 |
0 |
T26 |
183857 |
0 |
0 |
0 |
T30 |
609342 |
256 |
0 |
0 |
T35 |
165459 |
0 |
0 |
0 |
T46 |
160270 |
0 |
0 |
0 |
T78 |
0 |
655360 |
0 |
0 |
T81 |
4221 |
0 |
0 |
0 |
T130 |
0 |
589824 |
0 |
0 |
T131 |
0 |
589824 |
0 |
0 |
T132 |
0 |
65595 |
0 |
0 |
T133 |
0 |
606 |
0 |
0 |
T134 |
0 |
262144 |
0 |
0 |
T135 |
0 |
655360 |
0 |
0 |
T136 |
0 |
262144 |
0 |
0 |
T137 |
0 |
458752 |
0 |
0 |
T138 |
233189 |
0 |
0 |
0 |
T139 |
50885 |
0 |
0 |
0 |
T140 |
1550 |
0 |
0 |
0 |
T141 |
159698 |
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: T9 T23 T24
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T9 T20 T37
66 1/1 if (wmask[i]) begin
Tests: T9 T20 T37
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T9 T20 T37
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: T9 T23 T24
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,T20,T37 |
1 |
0 |
Covered |
T9,T23,T24 |
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 |
1058 |
1058 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T11 |
1 |
1 |
0 |
0 |
T12 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
373795953 |
6001775 |
0 |
0 |
T20 |
42997 |
500 |
0 |
0 |
T26 |
0 |
100 |
0 |
0 |
T27 |
0 |
19000 |
0 |
0 |
T29 |
114745 |
0 |
0 |
0 |
T37 |
35890 |
1550 |
0 |
0 |
T38 |
31423 |
0 |
0 |
0 |
T56 |
1821 |
0 |
0 |
0 |
T59 |
3051 |
0 |
0 |
0 |
T65 |
1335 |
0 |
0 |
0 |
T66 |
0 |
1300 |
0 |
0 |
T73 |
164213 |
0 |
0 |
0 |
T89 |
0 |
750 |
0 |
0 |
T106 |
4279 |
0 |
0 |
0 |
T141 |
0 |
350 |
0 |
0 |
T142 |
0 |
200 |
0 |
0 |
T143 |
0 |
250 |
0 |
0 |
T144 |
0 |
100 |
0 |
0 |
T145 |
1355 |
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: T13 T9 T55
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T9 T23 T43
66 1/1 if (wmask[i]) begin
Tests: T9 T23 T43
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T9 T23 T43
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: T13 T9 T55
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 |
T9,T23,T43 |
1 |
0 |
Covered |
T13,T9,T55 |
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 |
1058 |
1058 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T11 |
1 |
1 |
0 |
0 |
T12 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
373795953 |
57601253 |
0 |
0 |
T14 |
1584 |
0 |
0 |
0 |
T19 |
1958 |
400 |
0 |
0 |
T20 |
42997 |
12550 |
0 |
0 |
T23 |
7375 |
768 |
0 |
0 |
T24 |
1511 |
0 |
0 |
0 |
T37 |
35890 |
3700 |
0 |
0 |
T38 |
0 |
6600 |
0 |
0 |
T43 |
13318 |
400 |
0 |
0 |
T45 |
0 |
7123 |
0 |
0 |
T49 |
0 |
8841 |
0 |
0 |
T63 |
1126 |
0 |
0 |
0 |
T64 |
2484 |
0 |
0 |
0 |
T73 |
0 |
24664 |
0 |
0 |
T92 |
0 |
27650 |
0 |
0 |
T145 |
1355 |
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[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: T9 T23 T73
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T9 T73 T30
66 1/1 if (wmask[i]) begin
Tests: T9 T73 T30
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T9 T73 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: T9 T23 T73
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 |
T9,T73,T30 |
1 |
0 |
Covered |
T9,T23,T73 |
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 |
1058 |
1058 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T11 |
1 |
1 |
0 |
0 |
T12 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
373795953 |
4509703 |
0 |
0 |
T30 |
0 |
38700 |
0 |
0 |
T44 |
2155 |
0 |
0 |
0 |
T45 |
64670 |
0 |
0 |
0 |
T51 |
28820 |
0 |
0 |
0 |
T67 |
7393 |
0 |
0 |
0 |
T68 |
66631 |
0 |
0 |
0 |
T69 |
45342 |
0 |
0 |
0 |
T73 |
164213 |
606 |
0 |
0 |
T74 |
70627 |
0 |
0 |
0 |
T78 |
0 |
406672 |
0 |
0 |
T79 |
0 |
656 |
0 |
0 |
T110 |
357218 |
0 |
0 |
0 |
T111 |
53736 |
0 |
0 |
0 |
T130 |
0 |
25600 |
0 |
0 |
T143 |
0 |
350 |
0 |
0 |
T146 |
0 |
256 |
0 |
0 |
T147 |
0 |
506 |
0 |
0 |
T148 |
0 |
512 |
0 |
0 |
T149 |
0 |
3336 |
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: T9 T143 T10
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T9 T10 T78
66 1/1 if (wmask[i]) begin
Tests: T9 T10 T78
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T9 T10 T78
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: T9 T143 T10
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 |
T9,T10,T78 |
1 |
0 |
Covered |
T9,T143,T10 |
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 |
1058 |
1058 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T11 |
1 |
1 |
0 |
0 |
T12 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
373795953 |
3434028 |
0 |
0 |
T78 |
140335 |
393216 |
0 |
0 |
T79 |
73298 |
0 |
0 |
0 |
T108 |
2113 |
0 |
0 |
0 |
T137 |
0 |
589824 |
0 |
0 |
T150 |
0 |
327680 |
0 |
0 |
T151 |
0 |
12800 |
0 |
0 |
T152 |
0 |
556 |
0 |
0 |
T153 |
0 |
524288 |
0 |
0 |
T154 |
0 |
327680 |
0 |
0 |
T155 |
0 |
589824 |
0 |
0 |
T156 |
0 |
589824 |
0 |
0 |
T157 |
0 |
12800 |
0 |
0 |
T158 |
1544 |
0 |
0 |
0 |
T159 |
1537 |
0 |
0 |
0 |
T160 |
28666 |
0 |
0 |
0 |
T161 |
255822 |
0 |
0 |
0 |
T162 |
113897 |
0 |
0 |
0 |
T163 |
2592 |
0 |
0 |
0 |
T164 |
142138 |
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: T9 T143 T147
65 1/1 for (int i=0; i < MaskWidth; i = i + 1) begin
Tests: T9 T143 T147
66 1/1 if (wmask[i]) begin
Tests: T9 T143 T147
67 1/1 mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
Tests: T9 T143 T147
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: T9 T143 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[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 |
T9,T143,T147 |
1 |
0 |
Covered |
T9,T143,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[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 |
1058 |
1058 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T7 |
1 |
1 |
0 |
0 |
T8 |
1 |
1 |
0 |
0 |
T11 |
1 |
1 |
0 |
0 |
T12 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T17 |
1 |
1 |
0 |
0 |
gen_wmask[0].MaskCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
373795953 |
3470238 |
0 |
0 |
T78 |
0 |
393216 |
0 |
0 |
T107 |
1890 |
0 |
0 |
0 |
T109 |
61305 |
0 |
0 |
0 |
T143 |
6551 |
700 |
0 |
0 |
T144 |
84301 |
0 |
0 |
0 |
T146 |
6629 |
0 |
0 |
0 |
T147 |
0 |
506 |
0 |
0 |
T148 |
0 |
256 |
0 |
0 |
T150 |
0 |
327680 |
0 |
0 |
T151 |
0 |
25600 |
0 |
0 |
T165 |
0 |
550 |
0 |
0 |
T166 |
0 |
556 |
0 |
0 |
T167 |
0 |
256 |
0 |
0 |
T168 |
0 |
350 |
0 |
0 |
T169 |
1145 |
0 |
0 |
0 |
T170 |
451 |
0 |
0 |
0 |
T171 |
1268 |
0 |
0 |
0 |
T172 |
4943 |
0 |
0 |
0 |
T173 |
2753 |
0 |
0 |
0 |