Line Coverage for Module : 
prim_subreg_shadow
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T10 T27 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T10 T27 
106                         end
                        MISSING_ELSE
107                       end
108                     
109                       // The staged register:
110                       // - Holds the 1's complement value.
111                       // - Written in Phase 0.
112                       // - Once storage error occurs, do not allow any further update until reset
113        1/1            assign staged_we = we & ~phase_q & ~err_storage;
           Tests:       T1 T2 T3 
114        unreachable    assign staged_de = de & ~phase_q & ~err_storage;
115                       prim_subreg #(
116                         .DW       ( DW             ),
117                         .SwAccess ( StagedSwAccess ),
118                         .RESVAL   ( ~RESVAL        )
119                       ) staged_reg (
120                         .clk_i    ( clk_i     ),
121                         .rst_ni   ( rst_ni    ),
122                         .we       ( staged_we ),
123                         .wd       ( ~wr_data  ),
124                         .de       ( staged_de ),
125                         .d        ( ~d        ),
126                         .qe       (           ),
127                         .q        ( staged_q  ),
128                         .ds       (           ),
129                         .qs       (           )
130                       );
131                     
132                       // The shadow register:
133                       // - Holds the 1's complement value.
134                       // - Written in Phase 1.
135                       // - Writes are ignored in case of update errors.
136                       // - Gets the value from the staged register.
137                       // - Once storage error occurs, do not allow any further update until reset
138        1/1            assign shadow_we = we & phase_q & ~err_update & ~err_storage;
           Tests:       T1 T2 T3 
139        unreachable    assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140                       prim_subreg #(
141                         .DW       ( DW               ),
142                         .SwAccess ( InvertedSwAccess ),
143                         .RESVAL   ( ~RESVAL          )
144                       ) shadow_reg (
145                         .clk_i    ( clk_i           ),
146                         .rst_ni   ( rst_shadowed_ni ),
147                         .we       ( shadow_we       ),
148                         .wd       ( staged_q        ),
149                         .de       ( shadow_de       ),
150                         .d        ( staged_q        ),
151                         .qe       (                 ),
152                         .q        ( shadow_q        ),
153                         .ds       (                 ),
154                         .qs       (                 )
155                       );
156                     
157                       // The committed register:
158                       // - Written in Phase 1.
159                       // - Writes are ignored in case of update errors.
160        1/1            assign committed_we = shadow_we;
           Tests:       T1 T2 T3 
161        unreachable    assign committed_de = shadow_de;
162                       prim_subreg #(
163                         .DW       ( DW       ),
164                         .SwAccess ( SwAccess ),
165                         .RESVAL   ( RESVAL   )
166                       ) committed_reg (
167                         .clk_i    ( clk_i        ),
168                         .rst_ni   ( rst_ni       ),
169                         .we       ( committed_we ),
170                         .wd       ( wr_data      ),
171                         .de       ( committed_de ),
172                         .d        ( d            ),
173                         .qe       ( committed_qe ),
174                         .q        ( committed_q  ),
175                         .ds       ( ds           ),
176                         .qs       ( committed_qs )
177                       );
178                     
179                       // Output phase for hwext.
180        1/1            assign phase = phase_q;
           Tests:       T1 T2 T3 
181                     
182                       // Error detection - all bits must match.
183        1/1            assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
           Tests:       T1 T2 T3 
184        1/1            assign err_storage = (~shadow_q != committed_q);
           Tests:       T1 T2 T3 
185                     
186                       // Remaining output assignments
187        1/1            assign qe = committed_qe;
           Tests:       T1 T2 T3 
188        1/1            assign q  = committed_q;
           Tests:       T1 T2 T3 
189        1/1            assign qs = committed_qs;
           Tests:       T1 T2 T3 
Cond Coverage for Module : 
prim_subreg_shadow
 | Total | Covered | Percent | 
| Conditions | 26 | 25 | 96.15 | 
| Logical | 26 | 25 | 96.15 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | Covered | T99,T100,T101 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T99,T100,T102 | 
| 1 | 0 | Covered | T2,T10,T27 | 
 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T99,T100,T101 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | Unreachable |  | 
 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | 1 | Covered | T100,T102,T101 | 
| 1 | 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Unreachable |  | 
| 1 | 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | 1 | Unreachable |  | 
 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T100,T102,T101 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T99,T100,T102 | 
Branch Coverage for Module : 
prim_subreg_shadow
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T10,T27 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Module : 
prim_subreg_shadow
Assertion Details
CheckSwAccessIsLegal_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
9900 | 
9900 | 
0 | 
0 | 
| T4 | 
10 | 
10 | 
0 | 
0 | 
| T5 | 
10 | 
10 | 
0 | 
0 | 
| T6 | 
10 | 
10 | 
0 | 
0 | 
| T28 | 
10 | 
10 | 
0 | 
0 | 
| T29 | 
10 | 
10 | 
0 | 
0 | 
| T30 | 
10 | 
10 | 
0 | 
0 | 
| T31 | 
10 | 
10 | 
0 | 
0 | 
| T32 | 
10 | 
10 | 
0 | 
0 | 
| T33 | 
10 | 
10 | 
0 | 
0 | 
| T34 | 
10 | 
10 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
572141768 | 
542060720 | 
0 | 
0 | 
| T4 | 
35784 | 
34718 | 
0 | 
0 | 
| T5 | 
44462 | 
43484 | 
0 | 
0 | 
| T6 | 
50652 | 
49664 | 
0 | 
0 | 
| T28 | 
8300 | 
7444 | 
0 | 
0 | 
| T29 | 
25656 | 
24748 | 
0 | 
0 | 
| T30 | 
31348 | 
30010 | 
0 | 
0 | 
| T31 | 
18574 | 
17898 | 
0 | 
0 | 
| T32 | 
25434 | 
24144 | 
0 | 
0 | 
| T33 | 
39476 | 
38416 | 
0 | 
0 | 
| T34 | 
16778 | 
16260 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T10 T27 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T10 T27 
106                         end
                        MISSING_ELSE
107                       end
108                     
109                       // The staged register:
110                       // - Holds the 1's complement value.
111                       // - Written in Phase 0.
112                       // - Once storage error occurs, do not allow any further update until reset
113        1/1            assign staged_we = we & ~phase_q & ~err_storage;
           Tests:       T1 T2 T3 
114        unreachable    assign staged_de = de & ~phase_q & ~err_storage;
115                       prim_subreg #(
116                         .DW       ( DW             ),
117                         .SwAccess ( StagedSwAccess ),
118                         .RESVAL   ( ~RESVAL        )
119                       ) staged_reg (
120                         .clk_i    ( clk_i     ),
121                         .rst_ni   ( rst_ni    ),
122                         .we       ( staged_we ),
123                         .wd       ( ~wr_data  ),
124                         .de       ( staged_de ),
125                         .d        ( ~d        ),
126                         .qe       (           ),
127                         .q        ( staged_q  ),
128                         .ds       (           ),
129                         .qs       (           )
130                       );
131                     
132                       // The shadow register:
133                       // - Holds the 1's complement value.
134                       // - Written in Phase 1.
135                       // - Writes are ignored in case of update errors.
136                       // - Gets the value from the staged register.
137                       // - Once storage error occurs, do not allow any further update until reset
138        1/1            assign shadow_we = we & phase_q & ~err_update & ~err_storage;
           Tests:       T1 T2 T3 
