Line Coverage for Module : 
prim_subreg_shadow
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T11 T48 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T11 T48 
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 | T74,T75,T76 | 
| 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 | T77,T74,T75 | 
| 1 | 0 | Covered | T2,T11,T48 | 
 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 | T74,T75,T76 | 
| 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 | T77,T74,T75 | 
| 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 | T77,T74,T75 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T77,T74,T75 | 
Branch Coverage for Module : 
prim_subreg_shadow
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T11,T48 | 
| 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 | 
10100 | 
10100 | 
0 | 
0 | 
| T1 | 
10 | 
10 | 
0 | 
0 | 
| T4 | 
10 | 
10 | 
0 | 
0 | 
| T5 | 
10 | 
10 | 
0 | 
0 | 
| T6 | 
10 | 
10 | 
0 | 
0 | 
| T28 | 
10 | 
10 | 
0 | 
0 | 
| T29 | 
10 | 
10 | 
0 | 
0 | 
| T30 | 
10 | 
10 | 
0 | 
0 | 
| T31 | 
10 | 
10 | 
0 | 
0 | 
| T32 | 
10 | 
10 | 
0 | 
0 | 
| T33 | 
10 | 
10 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
513326694 | 
486007080 | 
0 | 
0 | 
| T1 | 
631122 | 
630106 | 
0 | 
0 | 
| T4 | 
15020 | 
14370 | 
0 | 
0 | 
| T5 | 
72918 | 
71512 | 
0 | 
0 | 
| T6 | 
106002 | 
105014 | 
0 | 
0 | 
| T28 | 
27492 | 
27002 | 
0 | 
0 | 
| T29 | 
25562 | 
24432 | 
0 | 
0 | 
| T30 | 
24724 | 
23566 | 
0 | 
0 | 
| T31 | 
16358 | 
15892 | 
0 | 
0 | 
| T32 | 
19534 | 
18750 | 
0 | 
0 | 
| T33 | 
27234 | 
26604 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T11 T48 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T11 T48 
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 | T74,T76,T78 | 
| 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 | T77,T74,T75 | 
| 1 | 0 | Covered | T2,T11,T48 | 
 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 | T74,T76,T78 | 
| 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 | T77,T74,T75 | 
| 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 | T77,T74,T75 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T77,T74,T75 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T11,T48 | 
| 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 | 
1010 | 
1010 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
75966842 | 
71338730 | 
0 | 
0 | 
| T1 | 
95886 | 
95711 | 
0 | 
0 | 
| T4 | 
2290 | 
2183 | 
0 | 
0 | 
| T5 | 
10741 | 
10497 | 
0 | 
0 | 
| T6 | 
16113 | 
15951 | 
0 | 
0 | 
| T28 | 
4248 | 
4168 | 
0 | 
0 | 
| T29 | 
3901 | 
3711 | 
0 | 
0 | 
| T30 | 
3733 | 
3530 | 
0 | 
0 | 
| T31 | 
2464 | 
2384 | 
0 | 
0 | 
| T32 | 
2982 | 
2848 | 
0 | 
0 | 
| T33 | 
4103 | 
3996 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T11 T48 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T11 T48 
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 | T74,T75,T76 | 
| 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 | T77,T74,T75 | 
| 1 | 0 | Covered | T2,T11,T48 | 
 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 | T74,T75,T76 | 
| 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 | T77,T74,T75 | 
| 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 | T77,T74,T75 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T77,T74,T75 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T11,T48 | 
| 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 | 
1010 | 
1010 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
75966842 | 
71338730 | 
0 | 
0 | 
| T1 | 
95886 | 
95711 | 
0 | 
0 | 
| T4 | 
2290 | 
2183 | 
0 | 
0 | 
| T5 | 
10741 | 
10497 | 
0 | 
0 | 
| T6 | 
16113 | 
15951 | 
0 | 
0 | 
| T28 | 
4248 | 
4168 | 
0 | 
0 | 
| T29 | 
3901 | 
3711 | 
0 | 
0 | 
| T30 | 
3733 | 
3530 | 
0 | 
0 | 
| T31 | 
2464 | 
2384 | 
0 | 
0 | 
| T32 | 
2982 | 
2848 | 
0 | 
0 | 
| T33 | 
4103 | 
3996 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T11 T48 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T11 T48 
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 | T74,T75,T76 | 
| 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 | T74,T75,T76 | 
| 1 | 0 | Covered | T2,T11,T48 | 
 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 | T74,T75,T76 | 
