Line Coverage for Module : 
prim_generic_ram_1p
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 6 | 85.71 | 
| CONT_ASSIGN | 42 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 63 | 6 | 6 | 100.00 | 
41                        logic unused_cfg;
42         0/1     ==>    assign unused_cfg = ^cfg_i;
43                      
44                        // Width of internal write mask. Note wmask_i input into the module is always assumed
45                        // to be the full bit mask
46                        localparam int MaskWidth = Width / DataBitsPerMask;
47                      
48                        logic [Width-1:0]     mem [Depth];
49                        logic [MaskWidth-1:0] wmask;
50                      
51                        for (genvar k = 0; k < MaskWidth; k++) begin : gen_wmask
52         unreachable      assign wmask[k] = &wmask_i[k*DataBitsPerMask +: DataBitsPerMask];
53                      
54                          // Ensure that all mask bits within a group have the same value for a write
55                          `ASSERT(MaskCheck_A, req_i && write_i |->
56                              wmask_i[k*DataBitsPerMask +: DataBitsPerMask] inside {{DataBitsPerMask{1'b1}}, '0},
57                              clk_i, '0)
58                        end
59                      
60                        // using always instead of always_ff to avoid 'ICPD  - illegal combination of drivers' error
61                        // thrown when using $readmemh system task to backdoor load an image
62                        always @(posedge clk_i) begin
63         1/1              if (req_i) begin
           Tests:       T1 T2 T3 
64         1/1                if (write_i) begin
           Tests:       T1 T2 T3 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T2 T4 T5 
66         1/1                    if (wmask[i]) begin
           Tests:       T2 T4 T5 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T2 T4 T5 
68                                    wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69                                end
                   ==>  MISSING_ELSE
70                              end
71                            end else begin
72         1/1                  rdata_o <= mem[addr_i];
           Tests:       T1 T2 T3 
73                            end
74                          end
                        MISSING_ELSE
Branch Coverage for Module : 
prim_generic_ram_1p
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
3 | 
3 | 
100.00 | 
| IF | 
63 | 
3 | 
3 | 
100.00 | 
63             if (req_i) begin
               -1-  
64               if (write_i) begin
                 -2-  
65                 for (int i=0; i < MaskWidth; i = i + 1) begin
                   ==>
66                   if (wmask[i]) begin
67                     mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68                       wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69                   end
70                 end
71               end else begin
72                 rdata_o <= mem[addr_i];
                   ==>
73               end
74             end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | Status | Tests | 
| 1 | 
1 | 
Covered | 
T2,T4,T5 | 
| 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 | 
8208 | 
8208 | 
0 | 
0 | 
| T1 | 
8 | 
8 | 
0 | 
0 | 
| T2 | 
8 | 
8 | 
0 | 
0 | 
| T3 | 
8 | 
8 | 
0 | 
0 | 
| T4 | 
8 | 
8 | 
0 | 
0 | 
| T5 | 
8 | 
8 | 
0 | 
0 | 
| T6 | 
8 | 
8 | 
0 | 
0 | 
| T8 | 
8 | 
8 | 
0 | 
0 | 
| T15 | 
8 | 
8 | 
0 | 
0 | 
| T16 | 
8 | 
8 | 
0 | 
0 | 
| T17 | 
8 | 
8 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
143130706 | 
0 | 
0 | 
| T4 | 
4375 | 
50 | 
0 | 
0 | 
| T5 | 
1250 | 
0 | 
0 | 
0 | 
| T6 | 
873 | 
0 | 
0 | 
0 | 
| T8 | 
51282 | 
0 | 
0 | 
0 | 
| T9 | 
2110 | 
0 | 
0 | 
0 | 
| T10 | 
1263 | 
0 | 
0 | 
0 | 
| T16 | 
1834 | 
0 | 
0 | 
0 | 
| T17 | 
1845 | 
0 | 
0 | 
0 | 
| T19 | 
0 | 
300 | 
0 | 
0 | 
| T20 | 
1105 | 
0 | 
0 | 
0 | 
| T27 | 
0 | 
1024 | 
0 | 
0 | 
| T28 | 
0 | 
1112 | 
0 | 
0 | 
| T32 | 
139437 | 
393216 | 
0 | 
0 | 
| T34 | 
0 | 
50 | 
0 | 
0 | 
| T36 | 
30072 | 
7650 | 
0 | 
0 | 
| T37 | 
0 | 
12750 | 
0 | 
0 | 
| T42 | 
0 | 
256 | 
0 | 
0 | 
| T51 | 
0 | 
5000 | 
0 | 
0 | 
| T59 | 
1169 | 
0 | 
0 | 
0 | 
| T63 | 
35615 | 
0 | 
0 | 
0 | 
| T79 | 
116110 | 
0 | 
0 | 
0 | 
| T80 | 
0 | 
589824 | 
0 | 
0 | 
| T84 | 
0 | 
100 | 
0 | 
0 | 
| T89 | 
0 | 
65536 | 
0 | 
0 | 
| T93 | 
0 | 
393216 | 
0 | 
0 | 
| T142 | 
0 | 
370 | 
0 | 
0 | 
| T152 | 
0 | 
524288 | 
0 | 
0 | 
| T153 | 
0 | 
786432 | 
0 | 
0 | 
| T154 | 
0 | 
556 | 
0 | 
0 | 
| T155 | 
0 | 
524288 | 
0 | 
0 | 
| T156 | 
0 | 
720896 | 
0 | 
0 | 
| T157 | 
0 | 
589824 | 
0 | 
0 | 
| T158 | 
2403 | 
0 | 
0 | 
0 | 
| T159 | 
1253 | 
0 | 
0 | 
0 | 
| T160 | 
157678 | 
0 | 
0 | 
0 | 
| T161 | 
2923 | 
0 | 
0 | 
0 | 
| T162 | 
230752 | 
0 | 
0 | 
0 | 
| T163 | 
2008 | 
0 | 
0 | 
0 | 
| T164 | 
137486 | 
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 T5 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T2 T5 T9 
66         1/1                    if (wmask[i]) begin
           Tests:       T2 T5 T9 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T2 T5 T9 
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 T5 
73                            end
74                          end
                        MISSING_ELSE
Branch Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.u_mem.gen_generic.u_impl_generic
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
3 | 
3 | 
100.00 | 
| IF | 
63 | 
3 | 
3 | 
100.00 | 
63             if (req_i) begin
               -1-  
64               if (write_i) begin
                 -2-  
65                 for (int i=0; i < MaskWidth; i = i + 1) begin
                   ==>
66                   if (wmask[i]) begin
67                     mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68                       wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69                   end
70                 end
71               end else begin
72                 rdata_o <= mem[addr_i];
                   ==>
73               end
74             end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | Status | Tests | 
| 1 | 
1 | 
Covered | 
T2,T5,T9 | 
| 1 | 
0 | 
Covered | 
T2,T3,T5 | 
| 0 | 
- | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[0].u_prim_flash_bank.u_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1026 | 
1026 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
332875393 | 
51340678 | 
0 | 
0 | 
| T2 | 
3694 | 
1950 | 
0 | 
0 | 
| T3 | 
2283 | 
0 | 
0 | 
0 | 
| T4 | 
4375 | 
0 | 
0 | 
0 | 
| T5 | 
1250 | 
200 | 
0 | 
0 | 
| T6 | 
873 | 
0 | 
0 | 
0 | 
| T8 | 
51282 | 
0 | 
0 | 
0 | 
| T9 | 
0 | 
506 | 
0 | 
0 | 
| T15 | 
949 | 
0 | 
0 | 
0 | 
| T16 | 
1834 | 
0 | 
0 | 
0 | 
| T17 | 
1845 | 
0 | 
0 | 
0 | 
| T19 | 
0 | 
700 | 
0 | 
0 | 
| T20 | 
1105 | 
0 | 
0 | 
0 | 
| T24 | 
0 | 
750 | 
0 | 
0 | 
| T27 | 
0 | 
2048 | 
0 | 
0 | 
| T28 | 
0 | 
26182 | 
0 | 
0 | 
| T34 | 
0 | 
50 | 
0 | 
0 | 
| T36 | 
0 | 
5050 | 
0 | 
0 | 
| T37 | 
0 | 
55050 | 
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:       T4 T11 T34 
66         1/1                    if (wmask[i]) begin
           Tests:       T4 T11 T34 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T4 T11 T34 
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 | 
T4,T11,T34 | 
| 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 | 
1026 | 
1026 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
332875393 | 
15692973 | 
0 | 
0 | 
| T4 | 
4375 | 
50 | 
0 | 
0 | 
| T5 | 
1250 | 
0 | 
0 | 
0 | 
| T6 | 
873 | 
0 | 
0 | 
0 | 
| T8 | 
51282 | 
0 | 
0 | 
0 | 
| T9 | 
2110 | 
0 | 
0 | 
0 | 
| T10 | 
1263 | 
0 | 
0 | 
0 | 
| T16 | 
1834 | 
0 | 
0 | 
0 | 
| T17 | 
1845 | 
0 | 
0 | 
0 | 
| T19 | 
0 | 
300 | 
0 | 
0 | 
| T20 | 
1105 | 
0 | 
0 | 
0 | 
| T27 | 
0 | 
1024 | 
0 | 
0 | 
| T28 | 
0 | 
1112 | 
0 | 
0 | 
| T34 | 
0 | 
50 | 
0 | 
0 | 
| T36 | 
0 | 
7050 | 
0 | 
0 | 
| T37 | 
0 | 
12750 | 
0 | 
0 | 
| T42 | 
0 | 
256 | 
0 | 
0 | 
| T51 | 
0 | 
5000 | 
0 | 
0 | 
| T59 | 
1169 | 
0 | 
0 | 
0 | 
| T142 | 
0 | 
370 | 
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:       T52 T82 T83 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T32 T80 T89 
66         1/1                    if (wmask[i]) begin
           Tests:       T32 T80 T89 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T32 T80 T89 
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:       T52 T82 T83 
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 | 
T32,T80,T89 | 
| 1 | 
0 | 
Covered | 
T52,T82,T83 | 
| 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 | 
1026 | 
1026 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
332875393 | 
5216556 | 
0 | 
0 | 
| T32 | 
139437 | 
393216 | 
0 | 
0 | 
| T63 | 
35615 | 
0 | 
0 | 
0 | 
| T79 | 
116110 | 
0 | 
0 | 
0 | 
| T80 | 
0 | 
589824 | 
0 | 
0 | 
| T89 | 
0 | 
65536 | 
0 | 
0 | 
| T93 | 
0 | 
393216 | 
0 | 
0 | 
| T152 | 
0 | 
524288 | 
0 | 
0 | 
| T153 | 
0 | 
786432 | 
0 | 
0 | 
| T154 | 
0 | 
556 | 
0 | 
0 | 
| T155 | 
0 | 
524288 | 
0 | 
0 | 
| T156 | 
0 | 
720896 | 
0 | 
0 | 
| T157 | 
0 | 
589824 | 
0 | 
0 | 
| T158 | 
2403 | 
0 | 
0 | 
0 | 
| T159 | 
1253 | 
0 | 
0 | 
0 | 
| T160 | 
157678 | 
0 | 
0 | 
0 | 
| T161 | 
2923 | 
0 | 
0 | 
0 | 
| T162 | 
230752 | 
0 | 
0 | 
0 | 
| T163 | 
2008 | 
0 | 
0 | 
0 | 
| T164 | 
137486 | 
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:       T27 T36 T52 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T36 T84 T85 
66         1/1                    if (wmask[i]) begin
           Tests:       T36 T84 T85 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T36 T84 T85 
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 T36 T52 
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 | 
T36,T84,T85 | 
| 1 | 
0 | 
Covered | 
T27,T36,T52 | 
| 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 | 
1026 | 
1026 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
332875393 | 
5408746 | 
0 | 
0 | 
| T7 | 
0 | 
50 | 
0 | 
0 | 
| T23 | 
1309 | 
0 | 
0 | 
0 | 
| T24 | 
3170 | 
0 | 
0 | 
0 | 
| T28 | 
209634 | 
0 | 
0 | 
0 | 
| T36 | 
30072 | 
600 | 
0 | 
0 | 
| T37 | 
207944 | 
0 | 
0 | 
0 | 
| T40 | 
0 | 
1850 | 
0 | 
0 | 
| T51 | 
64411 | 
0 | 
0 | 
0 | 
| T56 | 
11447 | 
0 | 
0 | 
0 | 
| T57 | 
0 | 
550 | 
0 | 
0 | 
| T58 | 
2280 | 
0 | 
0 | 
0 | 
| T65 | 
1393 | 
0 | 
0 | 
0 | 
| T78 | 
2116 | 
0 | 
0 | 
0 | 
| T84 | 
0 | 
100 | 
0 | 
0 | 
| T85 | 
0 | 
100 | 
0 | 
0 | 
| T103 | 
0 | 
100 | 
0 | 
0 | 
| T165 | 
0 | 
1900 | 
0 | 
0 | 
| T166 | 
0 | 
350 | 
0 | 
0 | 
| T167 | 
0 | 
100 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.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:       T4 T16 T8 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T4 T33 T34 
66         1/1                    if (wmask[i]) begin
           Tests:       T4 T33 T34 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T4 T33 T34 
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:       T4 T16 T8 
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 | 
T4,T33,T34 | 
| 1 | 
0 | 
Covered | 
T4,T16,T8 | 
| 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 | 
1026 | 
1026 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
332875393 | 
47335347 | 
0 | 
0 | 
| T4 | 
4375 | 
150 | 
0 | 
0 | 
| T5 | 
1250 | 
0 | 
0 | 
0 | 
| T6 | 
873 | 
0 | 
0 | 
0 | 
| T8 | 
51282 | 
0 | 
0 | 
0 | 
| T9 | 
2110 | 
0 | 
0 | 
0 | 
| T10 | 
1263 | 
0 | 
0 | 
0 | 
| T16 | 
1834 | 
0 | 
0 | 
0 | 
| T17 | 
1845 | 
0 | 
0 | 
0 | 
| T20 | 
1105 | 
0 | 
0 | 
0 | 
| T24 | 
0 | 
350 | 
0 | 
0 | 
| T27 | 
0 | 
256 | 
0 | 
0 | 
| T28 | 
0 | 
26738 | 
0 | 
0 | 
| T33 | 
0 | 
400 | 
0 | 
0 | 
| T34 | 
0 | 
50 | 
0 | 
0 | 
| T36 | 
0 | 
4650 | 
0 | 
0 | 
| T37 | 
0 | 
91900 | 
0 | 
0 | 
| T51 | 
0 | 
22950 | 
0 | 
0 | 
| T59 | 
1169 | 
0 | 
0 | 
0 | 
| T78 | 
0 | 
300 | 
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 T92 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T28 T92 T94 
66         1/1                    if (wmask[i]) begin
           Tests:       T28 T92 T94 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T28 T92 T94 
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 T92 
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,T92,T94 | 
| 1 | 
0 | 
Covered | 
T27,T28,T92 | 
| 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 | 
1026 | 
1026 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
332875393 | 
6776940 | 
0 | 
0 | 
| T28 | 
209634 | 
1718 | 
0 | 
0 | 
| T32 | 
0 | 
472064 | 
0 | 
0 | 
| T42 | 
116819 | 
0 | 
0 | 
0 | 
| T51 | 
64411 | 
0 | 
0 | 
0 | 
| T56 | 
11447 | 
0 | 
0 | 
0 | 
| T58 | 
2280 | 
0 | 
0 | 
0 | 
| T65 | 
1393 | 
0 | 
0 | 
0 | 
| T73 | 
2390 | 
0 | 
0 | 
0 | 
| T80 | 
0 | 
102400 | 
0 | 
0 | 
| T92 | 
0 | 
556 | 
0 | 
0 | 
| T94 | 
0 | 
1024 | 
0 | 
0 | 
| T95 | 
0 | 
25600 | 
0 | 
0 | 
| T107 | 
6959 | 
0 | 
0 | 
0 | 
| T142 | 
221130 | 
0 | 
0 | 
0 | 
| T168 | 
0 | 
556 | 
0 | 
0 | 
| T169 | 
0 | 
512 | 
0 | 
0 | 
| T170 | 
0 | 
606 | 
0 | 
0 | 
| T171 | 
0 | 
1062 | 
0 | 
0 | 
| T172 | 
1231 | 
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[1].u_info_mem.gen_generic.u_impl_generic
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 6 | 85.71 | 
| CONT_ASSIGN | 42 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 63 | 6 | 6 | 100.00 | 
41                        logic unused_cfg;
42         0/1     ==>    assign unused_cfg = ^cfg_i;
43                      
44                        // Width of internal write mask. Note wmask_i input into the module is always assumed
45                        // to be the full bit mask
46                        localparam int MaskWidth = Width / DataBitsPerMask;
47                      
48                        logic [Width-1:0]     mem [Depth];
49                        logic [MaskWidth-1:0] wmask;
50                      
51                        for (genvar k = 0; k < MaskWidth; k++) begin : gen_wmask
52         unreachable      assign wmask[k] = &wmask_i[k*DataBitsPerMask +: DataBitsPerMask];
53                      
54                          // Ensure that all mask bits within a group have the same value for a write
55                          `ASSERT(MaskCheck_A, req_i && write_i |->
56                              wmask_i[k*DataBitsPerMask +: DataBitsPerMask] inside {{DataBitsPerMask{1'b1}}, '0},
57                              clk_i, '0)
58                        end
59                      
60                        // using always instead of always_ff to avoid 'ICPD  - illegal combination of drivers' error
61                        // thrown when using $readmemh system task to backdoor load an image
62                        always @(posedge clk_i) begin
63         1/1              if (req_i) begin
           Tests:       T1 T2 T3 
64         1/1                if (write_i) begin
           Tests:       T32 T81 T97 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T32 T81 T96 
66         1/1                    if (wmask[i]) begin
           Tests:       T32 T81 T96 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T32 T81 T96 
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:       T97 T173 T89 
73                            end
74                          end
                        MISSING_ELSE
Branch Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[1].u_info_mem.gen_generic.u_impl_generic
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
3 | 
3 | 
100.00 | 
| IF | 
63 | 
3 | 
3 | 
100.00 | 
63             if (req_i) begin
               -1-  
64               if (write_i) begin
                 -2-  
65                 for (int i=0; i < MaskWidth; i = i + 1) begin
                   ==>
66                   if (wmask[i]) begin
67                     mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
68                       wdata_i[i*DataBitsPerMask +: DataBitsPerMask];
69                   end
70                 end
71               end else begin
72                 rdata_o <= mem[addr_i];
                   ==>
73               end
74             end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | Status | Tests | 
| 1 | 
1 | 
Covered | 
T32,T81,T96 | 
| 1 | 
0 | 
Covered | 
T97,T173,T89 | 
| 0 | 
- | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.gen_prim_flash_banks[1].u_prim_flash_bank.gen_info_types[1].u_info_mem.gen_generic.u_impl_generic
Assertion Details
DataBitsPerMaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1026 | 
1026 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
332875393 | 
5661952 | 
0 | 
0 | 
| T32 | 
139437 | 
458752 | 
0 | 
0 | 
| T63 | 
35615 | 
0 | 
0 | 
0 | 
| T79 | 
116110 | 
0 | 
0 | 
0 | 
| T81 | 
0 | 
524288 | 
0 | 
0 | 
| T93 | 
0 | 
327680 | 
0 | 
0 | 
| T96 | 
0 | 
256 | 
0 | 
0 | 
| T153 | 
0 | 
589824 | 
0 | 
0 | 
| T156 | 
0 | 
851968 | 
0 | 
0 | 
| T158 | 
2403 | 
0 | 
0 | 
0 | 
| T159 | 
1253 | 
0 | 
0 | 
0 | 
| T160 | 
157678 | 
0 | 
0 | 
0 | 
| T161 | 
2923 | 
0 | 
0 | 
0 | 
| T162 | 
230752 | 
0 | 
0 | 
0 | 
| T163 | 
2008 | 
0 | 
0 | 
0 | 
| T164 | 
137486 | 
0 | 
0 | 
0 | 
| T174 | 
0 | 
65536 | 
0 | 
0 | 
| T175 | 
0 | 
524288 | 
0 | 
0 | 
| T176 | 
0 | 
589824 | 
0 | 
0 | 
| T177 | 
0 | 
655360 | 
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:       T39 T94 T95 
65         1/1                  for (int i=0; i < MaskWidth; i = i + 1) begin
           Tests:       T39 T95 T32 
66         1/1                    if (wmask[i]) begin
           Tests:       T39 T95 T32 
67         1/1                      mem[addr_i][i*DataBitsPerMask +: DataBitsPerMask] <=
           Tests:       T39 T95 T32 
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:       T39 T94 T95 
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 | 
T39,T95,T32 | 
| 1 | 
0 | 
Covered | 
T39,T94,T95 | 
| 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 | 
1026 | 
1026 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T15 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
gen_wmask[0].MaskCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
332875393 | 
5697514 | 
0 | 
0 | 
| T7 | 
4288 | 
0 | 
0 | 
0 | 
| T21 | 
1002 | 
0 | 
0 | 
0 | 
| T32 | 
0 | 
458752 | 
0 | 
0 | 
| T39 | 
1803 | 
50 | 
0 | 
0 | 
| T81 | 
0 | 
524288 | 
0 | 
0 | 
| T89 | 
0 | 
200 | 
0 | 
0 | 
| T93 | 
0 | 
327980 | 
0 | 
0 | 
| T94 | 
6362 | 
0 | 
0 | 
0 | 
| T95 | 
0 | 
300 | 
0 | 
0 | 
| T106 | 
1493 | 
0 | 
0 | 
0 | 
| T153 | 
0 | 
589824 | 
0 | 
0 | 
| T170 | 
0 | 
606 | 
0 | 
0 | 
| T173 | 
0 | 
150 | 
0 | 
0 | 
| T174 | 
0 | 
65536 | 
0 | 
0 | 
| T178 | 
8202 | 
0 | 
0 | 
0 | 
| T179 | 
63434 | 
0 | 
0 | 
0 | 
| T180 | 
250463 | 
0 | 
0 | 
0 | 
| T181 | 
560 | 
0 | 
0 | 
0 | 
| T182 | 
1727 | 
0 | 
0 | 
0 |