139        unreachable    assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140                       prim_subreg #(
141                         .DW       ( DW               ),
142                         .SwAccess ( InvertedSwAccess ),
143                         .RESVAL   ( ~RESVAL          )
144                       ) shadow_reg (
145                         .clk_i    ( clk_i           ),
146                         .rst_ni   ( rst_shadowed_ni ),
147                         .we       ( shadow_we       ),
148                         .wd       ( staged_q        ),
149                         .de       ( shadow_de       ),
150                         .d        ( staged_q        ),
151                         .qe       (                 ),
152                         .q        ( shadow_q        ),
153                         .ds       (                 ),
154                         .qs       (                 )
155                       );
156                     
157                       // The committed register:
158                       // - Written in Phase 1.
159                       // - Writes are ignored in case of update errors.
160        1/1            assign committed_we = shadow_we;
           Tests:       T1 T2 T3 
161        unreachable    assign committed_de = shadow_de;
162                       prim_subreg #(
163                         .DW       ( DW       ),
164                         .SwAccess ( SwAccess ),
165                         .RESVAL   ( RESVAL   )
166                       ) committed_reg (
167                         .clk_i    ( clk_i        ),
168                         .rst_ni   ( rst_ni       ),
169                         .we       ( committed_we ),
170                         .wd       ( wr_data      ),
171                         .de       ( committed_de ),
172                         .d        ( d            ),
173                         .qe       ( committed_qe ),
174                         .q        ( committed_q  ),
175                         .ds       ( ds           ),
176                         .qs       ( committed_qs )
177                       );
178                     
179                       // Output phase for hwext.
180        1/1            assign phase = phase_q;
           Tests:       T1 T2 T3 
181                     
182                       // Error detection - all bits must match.
183        1/1            assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
           Tests:       T1 T2 T3 
184        1/1            assign err_storage = (~shadow_q != committed_q);
           Tests:       T1 T2 T3 
185                     
186                       // Remaining output assignments
187        1/1            assign qe = committed_qe;
           Tests:       T1 T2 T3 
188        1/1            assign q  = committed_q;
           Tests:       T1 T2 T3 
189        1/1            assign qs = committed_qs;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
 | Total | Covered | Percent | 
| Conditions | 26 | 25 | 96.15 | 
| Logical | 26 | 25 | 96.15 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | Covered | T100,T101,T103 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T101,T103 | 
| 1 | 0 | Covered | T2,T10,T27 | 
 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T100,T101,T103 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | Unreachable |  | 
 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | 1 | Covered | T103,T104,T105 | 
| 1 | 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Unreachable |  | 
| 1 | 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | 1 | Unreachable |  | 
 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T103,T104,T105 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T100,T101,T103 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T10,T27 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
Assertion Details
CheckSwAccessIsLegal_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
990 | 
990 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
| T34 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
85107854 | 
80023304 | 
0 | 
0 | 
| T4 | 
5279 | 
5090 | 
0 | 
0 | 
| T5 | 
6781 | 
6605 | 
0 | 
0 | 
| T6 | 
7706 | 
7544 | 
0 | 
0 | 
| T28 | 
1279 | 
1131 | 
0 | 
0 | 
| T29 | 
3857 | 
3695 | 
0 | 
0 | 
| T30 | 
4789 | 
4558 | 
0 | 
0 | 
| T31 | 
2808 | 
2687 | 
0 | 
0 | 
| T32 | 
3352 | 
3135 | 
0 | 
0 | 
| T33 | 
6011 | 
5835 | 
0 | 
0 | 
| T34 | 
2479 | 
2385 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T10 T27 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T10 T27 
106                         end
                        MISSING_ELSE
107                       end
108                     
109                       // The staged register:
110                       // - Holds the 1's complement value.
111                       // - Written in Phase 0.
112                       // - Once storage error occurs, do not allow any further update until reset
113        1/1            assign staged_we = we & ~phase_q & ~err_storage;
           Tests:       T1 T2 T3 
114        unreachable    assign staged_de = de & ~phase_q & ~err_storage;
115                       prim_subreg #(
116                         .DW       ( DW             ),
117                         .SwAccess ( StagedSwAccess ),
118                         .RESVAL   ( ~RESVAL        )
119                       ) staged_reg (
120                         .clk_i    ( clk_i     ),
121                         .rst_ni   ( rst_ni    ),
122                         .we       ( staged_we ),
123                         .wd       ( ~wr_data  ),
124                         .de       ( staged_de ),
125                         .d        ( ~d        ),
126                         .qe       (           ),
127                         .q        ( staged_q  ),
128                         .ds       (           ),
129                         .qs       (           )
130                       );
131                     
132                       // The shadow register:
133                       // - Holds the 1's complement value.
134                       // - Written in Phase 1.
135                       // - Writes are ignored in case of update errors.
136                       // - Gets the value from the staged register.
137                       // - Once storage error occurs, do not allow any further update until reset
138        1/1            assign shadow_we = we & phase_q & ~err_update & ~err_storage;
           Tests:       T1 T2 T3 
139        unreachable    assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140                       prim_subreg #(
141                         .DW       ( DW               ),
142                         .SwAccess ( InvertedSwAccess ),
143                         .RESVAL   ( ~RESVAL          )
144                       ) shadow_reg (
145                         .clk_i    ( clk_i           ),
146                         .rst_ni   ( rst_shadowed_ni ),
147                         .we       ( shadow_we       ),
148                         .wd       ( staged_q        ),
149                         .de       ( shadow_de       ),
150                         .d        ( staged_q        ),
151                         .qe       (                 ),
152                         .q        ( shadow_q        ),
153                         .ds       (                 ),
154                         .qs       (                 )
155                       );
156                     
157                       // The committed register:
158                       // - Written in Phase 1.
159                       // - Writes are ignored in case of update errors.
160        1/1            assign committed_we = shadow_we;
           Tests:       T1 T2 T3 
161        unreachable    assign committed_de = shadow_de;
162                       prim_subreg #(
163                         .DW       ( DW       ),
164                         .SwAccess ( SwAccess ),
165                         .RESVAL   ( RESVAL   )
166                       ) committed_reg (
167                         .clk_i    ( clk_i        ),
168                         .rst_ni   ( rst_ni       ),
169                         .we       ( committed_we ),
170                         .wd       ( wr_data      ),
171                         .de       ( committed_de ),
172                         .d        ( d            ),
173                         .qe       ( committed_qe ),
174                         .q        ( committed_q  ),
175                         .ds       ( ds           ),
176                         .qs       ( committed_qs )
177                       );
178                     
179                       // Output phase for hwext.
180        1/1            assign phase = phase_q;
           Tests:       T1 T2 T3 