| 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 | T75,T76,T78 | 
| 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 | T75,T76,T78 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T74,T75,T76 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T11,T48 | 
| 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 | 
1010 | 
1010 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
37178629 | 
36004130 | 
0 | 
0 | 
| T1 | 
47897 | 
47856 | 
0 | 
0 | 
| T4 | 
1126 | 
1091 | 
0 | 
0 | 
| T5 | 
6106 | 
6051 | 
0 | 
0 | 
| T6 | 
8031 | 
7976 | 
0 | 
0 | 
| T28 | 
2112 | 
2084 | 
0 | 
0 | 
| T29 | 
1911 | 
1856 | 
0 | 
0 | 
| T30 | 
1916 | 
1875 | 
0 | 
0 | 
| T31 | 
1280 | 
1259 | 
0 | 
0 | 
| T32 | 
1458 | 
1424 | 
0 | 
0 | 
| T33 | 
2126 | 
2098 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T11 T48 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T11 T48 
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 | T74,T75,T76 | 
| 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 | T74,T75,T76 | 
| 1 | 0 | Covered | T2,T11,T48 | 
 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 | T74,T75,T76 | 
| 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 | T74,T75,T76 | 
| 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 | T74,T75,T76 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T74,T75,T76 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T11,T48 | 
| 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 | 
1010 | 
1010 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
37178629 | 
36004130 | 
0 | 
0 | 
| T1 | 
47897 | 
47856 | 
0 | 
0 | 
| T4 | 
1126 | 
1091 | 
0 | 
0 | 
| T5 | 
6106 | 
6051 | 
0 | 
0 | 
| T6 | 
8031 | 
7976 | 
0 | 
0 | 
| T28 | 
2112 | 
2084 | 
0 | 
0 | 
| T29 | 
1911 | 
1856 | 
0 | 
0 | 
| T30 | 
1916 | 
1875 | 
0 | 
0 | 
| T31 | 
1280 | 
1259 | 
0 | 
0 | 
| T32 | 
1458 | 
1424 | 
0 | 
0 | 
| T33 | 
2126 | 
2098 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T11 T48 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T11 T48 
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 | T75,T78,T79 | 
| 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 | T77,T74,T75 | 
| 1 | 0 | Covered | T2,T11,T48 | 
 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 | T75,T78,T79 | 
| 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 | T75,T76,T78 | 
| 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 | T75,T76,T78 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T77,T74,T75 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T11,T48 | 
| 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 | 
1010 | 
1010 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
18588829 | 
18001721 | 
0 | 
0 | 
| T1 | 
23948 | 
23927 | 
0 | 
0 | 
| T4 | 
563 | 
546 | 
0 | 
0 | 
| T5 | 
3052 | 
3025 | 
0 | 
0 | 
| T6 | 
4015 | 
3987 | 
0 | 
0 | 
| T28 | 
1056 | 
1042 | 
0 | 
0 | 
| T29 | 
955 | 
927 | 
0 | 
0 | 
| T30 | 
958 | 
937 | 
0 | 
0 | 
| T31 | 
638 | 
628 | 
0 | 
0 | 
| T32 | 
729 | 
712 | 
0 | 
0 | 
| T33 | 
1062 | 
1048 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T11 T48 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T11 T48 
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 | T77,T74,T75 | 
| 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 | T77,T74,T75 | 
| 1 | 0 | Covered | T2,T11,T48 | 
 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 | T77,T74,T75 | 
