Line Coverage for Module : 
prim_pulse_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Module : 
prim_pulse_sync
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Module : 
prim_pulse_sync
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Module : 
prim_pulse_sync
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1434425899 | 
461993 | 
0 | 
0 | 
| T1 | 
203380 | 
96 | 
0 | 
0 | 
| T2 | 
188390 | 
70 | 
0 | 
0 | 
| T3 | 
0 | 
170 | 
0 | 
0 | 
| T8 | 
0 | 
72 | 
0 | 
0 | 
| T9 | 
0 | 
304 | 
0 | 
0 | 
| T10 | 
0 | 
190 | 
0 | 
0 | 
| T11 | 
0 | 
260 | 
0 | 
0 | 
| T18 | 
16427 | 
0 | 
0 | 
0 | 
| T19 | 
15133 | 
0 | 
0 | 
0 | 
| T20 | 
25304 | 
0 | 
0 | 
0 | 
| T21 | 
71210 | 
0 | 
0 | 
0 | 
| T22 | 
7889 | 
0 | 
0 | 
0 | 
| T23 | 
8421 | 
0 | 
0 | 
0 | 
| T24 | 
11268 | 
0 | 
0 | 
0 | 
| T25 | 
14448 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
100 | 
0 | 
0 | 
| T27 | 
0 | 
150 | 
0 | 
0 | 
| T51 | 
0 | 
98 | 
0 | 
0 | 
| T57 | 
0 | 
592 | 
0 | 
0 | 
| T62 | 
0 | 
542 | 
0 | 
0 | 
| T63 | 
0 | 
34 | 
0 | 
0 | 
| T64 | 
0 | 
220 | 
0 | 
0 | 
| T101 | 
26448 | 
4 | 
0 | 
0 | 
| T104 | 
4599 | 
0 | 
0 | 
0 | 
| T106 | 
21340 | 
1 | 
0 | 
0 | 
| T107 | 
20846 | 
2 | 
0 | 
0 | 
| T160 | 
2543 | 
1 | 
0 | 
0 | 
| T161 | 
16138 | 
1 | 
0 | 
0 | 
| T162 | 
13286 | 
3 | 
0 | 
0 | 
| T163 | 
16186 | 
2 | 
0 | 
0 | 
| T164 | 
3633 | 
0 | 
0 | 
0 | 
| T165 | 
9660 | 
0 | 
0 | 
0 | 
| T166 | 
13604 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1253775231 | 
459320 | 
0 | 
0 | 
| T1 | 
106533 | 
96 | 
0 | 
0 | 
| T2 | 
106707 | 
70 | 
0 | 
0 | 
| T3 | 
0 | 
170 | 
0 | 
0 | 
| T8 | 
0 | 
72 | 
0 | 
0 | 
| T9 | 
0 | 
304 | 
0 | 
0 | 
| T10 | 
0 | 
190 | 
0 | 
0 | 
| T11 | 
0 | 
260 | 
0 | 
0 | 
| T18 | 
6854 | 
0 | 
0 | 
0 | 
| T19 | 
8877 | 
0 | 
0 | 
0 | 
| T20 | 
9119 | 
0 | 
0 | 
0 | 
| T21 | 
44247 | 
0 | 
0 | 
0 | 
| T22 | 
4711 | 
0 | 
0 | 
0 | 
| T23 | 
4940 | 
0 | 
0 | 
0 | 
| T24 | 
6419 | 
0 | 
0 | 
0 | 
| T25 | 
4621 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
100 | 
0 | 
0 | 
| T27 | 
0 | 
150 | 
0 | 
0 | 
| T51 | 
0 | 
98 | 
0 | 
0 | 
| T57 | 
0 | 
592 | 
0 | 
0 | 
| T62 | 
0 | 
542 | 
0 | 
0 | 
| T63 | 
0 | 
34 | 
0 | 
0 | 
| T64 | 
0 | 
220 | 
0 | 
0 | 
| T101 | 
11266 | 
4 | 
0 | 
0 | 
| T104 | 
9020 | 
0 | 
0 | 
0 | 
| T106 | 
12598 | 
1 | 
0 | 
0 | 
| T107 | 
44232 | 
2 | 
0 | 
0 | 
| T160 | 
23916 | 
1 | 
0 | 
0 | 
| T161 | 
57690 | 
1 | 
0 | 
0 | 
| T162 | 
11366 | 
3 | 
0 | 
0 | 
| T163 | 
20576 | 
2 | 
0 | 
0 | 
| T164 | 
10260 | 
0 | 
0 | 
0 | 
| T165 | 
8509 | 
0 | 
0 | 
0 | 
| T166 | 
5822 | 
0 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_en_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_en_cdc.u_src_to_dst_req
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_en_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_en_cdc.u_src_to_dst_req
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
85107854 | 
11889 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
14 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
38 | 
0 | 
0 | 
| T18 | 
3702 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
5671 | 
0 | 
0 | 
0 | 
| T21 | 
16388 | 
0 | 
0 | 
0 | 
| T22 | 
1683 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2432 | 
0 | 
0 | 
0 | 
| T25 | 
3609 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
20 | 
0 | 
0 | 
| T27 | 
0 | 
30 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
11889 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
14 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
38 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
20 | 
0 | 
0 | 
| T27 | 
0 | 
30 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_cdc.u_src_to_dst_req
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
85107854 | 
18027 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
3702 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
5671 | 
0 | 
0 | 
0 | 
| T21 | 
16388 | 
0 | 
0 | 
0 | 
| T22 | 
1683 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2432 | 
0 | 
0 | 
0 | 
| T25 | 
3609 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
18044 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
18015 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
85107854 | 
18030 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
3702 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
5671 | 
0 | 
0 | 
0 | 
| T21 | 
16388 | 
0 | 
0 | 
0 | 
| T22 | 
1683 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2432 | 
0 | 
0 | 
0 | 
| T25 | 
3609 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_en_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_en_cdc.u_src_to_dst_req
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_en_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_en_cdc.u_src_to_dst_req
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
41516524 | 
11889 | 
0 | 
0 | 
| T1 | 
21201 | 
8 | 
0 | 
0 | 
| T2 | 
13525 | 
14 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
38 | 
0 | 
0 | 
| T18 | 
1994 | 
0 | 
0 | 
0 | 
| T19 | 
1541 | 
0 | 
0 | 
0 | 
| T20 | 
3331 | 
0 | 
0 | 
0 | 
| T21 | 
6005 | 
0 | 
0 | 
0 | 
| T22 | 
781 | 
0 | 
0 | 
0 | 
| T23 | 
858 | 
0 | 
0 | 
0 | 
| T24 | 
1149 | 
0 | 
0 | 
0 | 
| T25 | 
1765 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
20 | 
0 | 
0 | 
| T27 | 
0 | 
30 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
11889 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
14 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
38 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
20 | 
0 | 
0 | 
| T27 | 
0 | 
30 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_cdc.u_src_to_dst_req
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
41516524 | 
17879 | 
0 | 
0 | 
| T1 | 
21201 | 
8 | 
0 | 
0 | 
| T2 | 
13525 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1994 | 
0 | 
0 | 
0 | 
| T19 | 
1541 | 
0 | 
0 | 
0 | 
| T20 | 
3331 | 
0 | 
0 | 
0 | 
| T21 | 
6005 | 
0 | 
0 | 
0 | 
| T22 | 
781 | 
0 | 
0 | 
0 | 
| T23 | 
858 | 
0 | 
0 | 
0 | 
| T24 | 
1149 | 
0 | 
0 | 
0 | 
| T25 | 
1765 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
17903 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
17874 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
41516524 | 
17882 | 
0 | 
0 | 
| T1 | 
21201 | 
8 | 
0 | 
0 | 
| T2 | 
13525 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1994 | 
0 | 
0 | 
0 | 
| T19 | 
1541 | 
0 | 
0 | 
0 | 
| T20 | 
3331 | 
0 | 
0 | 
0 | 
| T21 | 
6005 | 
0 | 
0 | 
0 | 
| T22 | 
781 | 
0 | 
0 | 
0 | 
| T23 | 
858 | 
0 | 
0 | 
0 | 
| T24 | 
1149 | 
0 | 
0 | 
0 | 
| T25 | 
1765 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_en_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_en_cdc.u_src_to_dst_req
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_en_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_en_cdc.u_src_to_dst_req
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
20757847 | 
11889 | 
0 | 
0 | 
| T1 | 
10601 | 
8 | 
0 | 
0 | 
| T2 | 
6761 | 
14 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
38 | 
0 | 
0 | 
| T18 | 
997 | 
0 | 
0 | 
0 | 
| T19 | 
770 | 
0 | 
0 | 
0 | 
| T20 | 
1665 | 
0 | 
0 | 
0 | 
| T21 | 
3004 | 
0 | 
0 | 
0 | 
| T22 | 
391 | 
0 | 
0 | 
0 | 
| T23 | 
429 | 
0 | 
0 | 
0 | 
| T24 | 
574 | 
0 | 
0 | 
0 | 
| T25 | 
882 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
20 | 
0 | 
0 | 
| T27 | 
0 | 
30 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
11889 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
14 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
38 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
20 | 
0 | 
0 | 
| T27 | 
0 | 
30 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_cdc.u_src_to_dst_req
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
20757847 | 
17906 | 
0 | 
0 | 
| T1 | 
10601 | 
8 | 
0 | 
0 | 
| T2 | 
6761 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
997 | 
0 | 
0 | 
0 | 
| T19 | 
770 | 
0 | 
0 | 
0 | 
| T20 | 
1665 | 
0 | 
0 | 
0 | 
| T21 | 
3004 | 
0 | 
0 | 
0 | 
| T22 | 
391 | 
0 | 
0 | 
0 | 
| T23 | 
429 | 
0 | 
0 | 
0 | 
| T24 | 
574 | 
0 | 
0 | 
0 | 
| T25 | 
882 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
17937 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
17897 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
20757847 | 
17912 | 
0 | 
0 | 
| T1 | 
10601 | 
8 | 
0 | 
0 | 
| T2 | 
6761 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
997 | 
0 | 
0 | 
0 | 
| T19 | 
770 | 
0 | 
0 | 
0 | 
| T20 | 
1665 | 
0 | 
0 | 
0 | 
| T21 | 
3004 | 
0 | 
0 | 
0 | 
| T22 | 
391 | 
0 | 
0 | 
0 | 
| T23 | 
429 | 
0 | 
0 | 
0 | 
| T24 | 
574 | 
0 | 
0 | 
0 | 
| T25 | 
882 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_en_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_en_cdc.u_src_to_dst_req
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_en_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_en_cdc.u_src_to_dst_req
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
93713926 | 
11889 | 
0 | 
0 | 
| T1 | 
44240 | 
8 | 
0 | 
0 | 
| T2 | 
48308 | 
14 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
38 | 
0 | 
0 | 
| T18 | 
3856 | 
0 | 
0 | 
0 | 
| T19 | 
3336 | 
0 | 
0 | 
0 | 
| T20 | 
5907 | 
0 | 
0 | 
0 | 
| T21 | 
17072 | 
0 | 
0 | 
0 | 
| T22 | 
1753 | 
0 | 
0 | 
0 | 
| T23 | 
1856 | 
0 | 
0 | 
0 | 
| T24 | 
2534 | 
0 | 
0 | 
0 | 
| T25 | 
3760 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
20 | 
0 | 
0 | 
| T27 | 
0 | 
30 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
11889 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
14 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
38 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
20 | 
0 | 
0 | 
| T27 | 
0 | 
30 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_cdc.u_src_to_dst_req
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
93713926 | 
17932 | 
0 | 
0 | 
| T1 | 
44240 | 
8 | 
0 | 
0 | 
| T2 | 
48308 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
3856 | 
0 | 
0 | 
0 | 
| T19 | 
3336 | 
0 | 
0 | 
0 | 
| T20 | 
5907 | 
0 | 
0 | 
0 | 
| T21 | 
17072 | 
0 | 
0 | 
0 | 
| T22 | 
1753 | 
0 | 
0 | 
0 | 
| T23 | 
1856 | 
0 | 
0 | 
0 | 
| T24 | 
2534 | 
0 | 
0 | 
0 | 
| T25 | 
3760 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
17952 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
17922 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
93713926 | 
17934 | 
0 | 
0 | 
| T1 | 
44240 | 
8 | 
0 | 
0 | 
| T2 | 
48308 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
3856 | 
0 | 
0 | 
0 | 
| T19 | 
3336 | 
0 | 
0 | 
0 | 
| T20 | 
5907 | 
0 | 
0 | 
0 | 
| T21 | 
17072 | 
0 | 
0 | 
0 | 
| T22 | 
1753 | 
0 | 
0 | 
0 | 
| T23 | 
1856 | 
0 | 
0 | 
0 | 
| T24 | 
2534 | 
0 | 
0 | 
0 | 
| T25 | 
3760 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_en_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_en_cdc.u_src_to_dst_req
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T3,T51 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_en_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_en_cdc.u_src_to_dst_req
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
44974733 | 
11376 | 
0 | 
0 | 
| T1 | 
21235 | 
8 | 
0 | 
0 | 
| T2 | 
23187 | 
7 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
19 | 
0 | 
0 | 
| T18 | 
1851 | 
0 | 
0 | 
0 | 
| T19 | 
1601 | 
0 | 
0 | 
0 | 
| T20 | 
2835 | 
0 | 
0 | 
0 | 
| T21 | 
8194 | 
0 | 
0 | 
0 | 
| T22 | 
841 | 
0 | 
0 | 
0 | 
| T23 | 
891 | 
0 | 
0 | 
0 | 
| T24 | 
1216 | 
0 | 
0 | 
0 | 
| T25 | 
1805 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
11 | 
0 | 
0 | 
| T27 | 
0 | 
15 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
11889 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
14 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
38 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
20 | 
0 | 
0 | 
| T27 | 
0 | 
30 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_cdc.u_src_to_dst_req
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_cdc.u_src_to_dst_req
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
44974733 | 
17917 | 
0 | 
0 | 
| T1 | 
21235 | 
8 | 
0 | 
0 | 
| T2 | 
23187 | 
21 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1851 | 
0 | 
0 | 
0 | 
| T19 | 
1601 | 
0 | 
0 | 
0 | 
| T20 | 
2835 | 
0 | 
0 | 
0 | 
| T21 | 
8194 | 
0 | 
0 | 
0 | 
| T22 | 
841 | 
0 | 
0 | 
0 | 
| T23 | 
891 | 
0 | 
0 | 
0 | 
| T24 | 
1216 | 
0 | 
0 | 
0 | 
| T25 | 
1805 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
38 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
18113 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
40 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_cdc.u_arb.gen_passthru.u_dst_to_src_ack
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
17772 | 
0 | 
0 | 
| T1 | 
42468 | 
8 | 
0 | 
0 | 
| T2 | 
46373 | 
21 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
74 | 
0 | 
0 | 
| T18 | 
1890 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
2068 | 
0 | 
0 | 
0 | 
| T21 | 
16731 | 
0 | 
0 | 
0 | 
| T22 | 
1719 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2281 | 
0 | 
0 | 
0 | 
| T25 | 
902 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
38 | 
0 | 
0 | 
| T27 | 
0 | 
58 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
44974733 | 
17951 | 
0 | 
0 | 
| T1 | 
21235 | 
8 | 
0 | 
0 | 
| T2 | 
23187 | 
21 | 
0 | 
0 | 
| T3 | 
0 | 
10 | 
0 | 
0 | 
| T8 | 
0 | 
8 | 
0 | 
0 | 
| T10 | 
0 | 
76 | 
0 | 
0 | 
| T18 | 
1851 | 
0 | 
0 | 
0 | 
| T19 | 
1601 | 
0 | 
0 | 
0 | 
| T20 | 
2835 | 
0 | 
0 | 
0 | 
| T21 | 
8194 | 
0 | 
0 | 
0 | 
| T22 | 
841 | 
0 | 
0 | 
0 | 
| T23 | 
891 | 
0 | 
0 | 
0 | 
| T24 | 
1216 | 
0 | 
0 | 
0 | 
| T25 | 
1805 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
39 | 
0 | 
0 | 
| T27 | 
0 | 
60 | 
0 | 
0 | 
| T51 | 
0 | 
6 | 
0 | 
0 | 
| T62 | 
0 | 
22 | 
0 | 
0 | 
| T63 | 
0 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi_err_update_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T103 T104 T105 
Cond Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi_err_update_sync
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T103,T104,T105 | 
| 1 | 0 | Covered | T103,T104,T105 | 
| 1 | 1 | Covered | T167,T168 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T103,T104,T105 | 
| 1 | 0 | Covered | T167,T168 | 
| 1 | 1 | Covered | T103,T104,T105 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi_err_update_sync
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi_err_update_sync
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
27 | 
0 | 
0 | 
| T103 | 
10349 | 
1 | 
0 | 
0 | 
| T104 | 
4599 | 
1 | 
0 | 
0 | 
| T105 | 
9607 | 
1 | 
0 | 
0 | 
| T107 | 
10423 | 
1 | 
0 | 
0 | 
| T160 | 
2543 | 
1 | 
0 | 
0 | 
| T162 | 
6643 | 
2 | 
0 | 
0 | 
| T163 | 
8093 | 
1 | 
0 | 
0 | 
| T164 | 
3633 | 
1 | 
0 | 
0 | 
| T166 | 
6802 | 
2 | 
0 | 
0 | 
| T169 | 
5141 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
85107854 | 
27 | 
0 | 
0 | 
| T103 | 
43197 | 
1 | 
0 | 
0 | 
| T104 | 
19195 | 
1 | 
0 | 
0 | 
| T105 | 
18445 | 
1 | 
0 | 
0 | 
| T107 | 
45482 | 
1 | 
0 | 
0 | 
| T160 | 
48825 | 
1 | 
0 | 
0 | 
| T162 | 
12755 | 
2 | 
0 | 
0 | 
| T163 | 
22196 | 
1 | 
0 | 
0 | 
| T164 | 
21800 | 
1 | 
0 | 
0 | 
| T166 | 
6662 | 
2 | 
0 | 
0 | 
| T169 | 
20562 | 
1 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo_err_update_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T100 T103 T104 
Cond Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo_err_update_sync
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T103,T104 | 
| 1 | 0 | Covered | T100,T103,T104 | 
| 1 | 1 | Covered | T162,T167,T168 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T103,T104 | 
| 1 | 0 | Covered | T162,T167,T168 | 
| 1 | 1 | Covered | T100,T103,T104 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo_err_update_sync
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo_err_update_sync
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
30 | 
0 | 
0 | 
| T100 | 
3364 | 
1 | 
0 | 
0 | 
| T103 | 
10349 | 
2 | 
0 | 
0 | 
| T104 | 
4599 | 
1 | 
0 | 
0 | 
| T108 | 
13292 | 
1 | 
0 | 
0 | 
| T160 | 
2543 | 
1 | 
0 | 
0 | 
| T162 | 
6643 | 
3 | 
0 | 
0 | 
| T163 | 
8093 | 
1 | 
0 | 
0 | 
| T164 | 
3633 | 
1 | 
0 | 
0 | 
| T169 | 
5141 | 
2 | 
0 | 
0 | 
| T170 | 
5088 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
85107854 | 
30 | 
0 | 
0 | 
| T100 | 
13456 | 
1 | 
0 | 
0 | 
| T103 | 
43197 | 
2 | 
0 | 
0 | 
| T104 | 
19195 | 
1 | 
0 | 
0 | 
| T108 | 
51039 | 
1 | 
0 | 
0 | 
| T160 | 
48825 | 
1 | 
0 | 
0 | 
| T162 | 
12755 | 
3 | 
0 | 
0 | 
| T163 | 
22196 | 
1 | 
0 | 
0 | 
| T164 | 
21800 | 
1 | 
0 | 
0 | 
| T169 | 
20562 | 
2 | 
0 | 
0 | 
| T170 | 
97694 | 
1 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi_err_update_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T101 T106 T107 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi_err_update_sync
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T101,T106,T107 | 
| 1 | 0 | Covered | T101,T106,T107 | 
| 1 | 1 | Covered | T101,T162,T171 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T101,T106,T107 | 
| 1 | 0 | Covered | T101,T162,T171 | 
| 1 | 1 | Covered | T101,T106,T107 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi_err_update_sync
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi_err_update_sync
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
36 | 
0 | 
0 | 
| T101 | 
13224 | 
4 | 
0 | 
0 | 
| T106 | 
10670 | 
1 | 
0 | 
0 | 
| T107 | 
10423 | 
2 | 
0 | 
0 | 
| T160 | 
2543 | 
1 | 
0 | 
0 | 
| T161 | 
8069 | 
1 | 
0 | 
0 | 
| T162 | 
6643 | 
3 | 
0 | 
0 | 
| T163 | 
8093 | 
2 | 
0 | 
0 | 
| T164 | 
3633 | 
1 | 
0 | 
0 | 
| T165 | 
9660 | 
1 | 
0 | 
0 | 
| T166 | 
6802 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
41516524 | 
36 | 
0 | 
0 | 
| T101 | 
5633 | 
4 | 
0 | 
0 | 
| T106 | 
6299 | 
1 | 
0 | 
0 | 
| T107 | 
22116 | 
2 | 
0 | 
0 | 
| T160 | 
23916 | 
1 | 
0 | 
0 | 
| T161 | 
28845 | 
1 | 
0 | 
0 | 
| T162 | 
5683 | 
3 | 
0 | 
0 | 
| T163 | 
10288 | 
2 | 
0 | 
0 | 
| T164 | 
10260 | 
1 | 
0 | 
0 | 
| T165 | 
8509 | 
1 | 
0 | 
0 | 
| T166 | 
2911 | 
1 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo_err_update_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T101 T104 T106 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo_err_update_sync
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T101,T104,T106 | 
| 1 | 0 | Covered | T101,T104,T106 | 
| 1 | 1 | Covered | T101,T107,T162 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T101,T104,T106 | 
| 1 | 0 | Covered | T101,T107,T162 | 
| 1 | 1 | Covered | T101,T104,T106 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo_err_update_sync
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo_err_update_sync
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
32 | 
0 | 
0 | 
| T101 | 
13224 | 
3 | 
0 | 
0 | 
| T104 | 
4599 | 
2 | 
0 | 
0 | 
| T106 | 
10670 | 
1 | 
0 | 
0 | 
| T107 | 
10423 | 
3 | 
0 | 
0 | 
| T108 | 
13292 | 
1 | 
0 | 
0 | 
| T161 | 
8069 | 
2 | 
0 | 
0 | 
| T162 | 
6643 | 
2 | 
0 | 
0 | 
| T163 | 
8093 | 
1 | 
0 | 
0 | 
| T166 | 
6802 | 
1 | 
0 | 
0 | 
| T171 | 
11781 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
41516524 | 
32 | 
0 | 
0 | 
| T101 | 
5633 | 
3 | 
0 | 
0 | 
| T104 | 
9020 | 
2 | 
0 | 
0 | 
| T106 | 
6299 | 
1 | 
0 | 
0 | 
| T107 | 
22116 | 
3 | 
0 | 
0 | 
| T108 | 
24797 | 
1 | 
0 | 
0 | 
| T161 | 
28845 | 
2 | 
0 | 
0 | 
| T162 | 
5683 | 
2 | 
0 | 
0 | 
| T163 | 
10288 | 
1 | 
0 | 
0 | 
| T166 | 
2911 | 
1 | 
0 | 
0 | 
| T171 | 
25099 | 
1 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi_err_update_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T100 T102 T101 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi_err_update_sync
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T102,T101 | 
| 1 | 0 | Covered | T100,T102,T101 | 
| 1 | 1 | Covered | T107,T171 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T102,T101 | 
| 1 | 0 | Covered | T107,T171 | 
| 1 | 1 | Covered | T100,T102,T101 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi_err_update_sync
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi_err_update_sync
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
30 | 
0 | 
0 | 
| T100 | 
3364 | 
1 | 
0 | 
0 | 
| T101 | 
13224 | 
1 | 
0 | 
0 | 
| T102 | 
5221 | 
1 | 
0 | 
0 | 
| T105 | 
9607 | 
1 | 
0 | 
0 | 
| T107 | 
10423 | 
3 | 
0 | 
0 | 
| T108 | 
13292 | 
1 | 
0 | 
0 | 
| T160 | 
2543 | 
1 | 
0 | 
0 | 
| T162 | 
6643 | 
2 | 
0 | 
0 | 
| T163 | 
8093 | 
1 | 
0 | 
0 | 
| T164 | 
3633 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
20757847 | 
30 | 
0 | 
0 | 
| T100 | 
3130 | 
1 | 
0 | 
0 | 
| T101 | 
2816 | 
1 | 
0 | 
0 | 
| T102 | 
11030 | 
1 | 
0 | 
0 | 
| T105 | 
4127 | 
1 | 
0 | 
0 | 
| T107 | 
11060 | 
3 | 
0 | 
0 | 
| T108 | 
12400 | 
1 | 
0 | 
0 | 
| T160 | 
11959 | 
1 | 
0 | 
0 | 
| T162 | 
2840 | 
2 | 
0 | 
0 | 
| T163 | 
5144 | 
1 | 
0 | 
0 | 
| T164 | 
5130 | 
1 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo_err_update_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T100 T102 T101 
Cond Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo_err_update_sync
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T102,T101 | 
| 1 | 0 | Covered | T100,T102,T101 | 
| 1 | 1 | Covered | T102,T107,T172 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T102,T101 | 
| 1 | 0 | Covered | T102,T107,T172 | 
| 1 | 1 | Covered | T100,T102,T101 | 
Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo_err_update_sync
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo_err_update_sync
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
34 | 
0 | 
0 | 
| T100 | 
3364 | 
1 | 
0 | 
0 | 
| T101 | 
13224 | 
2 | 
0 | 
0 | 
| T102 | 
5221 | 
3 | 
0 | 
0 | 
| T103 | 
10349 | 
1 | 
0 | 
0 | 
| T105 | 
9607 | 
1 | 
0 | 
0 | 
| T107 | 
10423 | 
4 | 
0 | 
0 | 
| T108 | 
13292 | 
1 | 
0 | 
0 | 
| T160 | 
2543 | 
1 | 
0 | 
0 | 
| T162 | 
6643 | 
2 | 
0 | 
0 | 
| T163 | 
8093 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
20757847 | 
34 | 
0 | 
0 | 
| T100 | 
3130 | 
1 | 
0 | 
0 | 
| T101 | 
2816 | 
2 | 
0 | 
0 | 
| T102 | 
11030 | 
3 | 
0 | 
0 | 
| T103 | 
10351 | 
1 | 
0 | 
0 | 
| T105 | 
4127 | 
1 | 
0 | 
0 | 
| T107 | 
11060 | 
4 | 
0 | 
0 | 
| T108 | 
12400 | 
1 | 
0 | 
0 | 
| T160 | 
11959 | 
1 | 
0 | 
0 | 
| T162 | 
2840 | 
2 | 
0 | 
0 | 
| T163 | 
5144 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi_err_update_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T101 T103 T104 
Cond Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi_err_update_sync
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T101,T103,T104 | 
| 1 | 0 | Covered | T101,T103,T104 | 
| 1 | 1 | Covered | T101,T105,T173 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T101,T103,T104 | 
| 1 | 0 | Covered | T101,T105,T173 | 
| 1 | 1 | Covered | T101,T103,T104 | 
Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi_err_update_sync
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi_err_update_sync
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
31 | 
0 | 
0 | 
| T101 | 
13224 | 
3 | 
0 | 
0 | 
| T103 | 
10349 | 
1 | 
0 | 
0 | 
| T104 | 
4599 | 
1 | 
0 | 
0 | 
| T105 | 
9607 | 
4 | 
0 | 
0 | 
| T106 | 
10670 | 
1 | 
0 | 
0 | 
| T161 | 
8069 | 
1 | 
0 | 
0 | 
| T162 | 
6643 | 
1 | 
0 | 
0 | 
| T163 | 
8093 | 
1 | 
0 | 
0 | 
| T169 | 
5141 | 
1 | 
0 | 
0 | 
| T170 | 
5088 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
93713926 | 
31 | 
0 | 
0 | 
| T101 | 
13224 | 
3 | 
0 | 
0 | 
| T103 | 
44998 | 
1 | 
0 | 
0 | 
| T104 | 
19996 | 
1 | 
0 | 
0 | 
| T105 | 
19215 | 
4 | 
0 | 
0 | 
| T106 | 
14040 | 
1 | 
0 | 
0 | 
| T161 | 
62068 | 
1 | 
0 | 
0 | 
| T162 | 
13288 | 
1 | 
0 | 
0 | 
| T163 | 
23122 | 
1 | 
0 | 
0 | 
| T169 | 
21420 | 
1 | 
0 | 
0 | 
| T170 | 
101769 | 
1 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo_err_update_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T101 T103 T104 
Cond Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo_err_update_sync
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T101,T103,T104 | 
| 1 | 0 | Covered | T101,T103,T104 | 
| 1 | 1 | Covered | T101,T105,T173 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T101,T103,T104 | 
| 1 | 0 | Covered | T101,T105,T173 | 
| 1 | 1 | Covered | T101,T103,T104 | 
Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo_err_update_sync
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo_err_update_sync
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
33 | 
0 | 
0 | 
| T101 | 
13224 | 
3 | 
0 | 
0 | 
| T103 | 
10349 | 
1 | 
0 | 
0 | 
| T104 | 
4599 | 
1 | 
0 | 
0 | 
| T105 | 
9607 | 
5 | 
0 | 
0 | 
| T106 | 
10670 | 
1 | 
0 | 
0 | 
| T161 | 
8069 | 
1 | 
0 | 
0 | 
| T162 | 
6643 | 
2 | 
0 | 
0 | 
| T169 | 
5141 | 
1 | 
0 | 
0 | 
| T170 | 
5088 | 
1 | 
0 | 
0 | 
| T174 | 
14165 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
93713926 | 
33 | 
0 | 
0 | 
| T101 | 
13224 | 
3 | 
0 | 
0 | 
| T103 | 
44998 | 
1 | 
0 | 
0 | 
| T104 | 
19996 | 
1 | 
0 | 
0 | 
| T105 | 
19215 | 
5 | 
0 | 
0 | 
| T106 | 
14040 | 
1 | 
0 | 
0 | 
| T161 | 
62068 | 
1 | 
0 | 
0 | 
| T162 | 
13288 | 
2 | 
0 | 
0 | 
| T169 | 
21420 | 
1 | 
0 | 
0 | 
| T170 | 
101769 | 
1 | 
0 | 
0 | 
| T174 | 
14165 | 
1 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi_err_update_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T102 T104 T105 
Cond Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi_err_update_sync
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T102,T104,T105 | 
| 1 | 0 | Covered | T102,T104,T105 | 
| 1 | 1 | Covered | T161,T172,T166 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T102,T104,T105 | 
| 1 | 0 | Covered | T161,T172,T166 | 
| 1 | 1 | Covered | T102,T104,T105 | 
Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi_err_update_sync
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi_err_update_sync
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
29 | 
0 | 
0 | 
| T102 | 
5221 | 
2 | 
0 | 
0 | 
| T104 | 
4599 | 
1 | 
0 | 
0 | 
| T105 | 
9607 | 
1 | 
0 | 
0 | 
| T107 | 
10423 | 
1 | 
0 | 
0 | 
| T161 | 
8069 | 
2 | 
0 | 
0 | 
| T162 | 
6643 | 
1 | 
0 | 
0 | 
| T163 | 
8093 | 
2 | 
0 | 
0 | 
| T165 | 
9660 | 
1 | 
0 | 
0 | 
| T169 | 
5141 | 
1 | 
0 | 
0 | 
| T174 | 
14165 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
44974733 | 
29 | 
0 | 
0 | 
| T102 | 
22783 | 
2 | 
0 | 
0 | 
| T104 | 
9598 | 
1 | 
0 | 
0 | 
| T105 | 
9223 | 
1 | 
0 | 
0 | 
| T107 | 
22742 | 
1 | 
0 | 
0 | 
| T161 | 
29793 | 
2 | 
0 | 
0 | 
| T162 | 
6377 | 
1 | 
0 | 
0 | 
| T163 | 
11099 | 
2 | 
0 | 
0 | 
| T165 | 
9463 | 
1 | 
0 | 
0 | 
| T169 | 
10282 | 
1 | 
0 | 
0 | 
| T174 | 
6799 | 
1 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo_err_update_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T100 T102 T103 
Cond Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo_err_update_sync
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T102,T103 | 
| 1 | 0 | Covered | T100,T102,T103 | 
| 1 | 1 | Covered | T161,T172,T166 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T100,T102,T103 | 
| 1 | 0 | Covered | T161,T172,T166 | 
| 1 | 1 | Covered | T100,T102,T103 | 
Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo_err_update_sync
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo_err_update_sync
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
38949284 | 
37 | 
0 | 
0 | 
| T100 | 
3364 | 
1 | 
0 | 
0 | 
| T102 | 
5221 | 
3 | 
0 | 
0 | 
| T103 | 
10349 | 
1 | 
0 | 
0 | 
| T104 | 
4599 | 
1 | 
0 | 
0 | 
| T105 | 
9607 | 
2 | 
0 | 
0 | 
| T106 | 
10670 | 
1 | 
0 | 
0 | 
| T108 | 
13292 | 
1 | 
0 | 
0 | 
| T161 | 
8069 | 
2 | 
0 | 
0 | 
| T162 | 
6643 | 
1 | 
0 | 
0 | 
| T163 | 
8093 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
44974733 | 
37 | 
0 | 
0 | 
| T100 | 
6728 | 
1 | 
0 | 
0 | 
| T102 | 
22783 | 
3 | 
0 | 
0 | 
| T103 | 
21600 | 
1 | 
0 | 
0 | 
| T104 | 
9598 | 
1 | 
0 | 
0 | 
| T105 | 
9223 | 
2 | 
0 | 
0 | 
| T106 | 
6739 | 
1 | 
0 | 
0 | 
| T108 | 
25521 | 
1 | 
0 | 
0 | 
| T161 | 
29793 | 
2 | 
0 | 
0 | 
| T162 | 
6377 | 
1 | 
0 | 
0 | 
| T163 | 
11099 | 
2 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_io_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T3 T51 
Cond Coverage for Instance : tb.dut.u_io_meas.u_meas.u_sync_ref
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T51 | 
| 1 | 0 | Covered | T1,T3,T51 | 
| 1 | 1 | Covered | T1,T3,T51 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T51 | 
| 1 | 0 | Covered | T1,T3,T51 | 
| 1 | 1 | Covered | T1,T3,T51 | 
Branch Coverage for Instance : tb.dut.u_io_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_io_meas.u_meas.u_sync_ref
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
82648253 | 
41822 | 
0 | 
0 | 
| T1 | 
42468 | 
18 | 
0 | 
0 | 
| T2 | 
46373 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
20 | 
0 | 
0 | 
| T8 | 
0 | 
12 | 
0 | 
0 | 
| T9 | 
0 | 
76 | 
0 | 
0 | 
| T11 | 
0 | 
65 | 
0 | 
0 | 
| T18 | 
3702 | 
0 | 
0 | 
0 | 
| T19 | 
3202 | 
0 | 
0 | 
0 | 
| T20 | 
5671 | 
0 | 
0 | 
0 | 
| T21 | 
16388 | 
0 | 
0 | 
0 | 
| T22 | 
1683 | 
0 | 
0 | 
0 | 
| T23 | 
1781 | 
0 | 
0 | 
0 | 
| T24 | 
2432 | 
0 | 
0 | 
0 | 
| T25 | 
3609 | 
0 | 
0 | 
0 | 
| T51 | 
0 | 
11 | 
0 | 
0 | 
| T57 | 
0 | 
142 | 
0 | 
0 | 
| T62 | 
0 | 
104 | 
0 | 
0 | 
| T63 | 
0 | 
4 | 
0 | 
0 | 
| T64 | 
0 | 
46 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1172880 | 
40720 | 
0 | 
0 | 
| T1 | 
99 | 
18 | 
0 | 
0 | 
| T2 | 
109 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
20 | 
0 | 
0 | 
| T8 | 
0 | 
12 | 
0 | 
0 | 
| T9 | 
0 | 
76 | 
0 | 
0 | 
| T11 | 
0 | 
65 | 
0 | 
0 | 
| T18 | 
270 | 
0 | 
0 | 
0 | 
| T19 | 
233 | 
0 | 
0 | 
0 | 
| T20 | 
413 | 
0 | 
0 | 
0 | 
| T21 | 
1195 | 
0 | 
0 | 
0 | 
| T22 | 
123 | 
0 | 
0 | 
0 | 
| T23 | 
130 | 
0 | 
0 | 
0 | 
| T24 | 
177 | 
0 | 
0 | 
0 | 
| T25 | 
263 | 
0 | 
0 | 
0 | 
| T51 | 
0 | 
11 | 
0 | 
0 | 
| T57 | 
0 | 
142 | 
0 | 
0 | 
| T62 | 
0 | 
104 | 
0 | 
0 | 
| T63 | 
0 | 
4 | 
0 | 
0 | 
| T64 | 
0 | 
46 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_io_div2_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T3 T51 
Cond Coverage for Instance : tb.dut.u_io_div2_meas.u_meas.u_sync_ref
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T51 | 
| 1 | 0 | Covered | T1,T3,T51 | 
| 1 | 1 | Covered | T1,T3,T51 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T51 | 
| 1 | 0 | Covered | T1,T3,T51 | 
| 1 | 1 | Covered | T1,T3,T51 | 
Branch Coverage for Instance : tb.dut.u_io_div2_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_io_div2_meas.u_meas.u_sync_ref
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40333590 | 
41423 | 
0 | 
0 | 
| T1 | 
21201 | 
18 | 
0 | 
0 | 
| T2 | 
13525 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
20 | 
0 | 
0 | 
| T8 | 
0 | 
12 | 
0 | 
0 | 
| T9 | 
0 | 
76 | 
0 | 
0 | 
| T11 | 
0 | 
65 | 
0 | 
0 | 
| T18 | 
1994 | 
0 | 
0 | 
0 | 
| T19 | 
1541 | 
0 | 
0 | 
0 | 
| T20 | 
3331 | 
0 | 
0 | 
0 | 
| T21 | 
6005 | 
0 | 
0 | 
0 | 
| T22 | 
781 | 
0 | 
0 | 
0 | 
| T23 | 
858 | 
0 | 
0 | 
0 | 
| T24 | 
1149 | 
0 | 
0 | 
0 | 
| T25 | 
1765 | 
0 | 
0 | 
0 | 
| T51 | 
0 | 
11 | 
0 | 
0 | 
| T57 | 
0 | 
142 | 
0 | 
0 | 
| T62 | 
0 | 
104 | 
0 | 
0 | 
| T63 | 
0 | 
4 | 
0 | 
0 | 
| T64 | 
0 | 
46 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1172880 | 
40357 | 
0 | 
0 | 
| T1 | 
99 | 
18 | 
0 | 
0 | 
| T2 | 
109 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
20 | 
0 | 
0 | 
| T8 | 
0 | 
12 | 
0 | 
0 | 
| T9 | 
0 | 
76 | 
0 | 
0 | 
| T11 | 
0 | 
65 | 
0 | 
0 | 
| T18 | 
270 | 
0 | 
0 | 
0 | 
| T19 | 
233 | 
0 | 
0 | 
0 | 
| T20 | 
413 | 
0 | 
0 | 
0 | 
| T21 | 
1195 | 
0 | 
0 | 
0 | 
| T22 | 
123 | 
0 | 
0 | 
0 | 
| T23 | 
130 | 
0 | 
0 | 
0 | 
| T24 | 
177 | 
0 | 
0 | 
0 | 
| T25 | 
263 | 
0 | 
0 | 
0 | 
| T51 | 
0 | 
11 | 
0 | 
0 | 
| T57 | 
0 | 
142 | 
0 | 
0 | 
| T62 | 
0 | 
104 | 
0 | 
0 | 
| T63 | 
0 | 
4 | 
0 | 
0 | 
| T64 | 
0 | 
46 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_io_div4_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T3 T51 
Cond Coverage for Instance : tb.dut.u_io_div4_meas.u_meas.u_sync_ref
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T51 | 
| 1 | 0 | Covered | T1,T3,T51 | 
| 1 | 1 | Covered | T1,T3,T51 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T51 | 
| 1 | 0 | Covered | T1,T3,T51 | 
| 1 | 1 | Covered | T1,T3,T51 | 
Branch Coverage for Instance : tb.dut.u_io_div4_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_io_div4_meas.u_meas.u_sync_ref
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
20166389 | 
40893 | 
0 | 
0 | 
| T1 | 
10601 | 
18 | 
0 | 
0 | 
| T2 | 
6761 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
20 | 
0 | 
0 | 
| T8 | 
0 | 
12 | 
0 | 
0 | 
| T9 | 
0 | 
76 | 
0 | 
0 | 
| T11 | 
0 | 
65 | 
0 | 
0 | 
| T18 | 
997 | 
0 | 
0 | 
0 | 
| T19 | 
770 | 
0 | 
0 | 
0 | 
| T20 | 
1665 | 
0 | 
0 | 
0 | 
| T21 | 
3004 | 
0 | 
0 | 
0 | 
| T22 | 
391 | 
0 | 
0 | 
0 | 
| T23 | 
429 | 
0 | 
0 | 
0 | 
| T24 | 
574 | 
0 | 
0 | 
0 | 
| T25 | 
882 | 
0 | 
0 | 
0 | 
| T51 | 
0 | 
11 | 
0 | 
0 | 
| T57 | 
0 | 
142 | 
0 | 
0 | 
| T62 | 
0 | 
104 | 
0 | 
0 | 
| T63 | 
0 | 
4 | 
0 | 
0 | 
| T64 | 
0 | 
46 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1172880 | 
39870 | 
0 | 
0 | 
| T1 | 
99 | 
18 | 
0 | 
0 | 
| T2 | 
109 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
20 | 
0 | 
0 | 
| T8 | 
0 | 
12 | 
0 | 
0 | 
| T9 | 
0 | 
76 | 
0 | 
0 | 
| T11 | 
0 | 
65 | 
0 | 
0 | 
| T18 | 
270 | 
0 | 
0 | 
0 | 
| T19 | 
233 | 
0 | 
0 | 
0 | 
| T20 | 
413 | 
0 | 
0 | 
0 | 
| T21 | 
1195 | 
0 | 
0 | 
0 | 
| T22 | 
123 | 
0 | 
0 | 
0 | 
| T23 | 
130 | 
0 | 
0 | 
0 | 
| T24 | 
177 | 
0 | 
0 | 
0 | 
| T25 | 
263 | 
0 | 
0 | 
0 | 
| T51 | 
0 | 
11 | 
0 | 
0 | 
| T57 | 
0 | 
142 | 
0 | 
0 | 
| T62 | 
0 | 
104 | 
0 | 
0 | 
| T63 | 
0 | 
4 | 
0 | 
0 | 
| T64 | 
0 | 
46 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_main_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T3 T51 
Cond Coverage for Instance : tb.dut.u_main_meas.u_meas.u_sync_ref
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T51 | 
| 1 | 0 | Covered | T1,T3,T51 | 
| 1 | 1 | Covered | T1,T3,T51 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T51 | 
| 1 | 0 | Covered | T1,T3,T51 | 
| 1 | 1 | Covered | T1,T3,T51 | 
Branch Coverage for Instance : tb.dut.u_main_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_main_meas.u_meas.u_sync_ref
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
91151739 | 
50088 | 
0 | 
0 | 
| T1 | 
44240 | 
18 | 
0 | 
0 | 
| T2 | 
48308 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
80 | 
0 | 
0 | 
| T8 | 
0 | 
12 | 
0 | 
0 | 
| T9 | 
0 | 
76 | 
0 | 
0 | 
| T11 | 
0 | 
65 | 
0 | 
0 | 
| T18 | 
3856 | 
0 | 
0 | 
0 | 
| T19 | 
3336 | 
0 | 
0 | 
0 | 
| T20 | 
5907 | 
0 | 
0 | 
0 | 
| T21 | 
17072 | 
0 | 
0 | 
0 | 
| T22 | 
1753 | 
0 | 
0 | 
0 | 
| T23 | 
1856 | 
0 | 
0 | 
0 | 
| T24 | 
2534 | 
0 | 
0 | 
0 | 
| T25 | 
3760 | 
0 | 
0 | 
0 | 
| T51 | 
0 | 
47 | 
0 | 
0 | 
| T57 | 
0 | 
166 | 
0 | 
0 | 
| T62 | 
0 | 
164 | 
0 | 
0 | 
| T63 | 
0 | 
16 | 
0 | 
0 | 
| T64 | 
0 | 
82 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1256885 | 
49755 | 
0 | 
0 | 
| T1 | 
99 | 
18 | 
0 | 
0 | 
| T2 | 
109 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
80 | 
0 | 
0 | 
| T8 | 
0 | 
12 | 
0 | 
0 | 
| T9 | 
0 | 
76 | 
0 | 
0 | 
| T11 | 
0 | 
65 | 
0 | 
0 | 
| T18 | 
270 | 
0 | 
0 | 
0 | 
| T19 | 
233 | 
0 | 
0 | 
0 | 
| T20 | 
413 | 
0 | 
0 | 
0 | 
| T21 | 
1195 | 
0 | 
0 | 
0 | 
| T22 | 
123 | 
0 | 
0 | 
0 | 
| T23 | 
130 | 
0 | 
0 | 
0 | 
| T24 | 
177 | 
0 | 
0 | 
0 | 
| T25 | 
263 | 
0 | 
0 | 
0 | 
| T51 | 
0 | 
47 | 
0 | 
0 | 
| T57 | 
0 | 
166 | 
0 | 
0 | 
| T62 | 
0 | 
164 | 
0 | 
0 | 
| T63 | 
0 | 
16 | 
0 | 
0 | 
| T64 | 
0 | 
82 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_usb_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T3 T51 
Cond Coverage for Instance : tb.dut.u_usb_meas.u_meas.u_sync_ref
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T51 | 
| 1 | 0 | Covered | T1,T3,T51 | 
| 1 | 1 | Covered | T1,T3,T51 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T51 | 
| 1 | 0 | Covered | T1,T3,T51 | 
| 1 | 1 | Covered | T1,T3,T51 | 
Branch Coverage for Instance : tb.dut.u_usb_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
4 | 
4 | 
100.00 | 
| IF | 
31 | 
2 | 
2 | 
100.00 | 
| IF | 
89 | 
2 | 
2 | 
100.00 | 
31             if (!rst_src_ni) begin
               -1-  