181                     
182                       // Error detection - all bits must match.
183        1/1            assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
           Tests:       T1 T2 T3 
184        1/1            assign err_storage = (~shadow_q != committed_q);
           Tests:       T1 T2 T3 
185                     
186                       // Remaining output assignments
187        1/1            assign qe = committed_qe;
           Tests:       T1 T2 T3 
188        1/1            assign q  = committed_q;
           Tests:       T1 T2 T3 
189        1/1            assign qs = committed_qs;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
 | Total | Covered | Percent | 
| Conditions | 26 | 25 | 96.15 | 
| Logical | 26 | 25 | 96.15 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | Covered | T100,T103,T104 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T101,T103 | 
| 1 | 0 | Covered | T2,T10,T27 | 
 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T100,T103,T104 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | Unreachable |  | 
 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | 1 | Covered | T100,T103,T104 | 
| 1 | 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Unreachable |  | 
| 1 | 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | 1 | Unreachable |  | 
 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T100,T103,T104 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T100,T101,T103 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T10,T27 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
Assertion Details
CheckSwAccessIsLegal_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
990 | 
990 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
| T34 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
85107854 | 
80023304 | 
0 | 
0 | 
| T4 | 
5279 | 
5090 | 
0 | 
0 | 
| T5 | 
6781 | 
6605 | 
0 | 
0 | 
| T6 | 
7706 | 
7544 | 
0 | 
0 | 
| T28 | 
1279 | 
1131 | 
0 | 
0 | 
| T29 | 
3857 | 
3695 | 
0 | 
0 | 
| T30 | 
4789 | 
4558 | 
0 | 
0 | 
| T31 | 
2808 | 
2687 | 
0 | 
0 | 
| T32 | 
3352 | 
3135 | 
0 | 
0 | 
| T33 | 
6011 | 
5835 | 
0 | 
0 | 
| T34 | 
2479 | 
2385 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T10 T27 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T10 T27 
106                         end
                        MISSING_ELSE
107                       end
108                     
109                       // The staged register:
110                       // - Holds the 1's complement value.
111                       // - Written in Phase 0.
112                       // - Once storage error occurs, do not allow any further update until reset
113        1/1            assign staged_we = we & ~phase_q & ~err_storage;
           Tests:       T1 T2 T3 
114        unreachable    assign staged_de = de & ~phase_q & ~err_storage;
115                       prim_subreg #(
116                         .DW       ( DW             ),
117                         .SwAccess ( StagedSwAccess ),
118                         .RESVAL   ( ~RESVAL        )
119                       ) staged_reg (
120                         .clk_i    ( clk_i     ),
121                         .rst_ni   ( rst_ni    ),
122                         .we       ( staged_we ),
123                         .wd       ( ~wr_data  ),
124                         .de       ( staged_de ),
125                         .d        ( ~d        ),
126                         .qe       (           ),
127                         .q        ( staged_q  ),
128                         .ds       (           ),
129                         .qs       (           )
130                       );
131                     
132                       // The shadow register:
133                       // - Holds the 1's complement value.
134                       // - Written in Phase 1.
135                       // - Writes are ignored in case of update errors.
136                       // - Gets the value from the staged register.
137                       // - Once storage error occurs, do not allow any further update until reset
138        1/1            assign shadow_we = we & phase_q & ~err_update & ~err_storage;
           Tests:       T1 T2 T3 
139        unreachable    assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140                       prim_subreg #(
141                         .DW       ( DW               ),
142                         .SwAccess ( InvertedSwAccess ),
143                         .RESVAL   ( ~RESVAL          )
144                       ) shadow_reg (
145                         .clk_i    ( clk_i           ),
146                         .rst_ni   ( rst_shadowed_ni ),
147                         .we       ( shadow_we       ),
148                         .wd       ( staged_q        ),
149                         .de       ( shadow_de       ),
150                         .d        ( staged_q        ),
151                         .qe       (                 ),
152                         .q        ( shadow_q        ),
153                         .ds       (                 ),
154                         .qs       (                 )
155                       );
156                     
157                       // The committed register:
158                       // - Written in Phase 1.
159                       // - Writes are ignored in case of update errors.
160        1/1            assign committed_we = shadow_we;
           Tests:       T1 T2 T3 
161        unreachable    assign committed_de = shadow_de;
162                       prim_subreg #(
163                         .DW       ( DW       ),
164                         .SwAccess ( SwAccess ),
165                         .RESVAL   ( RESVAL   )
166                       ) committed_reg (
167                         .clk_i    ( clk_i        ),
168                         .rst_ni   ( rst_ni       ),
169                         .we       ( committed_we ),
170                         .wd       ( wr_data      ),
171                         .de       ( committed_de ),
172                         .d        ( d            ),
173                         .qe       ( committed_qe ),
174                         .q        ( committed_q  ),
175                         .ds       ( ds           ),
176                         .qs       ( committed_qs )
177                       );
178                     
179                       // Output phase for hwext.
180        1/1            assign phase = phase_q;
           Tests:       T1 T2 T3 
181                     
182                       // Error detection - all bits must match.
183        1/1            assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
           Tests:       T1 T2 T3 
184        1/1            assign err_storage = (~shadow_q != committed_q);
           Tests:       T1 T2 T3 
185                     
186                       // Remaining output assignments
187        1/1            assign qe = committed_qe;
           Tests:       T1 T2 T3 
188        1/1            assign q  = committed_q;
           Tests:       T1 T2 T3 
189        1/1            assign qs = committed_qs;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
 | Total | Covered | Percent | 
| Conditions | 26 | 25 | 96.15 | 
| Logical | 26 | 25 | 96.15 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | Covered | T100,T103,T104 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T102,T101 | 
| 1 | 0 | Covered | T2,T10,T27 | 
 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T100,T103,T104 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | Unreachable |  | 
 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | 1 | Covered | T101,T106,T107 | 
| 1 | 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Unreachable |  | 
| 1 | 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | 1 | Unreachable |  | 
 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T101,T106,T107 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T100,T102,T101 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T10,T27 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
Assertion Details
CheckSwAccessIsLegal_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
990 | 
990 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
| T34 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
41516524 | 
40224458 | 
0 | 
0 | 
| T4 | 
2982 | 
2948 | 
0 | 
0 | 
| T5 | 
3330 | 
3302 | 
0 | 
0 | 
| T6 | 
3827 | 
3772 | 
0 | 
0 | 
| T28 | 
600 | 
565 | 
0 | 
0 | 
| T29 | 
1875 | 
1847 | 
0 | 
0 | 
| T30 | 
2334 | 
2279 | 
0 | 
0 | 
| T31 | 
1436 | 
1415 | 
0 | 
0 | 
| T32 | 
2798 | 
2736 | 
0 | 
0 | 
| T33 | 
2973 | 
2918 | 
0 | 
0 | 
| T34 | 
1393 | 
1379 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T10 T27 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T10 T27 
106                         end
                        MISSING_ELSE