| 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 | T74,T75,T78 | 
| 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 | T74,T75,T78 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T77,T74,T75 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T11,T48 | 
| 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 | 
1010 | 
1010 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
18588829 | 
18001721 | 
0 | 
0 | 
| T1 | 
23948 | 
23927 | 
0 | 
0 | 
| T4 | 
563 | 
546 | 
0 | 
0 | 
| T5 | 
3052 | 
3025 | 
0 | 
0 | 
| T6 | 
4015 | 
3987 | 
0 | 
0 | 
| T28 | 
1056 | 
1042 | 
0 | 
0 | 
| T29 | 
955 | 
927 | 
0 | 
0 | 
| T30 | 
958 | 
937 | 
0 | 
0 | 
| T31 | 
638 | 
628 | 
0 | 
0 | 
| T32 | 
729 | 
712 | 
0 | 
0 | 
| T33 | 
1062 | 
1048 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T11 T48 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T11 T48 
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 | T74,T78,T79 | 
| 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 | T77,T74,T75 | 
| 1 | 0 | Covered | T2,T11,T48 | 
 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 | T74,T78,T79 | 
| 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 | T77,T74,T75 | 
| 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 | T77,T74,T75 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T77,T74,T75 | 
Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T11,T48 | 
| 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 | 
1010 | 
1010 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
84464139 | 
79546245 | 
0 | 
0 | 
| T1 | 
99885 | 
99702 | 
0 | 
0 | 
| T4 | 
2386 | 
2274 | 
0 | 
0 | 
| T5 | 
11190 | 
10935 | 
0 | 
0 | 
| T6 | 
16785 | 
16616 | 
0 | 
0 | 
| T28 | 
4240 | 
4157 | 
0 | 
0 | 
| T29 | 
4064 | 
3866 | 
0 | 
0 | 
| T30 | 
3888 | 
3676 | 
0 | 
0 | 
| T31 | 
2566 | 
2483 | 
0 | 
0 | 
| T32 | 
3107 | 
2967 | 
0 | 
0 | 
| T33 | 
4274 | 
4162 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T11 T48 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T11 T48 
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 | T74,T75,T76 | 
| 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 | T77,T74,T75 | 
| 1 | 0 | Covered | T2,T11,T48 | 
 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 | T74,T75,T76 | 
| 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 | T74,T75,T76 | 
| 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 | T74,T75,T76 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T77,T74,T75 | 
Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T11,T48 | 
| 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 | 
1010 | 
1010 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
84464139 | 
79546245 | 
0 | 
0 | 
| T1 | 
99885 | 
99702 | 
0 | 
0 | 
| T4 | 
2386 | 
2274 | 
0 | 
0 | 
| T5 | 
11190 | 
10935 | 
0 | 
0 | 
| T6 | 
16785 | 
16616 | 
0 | 
0 | 
| T28 | 
4240 | 
4157 | 
0 | 
0 | 
| T29 | 
4064 | 
3866 | 
0 | 
0 | 
| T30 | 
3888 | 
3676 | 
0 | 
0 | 
| T31 | 
2566 | 
2483 | 
0 | 
0 | 
| T32 | 
3107 | 
2967 | 
0 | 
0 | 
| T33 | 
4274 | 
4162 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T11 T48 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T11 T48 
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 | T77,T74,T75 | 
| 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 | T77,T74,T75 | 
| 1 | 0 | Covered | T2,T11,T48 | 
 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 | T77,T74,T75 | 