32               src_level <= 1'b0;
                 ==>
33             end else begin
34               src_level <= src_level ^ src_pulse_i;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
89             if (!rst_dst_ni) begin
               -1-  
90               dst_level_q <= 1'b0;
                 ==>
91             end else begin
92               dst_level_q <= dst_level;
                 ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T5,T6 | 
| 0 | 
Covered | 
T4,T5,T6 | 
Assert Coverage for Instance : tb.dut.u_usb_meas.u_meas.u_sync_ref
Assertion Details
DstPulseCheck_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
43744900 | 
49375 | 
0 | 
0 | 
| T1 | 
21235 | 
18 | 
0 | 
0 | 
| T2 | 
23187 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
80 | 
0 | 
0 | 
| T8 | 
0 | 
12 | 
0 | 
0 | 
| T9 | 
0 | 
76 | 
0 | 
0 | 
| T11 | 
0 | 
65 | 
0 | 
0 | 
| T18 | 
1851 | 
0 | 
0 | 
0 | 
| T19 | 
1601 | 
0 | 
0 | 
0 | 
| T20 | 
2835 | 
0 | 
0 | 
0 | 
| T21 | 
8194 | 
0 | 
0 | 
0 | 
| T22 | 
841 | 
0 | 
0 | 
0 | 
| T23 | 
891 | 
0 | 
0 | 
0 | 
| T24 | 
1216 | 
0 | 
0 | 
0 | 
| T25 | 
1805 | 
0 | 
0 | 
0 | 
| T51 | 
0 | 
47 | 
0 | 
0 | 
| T57 | 
0 | 
118 | 
0 | 
0 | 
| T62 | 
0 | 
176 | 
0 | 
0 | 
| T63 | 
0 | 
16 | 
0 | 
0 | 
| T64 | 
0 | 
82 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1294214 | 
49196 | 
0 | 
0 | 
| T1 | 
99 | 
18 | 
0 | 
0 | 
| T2 | 
109 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
80 | 
0 | 
0 | 
| T8 | 
0 | 
12 | 
0 | 
0 | 
| T9 | 
0 | 
76 | 
0 | 
0 | 
| T11 | 
0 | 
65 | 
0 | 
0 | 
| T18 | 
270 | 
0 | 
0 | 
0 | 
| T19 | 
233 | 
0 | 
0 | 
0 | 
| T20 | 
413 | 
0 | 
0 | 
0 | 
| T21 | 
1195 | 
0 | 
0 | 
0 | 
| T22 | 
123 | 
0 | 
0 | 
0 | 
| T23 | 
130 | 
0 | 
0 | 
0 | 
| T24 | 
177 | 
0 | 
0 | 
0 | 
| T25 | 
263 | 
0 | 
0 | 
0 | 
| T51 | 
0 | 
47 | 
0 | 
0 | 
| T57 | 
0 | 
118 | 
0 | 
0 | 
| T62 | 
0 | 
176 | 
0 | 
0 | 
| T63 | 
0 | 
16 | 
0 | 
0 | 
| T64 | 
0 | 
82 | 
0 | 
0 |