107                       end
108                     
109                       // The staged register:
110                       // - Holds the 1's complement value.
111                       // - Written in Phase 0.
112                       // - Once storage error occurs, do not allow any further update until reset
113        1/1            assign staged_we = we & ~phase_q & ~err_storage;
           Tests:       T1 T2 T3 
114        unreachable    assign staged_de = de & ~phase_q & ~err_storage;
115                       prim_subreg #(
116                         .DW       ( DW             ),
117                         .SwAccess ( StagedSwAccess ),
118                         .RESVAL   ( ~RESVAL        )
119                       ) staged_reg (
120                         .clk_i    ( clk_i     ),
121                         .rst_ni   ( rst_ni    ),
122                         .we       ( staged_we ),
123                         .wd       ( ~wr_data  ),
124                         .de       ( staged_de ),
125                         .d        ( ~d        ),
126                         .qe       (           ),
127                         .q        ( staged_q  ),
128                         .ds       (           ),
129                         .qs       (           )
130                       );
131                     
132                       // The shadow register:
133                       // - Holds the 1's complement value.
134                       // - Written in Phase 1.
135                       // - Writes are ignored in case of update errors.
136                       // - Gets the value from the staged register.
137                       // - Once storage error occurs, do not allow any further update until reset
138        1/1            assign shadow_we = we & phase_q & ~err_update & ~err_storage;
           Tests:       T1 T2 T3 
139        unreachable    assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140                       prim_subreg #(
141                         .DW       ( DW               ),
142                         .SwAccess ( InvertedSwAccess ),
143                         .RESVAL   ( ~RESVAL          )
144                       ) shadow_reg (
145                         .clk_i    ( clk_i           ),
146                         .rst_ni   ( rst_shadowed_ni ),
147                         .we       ( shadow_we       ),
148                         .wd       ( staged_q        ),
149                         .de       ( shadow_de       ),
150                         .d        ( staged_q        ),
151                         .qe       (                 ),
152                         .q        ( shadow_q        ),
153                         .ds       (                 ),
154                         .qs       (                 )
155                       );
156                     
157                       // The committed register:
158                       // - Written in Phase 1.
159                       // - Writes are ignored in case of update errors.
160        1/1            assign committed_we = shadow_we;
           Tests:       T1 T2 T3 
161        unreachable    assign committed_de = shadow_de;
162                       prim_subreg #(
163                         .DW       ( DW       ),
164                         .SwAccess ( SwAccess ),
165                         .RESVAL   ( RESVAL   )
166                       ) committed_reg (
167                         .clk_i    ( clk_i        ),
168                         .rst_ni   ( rst_ni       ),
169                         .we       ( committed_we ),
170                         .wd       ( wr_data      ),
171                         .de       ( committed_de ),
172                         .d        ( d            ),
173                         .qe       ( committed_qe ),
174                         .q        ( committed_q  ),
175                         .ds       ( ds           ),
176                         .qs       ( committed_qs )
177                       );
178                     
179                       // Output phase for hwext.
180        1/1            assign phase = phase_q;
           Tests:       T1 T2 T3 
181                     
182                       // Error detection - all bits must match.
183        1/1            assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
           Tests:       T1 T2 T3 
184        1/1            assign err_storage = (~shadow_q != committed_q);
           Tests:       T1 T2 T3 
185                     
186                       // Remaining output assignments
187        1/1            assign qe = committed_qe;
           Tests:       T1 T2 T3 
188        1/1            assign q  = committed_q;
           Tests:       T1 T2 T3 
189        1/1            assign qs = committed_qs;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
 | Total | Covered | Percent | 
| Conditions | 26 | 25 | 96.15 | 
| Logical | 26 | 25 | 96.15 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | Covered | T100,T103,T107 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T102,T101 | 
| 1 | 0 | Covered | T2,T10,T27 | 
 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T100,T103,T107 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | Unreachable |  | 
 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | 1 | Covered | T101,T104,T106 | 
| 1 | 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Unreachable |  | 
| 1 | 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | 1 | Unreachable |  | 
 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T101,T104,T106 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T100,T102,T101 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T10,T27 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
Assertion Details
CheckSwAccessIsLegal_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
990 | 
990 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
| T34 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
41516524 | 
40224458 | 
0 | 
0 | 
| T4 | 
2982 | 
2948 | 
0 | 
0 | 
| T5 | 
3330 | 
3302 | 
0 | 
0 | 
| T6 | 
3827 | 
3772 | 
0 | 
0 | 
| T28 | 
600 | 
565 | 
0 | 
0 | 
| T29 | 
1875 | 
1847 | 
0 | 
0 | 
| T30 | 
2334 | 
2279 | 
0 | 
0 | 
| T31 | 
1436 | 
1415 | 
0 | 
0 | 
| T32 | 
2798 | 
2736 | 
0 | 
0 | 
| T33 | 
2973 | 
2918 | 
0 | 
0 | 
| T34 | 
1393 | 
1379 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T10 T27 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T10 T27 
106                         end
                        MISSING_ELSE
107                       end
108                     
109                       // The staged register:
110                       // - Holds the 1's complement value.
111                       // - Written in Phase 0.
112                       // - Once storage error occurs, do not allow any further update until reset
113        1/1            assign staged_we = we & ~phase_q & ~err_storage;
           Tests:       T1 T2 T3 
114        unreachable    assign staged_de = de & ~phase_q & ~err_storage;
115                       prim_subreg #(
116                         .DW       ( DW             ),
117                         .SwAccess ( StagedSwAccess ),
118                         .RESVAL   ( ~RESVAL        )
119                       ) staged_reg (
120                         .clk_i    ( clk_i     ),
121                         .rst_ni   ( rst_ni    ),
122                         .we       ( staged_we ),
123                         .wd       ( ~wr_data  ),
124                         .de       ( staged_de ),
125                         .d        ( ~d        ),
126                         .qe       (           ),
127                         .q        ( staged_q  ),
128                         .ds       (           ),
129                         .qs       (           )
130                       );
131                     
132                       // The shadow register:
133                       // - Holds the 1's complement value.
134                       // - Written in Phase 1.
135                       // - Writes are ignored in case of update errors.
136                       // - Gets the value from the staged register.
137                       // - Once storage error occurs, do not allow any further update until reset
138        1/1            assign shadow_we = we & phase_q & ~err_update & ~err_storage;
           Tests:       T1 T2 T3 
139        unreachable    assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140                       prim_subreg #(
141                         .DW       ( DW               ),
142                         .SwAccess ( InvertedSwAccess ),
143                         .RESVAL   ( ~RESVAL          )
144                       ) shadow_reg (
145                         .clk_i    ( clk_i           ),
146                         .rst_ni   ( rst_shadowed_ni ),
147                         .we       ( shadow_we       ),
148                         .wd       ( staged_q        ),
149                         .de       ( shadow_de       ),
150                         .d        ( staged_q        ),
151                         .qe       (                 ),
152                         .q        ( shadow_q        ),
153                         .ds       (                 ),
154                         .qs       (                 )
155                       );
156                     
157                       // The committed register:
158                       // - Written in Phase 1.
159                       // - Writes are ignored in case of update errors.
160        1/1            assign committed_we = shadow_we;
           Tests:       T1 T2 T3 
