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:       T7 T15 T58 
66         1/1                    if (wmask[i]) begin
           Tests:       T7 T15 T58 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T7 T15 T58 
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 | 
T7,T15,T58 | 
| 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 | 
| T14 | 
8 | 
8 | 
0 | 
0 | 
| T15 | 
8 | 
8 | 
0 | 
0 | 
| T18 | 
8 | 
8 | 
0 | 
0 | 
| T19 | 
8 | 
8 | 
0 | 
0 | 
| T20 | 
8 | 
8 | 
0 | 
0 | 
| T21 | 
8 | 
8 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
170462190 | 
0 | 
0 | 
| T4 | 
3252 | 
0 | 
0 | 
0 | 
| T8 | 
1286 | 
256 | 
0 | 
0 | 
| T16 | 
237254 | 
1350 | 
0 | 
0 | 
| T25 | 
2777 | 
0 | 
0 | 
0 | 
| T26 | 
12088 | 
1536 | 
0 | 
0 | 
| T27 | 
3062 | 
50 | 
0 | 
0 | 
| T29 | 
0 | 
13550 | 
0 | 
0 | 
| T35 | 
148781 | 
393216 | 
0 | 
0 | 
| T40 | 
147066 | 
0 | 
0 | 
0 | 
| T41 | 
59622 | 
0 | 
0 | 
0 | 
| T49 | 
92220 | 
0 | 
0 | 
0 | 
| T53 | 
50133 | 
0 | 
0 | 
0 | 
| T58 | 
47492 | 
600 | 
0 | 
0 | 
| T59 | 
0 | 
100 | 
0 | 
0 | 
| T62 | 
291984 | 
26112 | 
0 | 
0 | 
| T63 | 
227248 | 
62016 | 
0 | 
0 | 
| T71 | 
0 | 
7528 | 
0 | 
0 | 
| T87 | 
0 | 
1200 | 
0 | 
0 | 
| T122 | 
190858 | 
0 | 
0 | 
0 | 
| T130 | 
0 | 
524288 | 
0 | 
0 | 
| T131 | 
0 | 
721146 | 
0 | 
0 | 
| T132 | 
0 | 
393216 | 
0 | 
0 | 
| T133 | 
0 | 
65536 | 
0 | 
0 | 
| T134 | 
0 | 
458752 | 
0 | 
0 | 
| T135 | 
0 | 
12800 | 
0 | 
0 | 
| T136 | 
0 | 
589824 | 
0 | 
0 | 
| T137 | 
0 | 
327680 | 
0 | 
0 | 
| T138 | 
0 | 
917504 | 
0 | 
0 | 
| T139 | 
123985 | 
0 | 
0 | 
0 | 
| T140 | 
2089 | 
0 | 
0 | 
0 | 
| T141 | 
70151 | 
0 | 
0 | 
0 | 
| T142 | 
6402 | 
0 | 
0 | 
0 | 
| T143 | 
5754 | 
0 | 
0 | 
0 | 
| T144 | 
4375 | 
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 T7 T14 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T7 T15 T58 
66         1/1                    if (wmask[i]) begin
           Tests:       T7 T15 T58 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T7 T15 T58 
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 T7 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 | 
T7,T15,T58 | 
| 1 | 
0 | 
Covered | 
T2,T7,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 | 
| T14 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
| T20 | 
1 | 
1 | 
0 | 
0 | 
| T21 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
398386977 | 
60760791 | 
0 | 
0 | 
| T7 | 
2624 | 
506 | 
0 | 
0 | 
| T8 | 
1286 | 
0 | 
0 | 
0 | 
| T10 | 
0 | 
100 | 
0 | 
0 | 
| T14 | 
12398 | 
0 | 
0 | 
0 | 
| T15 | 
3880 | 
250 | 
0 | 
0 | 
| T16 | 
0 | 
28900 | 
0 | 
0 | 
| T18 | 
1829 | 
0 | 
0 | 
0 | 
| T19 | 
2074 | 
0 | 
0 | 
0 | 
| T20 | 
1824 | 
0 | 
0 | 
0 | 
| T21 | 
1484 | 
0 | 
0 | 
0 | 
| T25 | 
2777 | 
50 | 
0 | 
0 | 
| T26 | 
0 | 
256 | 
0 | 
0 | 
| T29 | 
0 | 
62000 | 
0 | 
0 | 
| T58 | 
47492 | 
17850 | 
0 | 
0 | 
| T62 | 
0 | 
4886 | 
0 | 
0 | 
| T71 | 
0 | 
17292 | 
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:       T58 T8 T26 
66         1/1                    if (wmask[i]) begin
           Tests:       T58 T8 T26 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T58 T8 T26 
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 | 
T58,T8,T26 | 
| 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 | 
| T14 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
| T20 | 
1 | 
1 | 
0 | 
0 | 
| T21 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
398386977 | 
16316807 | 
0 | 
0 | 
| T4 | 
1626 | 
0 | 
0 | 
0 | 
| T8 | 
1286 | 
256 | 
0 | 
0 | 
| T16 | 
118627 | 
1350 | 
0 | 
0 | 
| T25 | 
2777 | 
0 | 
0 | 
0 | 
| T26 | 
6044 | 
1024 | 
0 | 
0 | 
| T27 | 
1531 | 
50 | 
0 | 
0 | 
| T29 | 
0 | 
13550 | 
0 | 
0 | 
| T49 | 
46110 | 
0 | 
0 | 
0 | 
| T58 | 
47492 | 
600 | 
0 | 
0 | 
| T59 | 
0 | 
100 | 
0 | 
0 | 
| T62 | 
145992 | 
26112 | 
0 | 
0 | 
| T63 | 
113624 | 
62016 | 
0 | 
0 | 
| T71 | 
0 | 
4698 | 
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:       T71 T83 T38 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T35 T12 T13 
66         1/1                    if (wmask[i]) begin
           Tests:       T35 T12 T13 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T35 T12 T13 
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:       T71 T83 T38 
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 | 
T35,T12,T13 | 
| 1 | 
0 | 
Covered | 
T71,T83,T38 | 
| 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 | 
| T14 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
| T20 | 
1 | 
1 | 
0 | 
0 | 
| T21 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
398386977 | 
6776314 | 
0 | 
0 | 
| T35 | 
148781 | 
393216 | 
0 | 
0 | 
| T40 | 
147066 | 
0 | 
0 | 
0 | 
| T53 | 
50133 | 
0 | 
0 | 
0 | 
| T122 | 
190858 | 
0 | 
0 | 
0 | 
| T130 | 
0 | 
524288 | 
0 | 
0 | 
| T131 | 
0 | 
721146 | 
0 | 
0 | 
| T132 | 
0 | 
393216 | 
0 | 
0 | 
| T133 | 
0 | 
65536 | 
0 | 
0 | 
| T134 | 
0 | 
458752 | 
0 | 
0 | 
| T135 | 
0 | 
12800 | 
0 | 
0 | 
| T136 | 
0 | 
589824 | 
0 | 
0 | 
| T137 | 
0 | 
327680 | 
0 | 
0 | 
| T138 | 
0 | 
917504 | 
0 | 
0 | 
| T139 | 
123985 | 
0 | 
0 | 
0 | 
| T140 | 
2089 | 
0 | 
0 | 
0 | 
| T141 | 
70151 | 
0 | 
0 | 
0 | 
| T142 | 
6402 | 
0 | 
0 | 
0 | 
| T143 | 
5754 | 
0 | 
0 | 
0 | 
| T144 | 
4375 | 
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:       T25 T26 T27 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T26 T71 T87 
66         1/1                    if (wmask[i]) begin
           Tests:       T26 T71 T87 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T26 T71 T87 