| 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 | T74,T75,T76 | 
| 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 | T74,T75,T76 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T77,T74,T75 | 
Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T11,T48 | 
| 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 | 
1010 | 
1010 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40464908 | 
38112714 | 
0 | 
0 | 
| T1 | 
47945 | 
47857 | 
0 | 
0 | 
| T4 | 
1145 | 
1091 | 
0 | 
0 | 
| T5 | 
5370 | 
5248 | 
0 | 
0 | 
| T6 | 
8057 | 
7977 | 
0 | 
0 | 
| T28 | 
2090 | 
2050 | 
0 | 
0 | 
| T29 | 
1950 | 
1856 | 
0 | 
0 | 
| T30 | 
1867 | 
1765 | 
0 | 
0 | 
| T31 | 
1231 | 
1192 | 
0 | 
0 | 
| T32 | 
1491 | 
1424 | 
0 | 
0 | 
| T33 | 
2052 | 
1998 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 16 | 16 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 100 | 6 | 6 | 100.00 | 
| CONT_ASSIGN | 113 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 114 | 0 | 0 |  | 
| CONT_ASSIGN | 138 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 139 | 0 | 0 |  | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 0 | 0 |  | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 184 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 187 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 188 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 189 | 1 | 1 | 100.00 | 
93                        // - In case of RO, SW should not interfere with update process.
94         1/1            assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
           Tests:       T2 T11 T48 
95                      
96                        // Phase tracker:
97                        // - Reads from SW clear the phase back to 0.
98                        // - Writes have priority (can come from SW or HW).
99                        always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100        1/1              if (!rst_ni) begin
           Tests:       T4 T5 T6 
101        1/1                phase_q <= 1'b0;
           Tests:       T4 T5 T6 
102        1/1              end else if (wr_en && !err_storage) begin
           Tests:       T4 T5 T6 
103        1/1                phase_q <= ~phase_q;
           Tests:       T1 T2 T3 
104        1/1              end else if (phase_clear || err_storage) begin
           Tests:       T4 T5 T6 
105        1/1                phase_q <= 1'b0;
           Tests:       T2 T11 T48 
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 | T74,T75,T78 | 
| 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 | T77,T74,T75 | 
| 1 | 0 | Covered | T2,T11,T48 | 
 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 | T74,T75,T78 | 
| 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 | T75,T78,T80 | 
| 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 | T75,T78,T80 | 
 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
| -1- | Status | Tests |                       
| 0 | Covered | T4,T5,T6 | 
| 1 | Covered | T77,T74,T75 | 
Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
6 | 
6 | 
100.00 | 
| TERNARY | 
183 | 
2 | 
2 | 
100.00 | 
| IF | 
100 | 
4 | 
4 | 
100.00 | 
183          assign err_update  = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
                                                         -1-  
                                                         ==>  
                                                         ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T1,T2,T3 | 
100            if (!rst_ni) begin
               -1-  
101              phase_q <= 1'b0;
                 ==>
102            end else if (wr_en && !err_storage) begin
                        -2-  
103              phase_q <= ~phase_q;
                 ==>
104            end else if (phase_clear || err_storage) begin
                        -3-  
105              phase_q <= 1'b0;
                 ==>
106            end
               MISSING_ELSE
               ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T4,T5,T6 | 
| 0 | 
1 | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
0 | 
1 | 
Covered | 
T2,T11,T48 | 
| 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 | 
1010 | 
1010 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T28 | 
1 | 
1 | 
0 | 
0 | 
| T29 | 
1 | 
1 | 
0 | 
0 | 
| T30 | 
1 | 
1 | 
0 | 
0 | 
| T31 | 
1 | 
1 | 
0 | 
0 | 
| T32 | 
1 | 
1 | 
0 | 
0 | 
| T33 | 
1 | 
1 | 
0 | 
0 | 
MubiIsNotYetSupported_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40464908 | 
38112714 | 
0 | 
0 | 
| T1 | 
47945 | 
47857 | 
0 | 
0 | 
| T4 | 
1145 | 
1091 | 
0 | 
0 | 
| T5 | 
5370 | 
5248 | 
0 | 
0 | 
| T6 | 
8057 | 
7977 | 
0 | 
0 | 
| T28 | 
2090 | 
2050 | 
0 | 
0 | 
| T29 | 
1950 | 
1856 | 
0 | 
0 | 
| T30 | 
1867 | 
1765 | 
0 | 
0 | 
| T31 | 
1231 | 
1192 | 
0 | 
0 | 
| T32 | 
1491 | 
1424 | 
0 | 
0 | 
| T33 | 
2052 | 
1998 | 
0 | 
0 |