161        unreachable    assign committed_de = shadow_de;
162                       prim_subreg #(
163                         .DW       ( DW       ),
164                         .SwAccess ( SwAccess ),
165                         .RESVAL   ( RESVAL   )
166                       ) committed_reg (
167                         .clk_i    ( clk_i        ),
168                         .rst_ni   ( rst_ni       ),
169                         .we       ( committed_we ),
170                         .wd       ( wr_data      ),
171                         .de       ( committed_de ),
172                         .d        ( d            ),
173                         .qe       ( committed_qe ),
174                         .q        ( committed_q  ),
175                         .ds       ( ds           ),
176                         .qs       ( committed_qs )
177                       );
178                     
179                       // Output phase for hwext.
180        1/1            assign phase = phase_q;
           Tests:       T1 T2 T3 
181                     
182                       // Error detection - all bits must match.
183        1/1            assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
           Tests:       T1 T2 T3 
184        1/1            assign err_storage = (~shadow_q != committed_q);
           Tests:       T1 T2 T3 
185                     
186                       // Remaining output assignments
187        1/1            assign qe = committed_qe;
           Tests:       T1 T2 T3 
188        1/1            assign q  = committed_q;
           Tests:       T1 T2 T3 
189        1/1            assign qs = committed_qs;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
 | Total | Covered | Percent | 
| Conditions | 26 | 25 | 96.15 | 
| Logical | 26 | 25 | 96.15 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | Covered | T99,T100,T108 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T99,T100,T102 | 
| 1 | 0 | Covered | T2,T10,T27 | 
 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T99,T100,T108 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | Unreachable |  | 
 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | 1 | Covered | T100,T102,T101 | 
| 1 | 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Unreachable |  | 
| 1 | 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | 1 | Unreachable |  | 
 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T100,T102,T101 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T99,T100,T102 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T10,T27 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
Assertion Details
CheckSwAccessIsLegal_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
990 | 
990 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
| T34 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
20757847 | 
20111914 | 
0 | 
0 | 
| T4 | 
1491 | 
1474 | 
0 | 
0 | 
| T5 | 
1665 | 
1651 | 
0 | 
0 | 
| T6 | 
1913 | 
1886 | 
0 | 
0 | 
| T28 | 
300 | 
283 | 
0 | 
0 | 
| T29 | 
938 | 
924 | 
0 | 
0 | 
| T30 | 
1167 | 
1139 | 
0 | 
0 | 
| T31 | 
716 | 
706 | 
0 | 
0 | 
| T32 | 
1398 | 
1367 | 
0 | 
0 | 
| T33 | 
1486 | 
1458 | 
0 | 
0 | 
| T34 | 
695 | 
688 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T10 T27 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T10 T27 
106                         end
                        MISSING_ELSE
107                       end
108                     
109                       // The staged register:
110                       // - Holds the 1's complement value.
111                       // - Written in Phase 0.
112                       // - Once storage error occurs, do not allow any further update until reset
113        1/1            assign staged_we = we & ~phase_q & ~err_storage;
           Tests:       T1 T2 T3 
114        unreachable    assign staged_de = de & ~phase_q & ~err_storage;
115                       prim_subreg #(
116                         .DW       ( DW             ),
117                         .SwAccess ( StagedSwAccess ),
118                         .RESVAL   ( ~RESVAL        )
119                       ) staged_reg (
120                         .clk_i    ( clk_i     ),
121                         .rst_ni   ( rst_ni    ),
122                         .we       ( staged_we ),
123                         .wd       ( ~wr_data  ),
124                         .de       ( staged_de ),
125                         .d        ( ~d        ),
126                         .qe       (           ),
127                         .q        ( staged_q  ),
128                         .ds       (           ),
129                         .qs       (           )
130                       );
131                     
132                       // The shadow register:
133                       // - Holds the 1's complement value.
134                       // - Written in Phase 1.
135                       // - Writes are ignored in case of update errors.
136                       // - Gets the value from the staged register.
137                       // - Once storage error occurs, do not allow any further update until reset
138        1/1            assign shadow_we = we & phase_q & ~err_update & ~err_storage;
           Tests:       T1 T2 T3 
139        unreachable    assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140                       prim_subreg #(
141                         .DW       ( DW               ),
142                         .SwAccess ( InvertedSwAccess ),
143                         .RESVAL   ( ~RESVAL          )
144                       ) shadow_reg (
145                         .clk_i    ( clk_i           ),
146                         .rst_ni   ( rst_shadowed_ni ),
147                         .we       ( shadow_we       ),
148                         .wd       ( staged_q        ),
149                         .de       ( shadow_de       ),
150                         .d        ( staged_q        ),
151                         .qe       (                 ),
152                         .q        ( shadow_q        ),
153                         .ds       (                 ),
154                         .qs       (                 )
155                       );
156                     
157                       // The committed register:
158                       // - Written in Phase 1.
159                       // - Writes are ignored in case of update errors.
160        1/1            assign committed_we = shadow_we;
           Tests:       T1 T2 T3 
161        unreachable    assign committed_de = shadow_de;
162                       prim_subreg #(
163                         .DW       ( DW       ),
164                         .SwAccess ( SwAccess ),
165                         .RESVAL   ( RESVAL   )
166                       ) committed_reg (
167                         .clk_i    ( clk_i        ),
168                         .rst_ni   ( rst_ni       ),
169                         .we       ( committed_we ),
170                         .wd       ( wr_data      ),
171                         .de       ( committed_de ),
172                         .d        ( d            ),
173                         .qe       ( committed_qe ),
174                         .q        ( committed_q  ),
175                         .ds       ( ds           ),
176                         .qs       ( committed_qs )
177                       );
178                     
179                       // Output phase for hwext.
180        1/1            assign phase = phase_q;
           Tests:       T1 T2 T3 
181                     
182                       // Error detection - all bits must match.
183        1/1            assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
           Tests:       T1 T2 T3 
184        1/1            assign err_storage = (~shadow_q != committed_q);
           Tests:       T1 T2 T3 
185                     
186                       // Remaining output assignments
187        1/1            assign qe = committed_qe;
           Tests:       T1 T2 T3 
188        1/1            assign q  = committed_q;
           Tests:       T1 T2 T3 
189        1/1            assign qs = committed_qs;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
 | Total | Covered | Percent | 
| Conditions | 26 | 25 | 96.15 | 
| Logical | 26 | 25 | 96.15 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | Covered | T99,T100,T105 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T99,T100,T102 | 
| 1 | 0 | Covered | T2,T10,T27 | 
 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T99,T100,T105 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | Unreachable |  | 
 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | 1 | Covered | T100,T102,T101 | 
| 1 | 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Unreachable |  | 
| 1 | 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | 1 | Unreachable |  | 
 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T100,T102,T101 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T99,T100,T102 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T10,T27 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