68                                    wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69                                end
                   ==>  MISSING_ELSE
70                              end
71                            end else begin
72         1/1                  rdata_o <= mem[addr_i];
           Tests:       T25 T26 T27 
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 | 
T26,T71,T87 | 
| 1 | 
0 | 
Covered | 
T25,T26,T27 | 
| 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 | 
| T14 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
| T20 | 
1 | 
1 | 
0 | 
0 | 
| T21 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
398386977 | 
7048144 | 
0 | 
0 | 
| T4 | 
1626 | 
0 | 
0 | 
0 | 
| T9 | 
1221 | 
0 | 
0 | 
0 | 
| T16 | 
118627 | 
0 | 
0 | 
0 | 
| T26 | 
6044 | 
512 | 
0 | 
0 | 
| T27 | 
1531 | 
0 | 
0 | 
0 | 
| T29 | 
216346 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
10500 | 
0 | 
0 | 
| T31 | 
0 | 
1100 | 
0 | 
0 | 
| T41 | 
59622 | 
0 | 
0 | 
0 | 
| T49 | 
46110 | 
0 | 
0 | 
0 | 
| T51 | 
0 | 
100 | 
0 | 
0 | 
| T62 | 
145992 | 
0 | 
0 | 
0 | 
| T63 | 
113624 | 
0 | 
0 | 
0 | 
| T71 | 
0 | 
2830 | 
0 | 
0 | 
| T83 | 
0 | 
5004 | 
0 | 
0 | 
| T87 | 
0 | 
1200 | 
0 | 
0 | 
| T101 | 
0 | 
700 | 
0 | 
0 | 
| T145 | 
0 | 
2100 | 
0 | 
0 | 
| T146 | 
0 | 
512 | 
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 T3 T14 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T3 T15 T58 
66         1/1                    if (wmask[i]) begin
           Tests:       T3 T15 T58 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T3 T15 T58 
