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:       T3 T7 T39 
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:       T3 T7 T39 
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 | T64,T65,T66 | 
| 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 | T64,T65,T66 | 
| 1 | 0 | Covered | T3,T7,T39 | 
 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 | T64,T65,T66 | 
| 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 | T64,T65,T66 | 
| 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 | T64,T65,T66 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T64,T65,T66 | 
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 | 
T3,T7,T39 | 
| 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 | 
10090 | 
10090 | 
0 | 
0 | 
| T1 | 
10 | 
10 | 
0 | 
0 | 
| T4 | 
10 | 
10 | 
0 | 
0 | 
| T5 | 
10 | 
10 | 
0 | 
0 | 
| T6 | 
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 | 
532844550 | 
504670014 | 
0 | 
0 | 
| T1 | 
123442 | 
122174 | 
0 | 
0 | 
| T4 | 
33074 | 
31646 | 
0 | 
0 | 
| T5 | 
26616 | 
25556 | 
0 | 
0 | 
| T6 | 
16732 | 
15714 | 
0 | 
0 | 
| T29 | 
20698 | 
19388 | 
0 | 
0 | 
| T30 | 
13410 | 
12752 | 
0 | 
0 | 
| T31 | 
59300 | 
58212 | 
0 | 
0 | 
| T32 | 
7468 | 
6882 | 
0 | 
0 | 
| T33 | 
12428 | 
11432 | 
0 | 
0 | 
| T34 | 
24062 | 
22888 | 
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:       T3 T7 T39 
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:       T3 T7 T39 
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 | T66,T67,T68 | 
| 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 | T65,T66,T67 | 
| 1 | 0 | Covered | T3,T7,T39 | 
 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 | T66,T67,T68 | 
| 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 | T65,T66,T68 | 
| 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 | T65,T66,T68 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T65,T66,T67 | 
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 | 
T3,T7,T39 | 
| 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 | 
1009 | 
1009 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
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 | 
79169317 | 
74398494 | 
0 | 
0 | 
| T1 | 
18775 | 
18558 | 
0 | 
0 | 
| T4 | 
5051 | 
4807 | 
0 | 
0 | 
| T5 | 
3950 | 
3774 | 
0 | 
0 | 
| T6 | 
2563 | 
2387 | 
0 | 
0 | 
| T29 | 
3162 | 
2945 | 
0 | 
0 | 
| T30 | 
1995 | 
1874 | 
0 | 
0 | 
| T31 | 
9032 | 
8842 | 
0 | 
0 | 
| T32 | 
1152 | 
1045 | 
0 | 
0 | 
| T33 | 
1604 | 
1428 | 
0 | 
0 | 
| T34 | 
3611 | 
3408 | 
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:       T3 T7 T39 
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:       T3 T7 T39 
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 | T66,T67,T68 | 
| 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 | T65,T66,T67 | 
| 1 | 0 | Covered | T3,T7,T39 | 
 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 | T66,T67,T68 | 
| 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 | T65,T66,T68 | 
| 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 | T65,T66,T68 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T65,T66,T67 | 
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 | 
T3,T7,T39 | 
| 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 | 
1009 | 
1009 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
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 | 
79169317 | 
74398494 | 
0 | 
0 | 
| T1 | 
18775 | 
18558 | 
0 | 
0 | 
| T4 | 
5051 | 
4807 | 
0 | 
0 | 
| T5 | 
3950 | 
3774 | 
0 | 
0 | 
| T6 | 
2563 | 
2387 | 
0 | 
0 | 
| T29 | 
3162 | 
2945 | 
0 | 
0 | 
| T30 | 
1995 | 
1874 | 
0 | 
0 | 
| T31 | 
9032 | 
8842 | 
0 | 
0 | 
| T32 | 
1152 | 
1045 | 
0 | 
0 | 
| T33 | 
1604 | 
1428 | 
0 | 
0 | 
| T34 | 
3611 | 
3408 | 
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:       T3 T7 T39 
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:       T3 T7 T39 
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 | T64,T69,T70 | 
| 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 | T64,T65,T66 | 
| 1 | 0 | Covered | T3,T7,T39 | 
 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 | T64,T69,T70 | 