Assertion Details
CheckSwAccessIsLegal_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
990 | 
990 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
| T34 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
20757847 | 
20111914 | 
0 | 
0 | 
| T4 | 
1491 | 
1474 | 
0 | 
0 | 
| T5 | 
1665 | 
1651 | 
0 | 
0 | 
| T6 | 
1913 | 
1886 | 
0 | 
0 | 
| T28 | 
300 | 
283 | 
0 | 
0 | 
| T29 | 
938 | 
924 | 
0 | 
0 | 
| T30 | 
1167 | 
1139 | 
0 | 
0 | 
| T31 | 
716 | 
706 | 
0 | 
0 | 
| T32 | 
1398 | 
1367 | 
0 | 
0 | 
| T33 | 
1486 | 
1458 | 
0 | 
0 | 
| T34 | 
695 | 
688 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T10 T27 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T10 T27 
106                         end
                        MISSING_ELSE
107                       end
108                     
109                       // The staged register:
110                       // - Holds the 1's complement value.
111                       // - Written in Phase 0.
112                       // - Once storage error occurs, do not allow any further update until reset
113        1/1            assign staged_we = we & ~phase_q & ~err_storage;
           Tests:       T1 T2 T3 
114        unreachable    assign staged_de = de & ~phase_q & ~err_storage;
115                       prim_subreg #(
116                         .DW       ( DW             ),
117                         .SwAccess ( StagedSwAccess ),
118                         .RESVAL   ( ~RESVAL        )
119                       ) staged_reg (
120                         .clk_i    ( clk_i     ),
121                         .rst_ni   ( rst_ni    ),
122                         .we       ( staged_we ),
123                         .wd       ( ~wr_data  ),
124                         .de       ( staged_de ),
125                         .d        ( ~d        ),
126                         .qe       (           ),
127                         .q        ( staged_q  ),
128                         .ds       (           ),
129                         .qs       (           )
130                       );
131                     
132                       // The shadow register:
133                       // - Holds the 1's complement value.
134                       // - Written in Phase 1.
135                       // - Writes are ignored in case of update errors.
136                       // - Gets the value from the staged register.
137                       // - Once storage error occurs, do not allow any further update until reset
138        1/1            assign shadow_we = we & phase_q & ~err_update & ~err_storage;
           Tests:       T1 T2 T3 
139        unreachable    assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140                       prim_subreg #(
141                         .DW       ( DW               ),
142                         .SwAccess ( InvertedSwAccess ),
143                         .RESVAL   ( ~RESVAL          )
144                       ) shadow_reg (
145                         .clk_i    ( clk_i           ),
146                         .rst_ni   ( rst_shadowed_ni ),
147                         .we       ( shadow_we       ),
148                         .wd       ( staged_q        ),
149                         .de       ( shadow_de       ),
150                         .d        ( staged_q        ),
151                         .qe       (                 ),
152                         .q        ( shadow_q        ),
153                         .ds       (                 ),
154                         .qs       (                 )
155                       );
156                     
157                       // The committed register:
158                       // - Written in Phase 1.
159                       // - Writes are ignored in case of update errors.
160        1/1            assign committed_we = shadow_we;
           Tests:       T1 T2 T3 
161        unreachable    assign committed_de = shadow_de;
162                       prim_subreg #(
163                         .DW       ( DW       ),
164                         .SwAccess ( SwAccess ),
165                         .RESVAL   ( RESVAL   )
166                       ) committed_reg (
167                         .clk_i    ( clk_i        ),
168                         .rst_ni   ( rst_ni       ),
169                         .we       ( committed_we ),
170                         .wd       ( wr_data      ),
171                         .de       ( committed_de ),
172                         .d        ( d            ),
173                         .qe       ( committed_qe ),
174                         .q        ( committed_q  ),
175                         .ds       ( ds           ),
176                         .qs       ( committed_qs )
177                       );
178                     
179                       // Output phase for hwext.
180        1/1            assign phase = phase_q;
           Tests:       T1 T2 T3 
181                     
182                       // Error detection - all bits must match.
183        1/1            assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
           Tests:       T1 T2 T3 
184        1/1            assign err_storage = (~shadow_q != committed_q);
           Tests:       T1 T2 T3 
185                     
186                       // Remaining output assignments
187        1/1            assign qe = committed_qe;
           Tests:       T1 T2 T3 
188        1/1            assign q  = committed_q;
           Tests:       T1 T2 T3 
189        1/1            assign qs = committed_qs;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
 | Total | Covered | Percent | 
| Conditions | 26 | 25 | 96.15 | 
| Logical | 26 | 25 | 96.15 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | Covered | T104,T105,T106 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T102,T101,T103 | 
| 1 | 0 | Covered | T2,T10,T27 | 
 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T104,T105,T106 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | Unreachable |  | 
 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | 1 | Covered | T101,T103,T104 | 
| 1 | 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Unreachable |  | 
| 1 | 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | 1 | Unreachable |  | 
 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T101,T103,T104 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T102,T101,T103 | 
Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T10,T27 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
Assertion Details
CheckSwAccessIsLegal_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
990 | 
990 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
| T34 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
93713926 | 
88303698 | 
0 | 
0 | 
| T4 | 
5500 | 
5302 | 
0 | 
0 | 
| T5 | 
7064 | 
6881 | 
0 | 
0 | 
| T6 | 
8027 | 
7858 | 
0 | 
0 | 
| T28 | 
1332 | 
1178 | 
0 | 
0 | 
| T29 | 
4210 | 
4041 | 
0 | 
0 | 
| T30 | 
4989 | 
4749 | 
0 | 
0 | 
| T31 | 
2924 | 
2798 | 
0 | 
0 | 
| T32 | 
3492 | 
3266 | 
0 | 
0 | 
| T33 | 
6262 | 
6079 | 
0 | 
0 | 
| T34 | 
2582 | 
2485 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T10 T27 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T10 T27 
106                         end
                        MISSING_ELSE
107                       end
108                     
109                       // The staged register:
110                       // - Holds the 1's complement value.
111                       // - Written in Phase 0.
112                       // - Once storage error occurs, do not allow any further update until reset
113        1/1            assign staged_we = we & ~phase_q & ~err_storage;
           Tests:       T1 T2 T3 
114        unreachable    assign staged_de = de & ~phase_q & ~err_storage;
115                       prim_subreg #(
116                         .DW       ( DW             ),
117                         .SwAccess ( StagedSwAccess ),
118                         .RESVAL   ( ~RESVAL        )
119                       ) staged_reg (
120                         .clk_i    ( clk_i     ),
121                         .rst_ni   ( rst_ni    ),
122                         .we       ( staged_we ),
123                         .wd       ( ~wr_data  ),
124                         .de       ( staged_de ),
125                         .d        ( ~d        ),
126                         .qe       (           ),
127                         .q        ( staged_q  ),
128                         .ds       (           ),
129                         .qs       (           )
130                       );
131                     
132                       // The shadow register:
133                       // - Holds the 1's complement value.
134                       // - Written in Phase 1.
135                       // - Writes are ignored in case of update errors.
136                       // - Gets the value from the staged register.
137                       // - Once storage error occurs, do not allow any further update until reset
138        1/1            assign shadow_we = we & phase_q & ~err_update & ~err_storage;
           Tests:       T1 T2 T3 