68                                    wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69                                end
                   ==>  MISSING_ELSE
70                              end
71                            end else begin
72         1/1                  rdata_o <= mem[addr_i];
           Tests:       T1 T3 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 | 
T3,T15,T58 | 
| 1 | 
0 | 
Covered | 
T1,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[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 | 
| T14 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
| T20 | 
1 | 
1 | 
0 | 
0 | 
| T21 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
398386977 | 
61213464 | 
0 | 
0 | 
| T3 | 
4120 | 
1950 | 
0 | 
0 | 
| T7 | 
2624 | 
0 | 
0 | 
0 | 
| T8 | 
1286 | 
0 | 
0 | 
0 | 
| T9 | 
0 | 
100 | 
0 | 
0 | 
| T14 | 
12398 | 
0 | 
0 | 
0 | 
| T15 | 
3880 | 
1200 | 
0 | 
0 | 
| T16 | 
0 | 
56400 | 
0 | 
0 | 
| T18 | 
1829 | 
0 | 
0 | 
0 | 
| T19 | 
2074 | 
0 | 
0 | 
0 | 
| T20 | 
1824 | 
0 | 
0 | 
0 | 
| T21 | 
1484 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
256 | 
0 | 
0 | 
| T29 | 
0 | 
82200 | 
0 | 
0 | 
| T50 | 
0 | 
5397 | 
0 | 
0 | 
| T58 | 
47492 | 
7800 | 
0 | 
0 | 
| T62 | 
0 | 
4692 | 
0 | 
0 | 
| T71 | 
0 | 
12838 | 
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:       T26 T62 T71 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T26 T62 T71 
66         1/1                    if (wmask[i]) begin
           Tests:       T26 T62 T71 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T26 T62 T71 
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:       T26 T62 T71 
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 | 
T26,T62,T71 | 
| 1 | 
0 | 
Covered | 
T26,T62,T71 | 
| 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 | 
| T14 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
| T20 | 
1 | 
1 | 
0 | 
0 | 
| T21 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
398386977 | 
6961958 | 
0 | 
0 | 
| T4 | 
1626 | 
0 | 
0 | 
0 | 
| T9 | 
1221 | 
0 | 
0 | 
0 | 
| T16 | 
118627 | 
0 | 
0 | 
0 | 
| T26 | 
6044 | 
256 | 
0 | 
0 | 
| T27 | 
1531 | 
0 | 
0 | 
0 | 
| T29 | 
216346 | 
0 | 
0 | 
0 | 
| T35 | 
0 | 
575788 | 
0 | 
0 | 
| T41 | 
59622 | 
0 | 
0 | 
0 | 
| T49 | 
46110 | 
0 | 
0 | 
0 | 
| T62 | 
145992 | 
38750 | 
0 | 
0 | 
| T63 | 
113624 | 
0 | 
0 | 
0 | 
| T69 | 
0 | 
300 | 
0 | 
0 | 
| T71 | 
0 | 
4954 | 
0 | 
0 | 
| T72 | 
0 | 
312 | 
0 | 
0 | 
| T83 | 
0 | 
3842 | 
0 | 
0 | 
| T146 | 
0 | 
512 | 
0 | 
0 | 
| T147 | 
0 | 
350 | 
0 | 
0 | 
| T148 | 
0 | 
6372 | 
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:       T71 T83 T35 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T35 T12 T149 
66         1/1                    if (wmask[i]) begin
           Tests:       T35 T12 T149 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T35 T12 T149 
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:       T71 T83 T148 
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 | 
T35,T12,T149 | 
| 1 | 
0 | 
Covered | 
T71,T83,T148 | 
| 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 | 
| T14 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
| T20 | 
1 | 
1 | 
0 | 
0 | 
| T21 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
398386977 | 
5609360 | 
0 | 
0 | 
| T35 | 
148781 | 
524288 | 
0 | 
0 | 
| T40 | 
147066 | 
0 | 
0 | 
0 | 
| T53 | 
50133 | 
0 | 
0 | 
0 | 
| T122 | 
190858 | 
0 | 
0 | 
0 | 
| T130 | 
0 | 
393216 | 
0 | 
0 | 
| T131 | 
0 | 
720896 | 
0 | 
0 | 
| T133 | 
0 | 
65536 | 
0 | 
0 | 
| T137 | 
0 | 
655360 | 
0 | 
0 | 
| T139 | 
123985 | 
0 | 
0 | 
0 | 
| T140 | 
2089 | 
0 | 
0 | 
0 | 
| T141 | 
70151 | 
0 | 
0 | 
0 | 
| T142 | 
6402 | 
0 | 
0 | 
0 | 
| T143 | 
5754 | 
0 | 
0 | 
0 | 
| T144 | 
4375 | 
0 | 
0 | 
0 | 
| T149 | 
0 | 
524288 | 
0 | 
0 | 
| T150 | 
0 | 
524288 | 
0 | 
0 | 
| T151 | 
0 | 
12800 | 
0 | 
0 | 
| T152 | 
0 | 
458752 | 
0 | 
0 | 
| T153 | 
0 | 
12800 | 
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:       T71 T83 T28 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T71 T83 T154 
66         1/1                    if (wmask[i]) begin
           Tests:       T71 T83 T154 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T71 T83 T154 
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:       T71 T83 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[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 | 
T71,T83,T154 | 
| 1 | 
0 | 
Covered | 
T71,T83,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[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 | 
| T14 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
| T20 | 
1 | 
1 | 
0 | 
0 | 
| T21 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
398386977 | 
5775352 | 
0 | 
0 | 
| T32 | 
70686 | 
0 | 
0 | 
0 | 
| T35 | 
0 | 
524288 | 
0 | 
0 | 
| T42 | 
6757 | 
0 | 
0 | 
0 | 
| T50 | 
89867 | 
0 | 
0 | 
0 | 
| T52 | 
73396 | 
0 | 
0 | 
0 | 
| T56 | 
537 | 
0 | 
0 | 
0 | 
| T59 | 
20406 | 
0 | 
0 | 
0 | 
| T70 | 
0 | 
322 | 
0 | 
0 | 
| T71 | 
85823 | 
4042 | 
0 | 
0 | 
| T83 | 
0 | 
9552 | 
0 | 
0 | 
| T127 | 
1117 | 
0 | 
0 | 
0 | 
| T148 | 
0 | 
5660 | 
0 | 
0 | 
| T149 | 
0 | 
524288 | 
0 | 
0 | 
| T154 | 
0 | 
50 | 
0 | 
0 | 
| T155 | 
0 | 
5760 | 
0 | 
0 | 
| T156 | 
0 | 
6522 | 
0 | 
0 | 
| T157 | 
0 | 
256 | 
0 | 
0 | 
| T158 | 
1855 | 
0 | 
0 | 
0 | 
| T159 | 
1177 | 
0 | 
0 | 
0 |