| 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 | T65,T66,T69 | 
| 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 | T65,T66,T69 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T64,T65,T66 | 
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 | 
T3,T7,T39 | 
| 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 | 
1009 | 
1009 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
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 | 
38590100 | 
37387991 | 
0 | 
0 | 
| T1 | 
9334 | 
9279 | 
0 | 
0 | 
| T4 | 
2465 | 
2403 | 
0 | 
0 | 
| T5 | 
2180 | 
2125 | 
0 | 
0 | 
| T6 | 
1235 | 
1194 | 
0 | 
0 | 
| T29 | 
1541 | 
1472 | 
0 | 
0 | 
| T30 | 
951 | 
937 | 
0 | 
0 | 
| T31 | 
4462 | 
4421 | 
0 | 
0 | 
| T32 | 
537 | 
523 | 
0 | 
0 | 
| T33 | 
1426 | 
1391 | 
0 | 
0 | 
| T34 | 
1902 | 
1854 | 
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:       T3 T7 T39 
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:       T3 T7 T39 
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 | T64,T69,T70 | 
| 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 | T64,T65,T66 | 
| 1 | 0 | Covered | T3,T7,T39 | 
 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 | T64,T69,T70 | 
| 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 | T65,T66,T69 | 
| 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 | T65,T66,T69 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T64,T65,T66 | 
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 | 
T3,T7,T39 | 
| 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 | 
1009 | 
1009 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
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 | 
38590100 | 
37387991 | 
0 | 
0 | 
| T1 | 
9334 | 
9279 | 
0 | 
0 | 
| T4 | 
2465 | 
2403 | 
0 | 
0 | 
| T5 | 
2180 | 
2125 | 
0 | 
0 | 
| T6 | 
1235 | 
1194 | 
0 | 
0 | 
| T29 | 
1541 | 
1472 | 
0 | 
0 | 
| T30 | 
951 | 
937 | 
0 | 
0 | 
| T31 | 
4462 | 
4421 | 
0 | 
0 | 
| T32 | 
537 | 
523 | 
0 | 
0 | 
| T33 | 
1426 | 
1391 | 
0 | 
0 | 
| T34 | 
1902 | 
1854 | 
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:       T3 T7 T39 
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:       T3 T7 T39 
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 | T66,T68,T70 | 
| 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 | T64,T65,T66 | 
| 1 | 0 | Covered | T3,T7,T39 | 
 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 | T66,T68,T70 | 
| 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 | T64,T66,T68 | 
| 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 | T64,T66,T68 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T64,T65,T66 | 
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 | 
T3,T7,T39 | 
| 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 | 
1009 | 
1009 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
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 | 
19294625 | 
18693693 | 
0 | 
0 | 
| T1 | 
4667 | 
4639 | 
0 | 
0 | 
| T4 | 
1233 | 
1202 | 
0 | 
0 | 
| T5 | 
1089 | 
1061 | 
0 | 
0 | 
| T6 | 
617 | 
596 | 
0 | 
0 | 
| T29 | 
771 | 
737 | 
0 | 
0 | 
| T30 | 
476 | 
469 | 
0 | 
0 | 
| T31 | 
2231 | 
2210 | 
0 | 
0 | 
| T32 | 
268 | 
261 | 
0 | 
0 | 
| T33 | 
713 | 
696 | 
0 | 
0 | 
| T34 | 
951 | 
927 | 
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:       T3 T7 T39 
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:       T3 T7 T39 
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 | T66,T67,T68 | 
| 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 | T64,T65,T66 | 
| 1 | 0 | Covered | T3,T7,T39 | 
 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 | T66,T67,T68 | 
| 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 | T64,T66,T68 | 
| 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 | T64,T66,T68 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T64,T65,T66 | 
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 | 
T3,T7,T39 | 
| 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 | 
1009 | 
1009 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
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 | 
19294625 | 
18693693 | 
0 | 
0 | 
| T1 | 
4667 | 
4639 | 
0 | 
0 | 
| T4 | 
1233 | 
1202 | 
0 | 
0 | 
| T5 | 
1089 | 
1061 | 
0 | 
0 | 
| T6 | 
617 | 
596 | 
0 | 
0 | 
| T29 | 
771 | 
737 | 
0 | 
0 | 
| T30 | 
476 | 
469 | 
0 | 
0 | 
| T31 | 
2231 | 
2210 | 
0 | 
0 | 
| T32 | 
268 | 
261 | 
0 | 
0 | 
| T33 | 
713 | 
696 | 
0 | 
0 | 
| T34 | 
951 | 
927 | 
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:       T3 T7 T39 
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:       T3 T7 T39 
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 | T65,T67,T68 | 
| 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 | T64,T65,T67 | 
| 1 | 0 | Covered | T3,T7,T39 | 
 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 | T65,T67,T68 | 