139        unreachable    assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140                       prim_subreg #(
141                         .DW       ( DW               ),
142                         .SwAccess ( InvertedSwAccess ),
143                         .RESVAL   ( ~RESVAL          )
144                       ) shadow_reg (
145                         .clk_i    ( clk_i           ),
146                         .rst_ni   ( rst_shadowed_ni ),
147                         .we       ( shadow_we       ),
148                         .wd       ( staged_q        ),
149                         .de       ( shadow_de       ),
150                         .d        ( staged_q        ),
151                         .qe       (                 ),
152                         .q        ( shadow_q        ),
153                         .ds       (                 ),
154                         .qs       (                 )
155                       );
156                     
157                       // The committed register:
158                       // - Written in Phase 1.
159                       // - Writes are ignored in case of update errors.
160        1/1            assign committed_we = shadow_we;
           Tests:       T1 T2 T3 
161        unreachable    assign committed_de = shadow_de;
162                       prim_subreg #(
163                         .DW       ( DW       ),
164                         .SwAccess ( SwAccess ),
165                         .RESVAL   ( RESVAL   )
166                       ) committed_reg (
167                         .clk_i    ( clk_i        ),
168                         .rst_ni   ( rst_ni       ),
169                         .we       ( committed_we ),
170                         .wd       ( wr_data      ),
171                         .de       ( committed_de ),
172                         .d        ( d            ),
173                         .qe       ( committed_qe ),
174                         .q        ( committed_q  ),
175                         .ds       ( ds           ),
176                         .qs       ( committed_qs )
177                       );
178                     
179                       // Output phase for hwext.
180        1/1            assign phase = phase_q;
           Tests:       T1 T2 T3 
181                     
182                       // Error detection - all bits must match.
183        1/1            assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
           Tests:       T1 T2 T3 
184        1/1            assign err_storage = (~shadow_q != committed_q);
           Tests:       T1 T2 T3 
185                     
186                       // Remaining output assignments
187        1/1            assign qe = committed_qe;
           Tests:       T1 T2 T3 
188        1/1            assign q  = committed_q;
           Tests:       T1 T2 T3 
189        1/1            assign qs = committed_qs;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
 | Total | Covered | Percent | 
| Conditions | 26 | 25 | 96.15 | 
| Logical | 26 | 25 | 96.15 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | Covered | T104,T105,T106 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T102,T101,T103 | 
| 1 | 0 | Covered | T2,T10,T27 | 
 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T104,T105,T106 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | Unreachable |  | 
 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | 1 | Covered | T101,T103,T104 | 
| 1 | 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Unreachable |  | 
| 1 | 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | 1 | Unreachable |  | 
 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T101,T103,T104 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T102,T101,T103 | 
Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T10,T27 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
Assertion Details
CheckSwAccessIsLegal_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
990 | 
990 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
| T34 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
93713926 | 
88303698 | 
0 | 
0 | 
| T4 | 
5500 | 
5302 | 
0 | 
0 | 
| T5 | 
7064 | 
6881 | 
0 | 
0 | 
| T6 | 
8027 | 
7858 | 
0 | 
0 | 
| T28 | 
1332 | 
1178 | 
0 | 
0 | 
| T29 | 
4210 | 
4041 | 
0 | 
0 | 
| T30 | 
4989 | 
4749 | 
0 | 
0 | 
| T31 | 
2924 | 
2798 | 
0 | 
0 | 
| T32 | 
3492 | 
3266 | 
0 | 
0 | 
| T33 | 
6262 | 
6079 | 
0 | 
0 | 
| T34 | 
2582 | 
2485 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T10 T27 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T10 T27 
106                         end
                        MISSING_ELSE
107                       end
108                     
109                       // The staged register:
110                       // - Holds the 1's complement value.
111                       // - Written in Phase 0.
112                       // - Once storage error occurs, do not allow any further update until reset
113        1/1            assign staged_we = we & ~phase_q & ~err_storage;
           Tests:       T1 T2 T3 
114        unreachable    assign staged_de = de & ~phase_q & ~err_storage;
115                       prim_subreg #(
116                         .DW       ( DW             ),
117                         .SwAccess ( StagedSwAccess ),
118                         .RESVAL   ( ~RESVAL        )
119                       ) staged_reg (
120                         .clk_i    ( clk_i     ),
121                         .rst_ni   ( rst_ni    ),
122                         .we       ( staged_we ),
123                         .wd       ( ~wr_data  ),
124                         .de       ( staged_de ),
125                         .d        ( ~d        ),
126                         .qe       (           ),
127                         .q        ( staged_q  ),
128                         .ds       (           ),
129                         .qs       (           )
130                       );
131                     
132                       // The shadow register:
133                       // - Holds the 1's complement value.
134                       // - Written in Phase 1.
135                       // - Writes are ignored in case of update errors.
136                       // - Gets the value from the staged register.
137                       // - Once storage error occurs, do not allow any further update until reset
138        1/1            assign shadow_we = we & phase_q & ~err_update & ~err_storage;
           Tests:       T1 T2 T3 
139        unreachable    assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140                       prim_subreg #(
141                         .DW       ( DW               ),
142                         .SwAccess ( InvertedSwAccess ),
143                         .RESVAL   ( ~RESVAL          )
144                       ) shadow_reg (
145                         .clk_i    ( clk_i           ),
146                         .rst_ni   ( rst_shadowed_ni ),
147                         .we       ( shadow_we       ),
148                         .wd       ( staged_q        ),
149                         .de       ( shadow_de       ),
150                         .d        ( staged_q        ),
151                         .qe       (                 ),
152                         .q        ( shadow_q        ),
153                         .ds       (                 ),
154                         .qs       (                 )
155                       );
156                     
157                       // The committed register:
158                       // - Written in Phase 1.
159                       // - Writes are ignored in case of update errors.
160        1/1            assign committed_we = shadow_we;
           Tests:       T1 T2 T3 
161        unreachable    assign committed_de = shadow_de;
162                       prim_subreg #(
163                         .DW       ( DW       ),
164                         .SwAccess ( SwAccess ),
165                         .RESVAL   ( RESVAL   )
166                       ) committed_reg (
167                         .clk_i    ( clk_i        ),
168                         .rst_ni   ( rst_ni       ),
169                         .we       ( committed_we ),
170                         .wd       ( wr_data      ),
171                         .de       ( committed_de ),
172                         .d        ( d            ),
173                         .qe       ( committed_qe ),
174                         .q        ( committed_q  ),
175                         .ds       ( ds           ),
176                         .qs       ( committed_qs )
177                       );
178                     
179                       // Output phase for hwext.
180        1/1            assign phase = phase_q;
           Tests:       T1 T2 T3 
181                     
182                       // Error detection - all bits must match.
183        1/1            assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
           Tests:       T1 T2 T3 
184        1/1            assign err_storage = (~shadow_q != committed_q);
           Tests:       T1 T2 T3 