| 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 | T64,T65,T67 | 
| 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 | T64,T65,T67 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T64,T65,T67 | 
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 | 
T3,T7,T39 | 
| 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 | 
1009 | 
1009 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
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 | 
87383546 | 
82304443 | 
0 | 
0 | 
| T1 | 
19558 | 
19332 | 
0 | 
0 | 
| T4 | 
5262 | 
5007 | 
0 | 
0 | 
| T5 | 
4114 | 
3931 | 
0 | 
0 | 
| T6 | 
2670 | 
2487 | 
0 | 
0 | 
| T29 | 
3294 | 
3068 | 
0 | 
0 | 
| T30 | 
2218 | 
2091 | 
0 | 
0 | 
| T31 | 
9409 | 
9212 | 
0 | 
0 | 
| T32 | 
1201 | 
1089 | 
0 | 
0 | 
| T33 | 
1670 | 
1487 | 
0 | 
0 | 
| T34 | 
3762 | 
3551 | 
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:       T3 T7 T39 
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:       T3 T7 T39 
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 | T64,T65,T67 | 
| 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 | T64,T65,T67 | 
| 1 | 0 | Covered | T3,T7,T39 | 
 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 | T64,T65,T67 | 
| 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 | T65,T67,T68 | 
| 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 | T65,T67,T68 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T64,T65,T67 | 
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 | 
T3,T7,T39 | 
| 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 | 
1009 | 
1009 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
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 | 
87383546 | 
82304443 | 
0 | 
0 | 
| T1 | 
19558 | 
19332 | 
0 | 
0 | 
| T4 | 
5262 | 
5007 | 
0 | 
0 | 
| T5 | 
4114 | 
3931 | 
0 | 
0 | 
| T6 | 
2670 | 
2487 | 
0 | 
0 | 
| T29 | 
3294 | 
3068 | 
0 | 
0 | 
| T30 | 
2218 | 
2091 | 
0 | 
0 | 
| T31 | 
9409 | 
9212 | 
0 | 
0 | 
| T32 | 
1201 | 
1089 | 
0 | 
0 | 
| T33 | 
1670 | 
1487 | 
0 | 
0 | 
| T34 | 
3762 | 
3551 | 
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:       T3 T7 T39 
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:       T3 T7 T39 
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 | T64,T65,T71 | 
| 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 | T64,T65,T66 | 
| 1 | 0 | Covered | T3,T7,T39 | 
 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 | T64,T65,T71 | 
| 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 | T67,T68,T72 | 
| 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 | T67,T68,T72 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T64,T65,T66 | 
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 | 
T3,T7,T39 | 
| 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 | 
1009 | 
1009 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
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 | 
41984687 | 
39550386 | 
0 | 
0 | 
| T1 | 
9387 | 
9279 | 
0 | 
0 | 
| T4 | 
2526 | 
2404 | 
0 | 
0 | 
| T5 | 
1975 | 
1887 | 
0 | 
0 | 
| T6 | 
1281 | 
1193 | 
0 | 
0 | 
| T29 | 
1581 | 
1472 | 
0 | 
0 | 
| T30 | 
1065 | 
1005 | 
0 | 
0 | 
| T31 | 
4516 | 
4421 | 
0 | 
0 | 
| T32 | 
576 | 
523 | 
0 | 
0 | 
| T33 | 
801 | 
714 | 
0 | 
0 | 
| T34 | 
1805 | 
1704 | 
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:       T3 T7 T39 
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:       T3 T7 T39 
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 | T64,T65,T66 | 
| 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 | T64,T65,T66 | 
| 1 | 0 | Covered | T3,T7,T39 | 
 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 | T64,T65,T66 | 
| 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 | T64,T66,T67 | 
| 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 | T64,T66,T67 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T64,T65,T66 | 
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 | 
T3,T7,T39 | 
| 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 | 
1009 | 
1009 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
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 | 
41984687 | 
39550386 | 
0 | 
0 | 
| T1 | 
9387 | 
9279 | 
0 | 
0 | 
| T4 | 
2526 | 
2404 | 
0 | 
0 | 
| T5 | 
1975 | 
1887 | 
0 | 
0 | 
| T6 | 
1281 | 
1193 | 
0 | 
0 | 
| T29 | 
1581 | 
1472 | 
0 | 
0 | 
| T30 | 
1065 | 
1005 | 
0 | 
0 | 
| T31 | 
4516 | 
4421 | 
0 | 
0 | 
| T32 | 
576 | 
523 | 
0 | 
0 | 
| T33 | 
801 | 
714 | 
0 | 
0 | 
| T34 | 
1805 | 
1704 | 
0 | 
0 |