185                     
186                       // Remaining output assignments
187        1/1            assign qe = committed_qe;
           Tests:       T1 T2 T3 
188        1/1            assign q  = committed_q;
           Tests:       T1 T2 T3 
189        1/1            assign qs = committed_qs;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
 | Total | Covered | Percent | 
| Conditions | 26 | 25 | 96.15 | 
| Logical | 26 | 25 | 96.15 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | Covered | T100,T101,T104 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T102,T101 | 
| 1 | 0 | Covered | T2,T10,T27 | 
 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T100,T101,T104 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | Unreachable |  | 
 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | 1 | Covered | T102,T104,T105 | 
| 1 | 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Unreachable |  | 
| 1 | 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | 1 | Unreachable |  | 
 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T102,T104,T105 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T100,T102,T101 | 
Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T10,T27 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
Assertion Details
CheckSwAccessIsLegal_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
990 | 
990 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
| T34 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
44974733 | 
42366986 | 
0 | 
0 | 
| T4 | 
2640 | 
2545 | 
0 | 
0 | 
| T5 | 
3391 | 
3303 | 
0 | 
0 | 
| T6 | 
3853 | 
3772 | 
0 | 
0 | 
| T28 | 
639 | 
565 | 
0 | 
0 | 
| T29 | 
1948 | 
1867 | 
0 | 
0 | 
| T30 | 
2395 | 
2280 | 
0 | 
0 | 
| T31 | 
1403 | 
1343 | 
0 | 
0 | 
| T32 | 
1677 | 
1568 | 
0 | 
0 | 
| T33 | 
3006 | 
2918 | 
0 | 
0 | 
| T34 | 
1240 | 
1193 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T10 T27 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T10 T27 
106                         end
                        MISSING_ELSE
107                       end
108                     
109                       // The staged register:
110                       // - Holds the 1's complement value.
111                       // - Written in Phase 0.
112                       // - Once storage error occurs, do not allow any further update until reset
113        1/1            assign staged_we = we & ~phase_q & ~err_storage;
           Tests:       T1 T2 T3 
114        unreachable    assign staged_de = de & ~phase_q & ~err_storage;
115                       prim_subreg #(
116                         .DW       ( DW             ),
117                         .SwAccess ( StagedSwAccess ),
118                         .RESVAL   ( ~RESVAL        )
119                       ) staged_reg (
120                         .clk_i    ( clk_i     ),
121                         .rst_ni   ( rst_ni    ),
122                         .we       ( staged_we ),
123                         .wd       ( ~wr_data  ),
124                         .de       ( staged_de ),
125                         .d        ( ~d        ),
126                         .qe       (           ),
127                         .q        ( staged_q  ),
128                         .ds       (           ),
129                         .qs       (           )
130                       );
131                     
132                       // The shadow register:
133                       // - Holds the 1's complement value.
134                       // - Written in Phase 1.
135                       // - Writes are ignored in case of update errors.
136                       // - Gets the value from the staged register.
137                       // - Once storage error occurs, do not allow any further update until reset
138        1/1            assign shadow_we = we & phase_q & ~err_update & ~err_storage;
           Tests:       T1 T2 T3 
139        unreachable    assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140                       prim_subreg #(
141                         .DW       ( DW               ),
142                         .SwAccess ( InvertedSwAccess ),
143                         .RESVAL   ( ~RESVAL          )
144                       ) shadow_reg (
145                         .clk_i    ( clk_i           ),
146                         .rst_ni   ( rst_shadowed_ni ),
147                         .we       ( shadow_we       ),
148                         .wd       ( staged_q        ),
149                         .de       ( shadow_de       ),
150                         .d        ( staged_q        ),
151                         .qe       (                 ),
152                         .q        ( shadow_q        ),
153                         .ds       (                 ),
154                         .qs       (                 )
155                       );
156                     
157                       // The committed register:
158                       // - Written in Phase 1.
159                       // - Writes are ignored in case of update errors.
160        1/1            assign committed_we = shadow_we;
           Tests:       T1 T2 T3 
161        unreachable    assign committed_de = shadow_de;
162                       prim_subreg #(
163                         .DW       ( DW       ),
164                         .SwAccess ( SwAccess ),
165                         .RESVAL   ( RESVAL   )
166                       ) committed_reg (
167                         .clk_i    ( clk_i        ),
168                         .rst_ni   ( rst_ni       ),
169                         .we       ( committed_we ),
170                         .wd       ( wr_data      ),
171                         .de       ( committed_de ),
172                         .d        ( d            ),
173                         .qe       ( committed_qe ),
174                         .q        ( committed_q  ),
175                         .ds       ( ds           ),
176                         .qs       ( committed_qs )
177                       );
178                     
179                       // Output phase for hwext.
180        1/1            assign phase = phase_q;
           Tests:       T1 T2 T3 
181                     
182                       // Error detection - all bits must match.
183        1/1            assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
           Tests:       T1 T2 T3 
184        1/1            assign err_storage = (~shadow_q != committed_q);
           Tests:       T1 T2 T3 
185                     
186                       // Remaining output assignments
187        1/1            assign qe = committed_qe;
           Tests:       T1 T2 T3 
188        1/1            assign q  = committed_q;
           Tests:       T1 T2 T3 
189        1/1            assign qs = committed_qs;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
 | Total | Covered | Percent | 
| Conditions | 26 | 25 | 96.15 | 
| Logical | 26 | 25 | 96.15 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | Covered | T101,T104,T105 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T102,T101 | 
| 1 | 0 | Covered | T2,T10,T27 | 
 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T101,T104,T105 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T4,T5,T6 | 
| 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | Unreachable |  | 
 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | 1 | Covered | T100,T102,T103 | 
| 1 | 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
| -1- | -2- | -3- | -4- | Status | Tests |                       
| 0 | 1 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | 1 | Unreachable |  | 
| 1 | 1 | 0 | 1 | Unreachable |  | 
| 1 | 1 | 1 | 0 | Unreachable |  | 
| 1 | 1 | 1 | 1 | Unreachable |  | 
 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T4,T5,T6 | 
 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T100,T102,T103 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T100,T102,T101 | 
Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T10,T27 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
Assertion Details
CheckSwAccessIsLegal_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
990 | 
990 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
| T34 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
44974733 | 
42366986 | 
0 | 
0 | 
| T4 | 
2640 | 
2545 | 
0 | 
0 | 
| T5 | 
3391 | 
3303 | 
0 | 
0 | 
| T6 | 
3853 | 
3772 | 
0 | 
0 | 
| T28 | 
639 | 
565 | 
0 | 
0 | 
| T29 | 
1948 | 
1867 | 
0 | 
0 | 
| T30 | 
2395 | 
2280 | 
0 | 
0 | 
| T31 | 
1403 | 
1343 | 
0 | 
0 | 
| T32 | 
1677 | 
1568 | 
0 | 
0 | 
| T33 | 
3006 | 
2918 | 
0 | 
0 | 
| T34 | 
1240 | 
1193 | 
0 | 
0 |