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 | 
1302579945 | 
431776 | 
0 | 
0 | 
| T1 | 
212315 | 
252 | 
0 | 
0 | 
| T2 | 
632030 | 
336 | 
0 | 
0 | 
| T3 | 
0 | 
86 | 
0 | 
0 | 
| T10 | 
0 | 
280 | 
0 | 
0 | 
| T11 | 
0 | 
340 | 
0 | 
0 | 
| T12 | 
0 | 
140 | 
0 | 
0 | 
| T13 | 
0 | 
70 | 
0 | 
0 | 
| T21 | 
6478 | 
0 | 
0 | 
0 | 
| T22 | 
15114 | 
0 | 
0 | 
0 | 
| T23 | 
8252 | 
0 | 
0 | 
0 | 
| T24 | 
7154 | 
0 | 
0 | 
0 | 
| T25 | 
8696 | 
0 | 
0 | 
0 | 
| T26 | 
80225 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
123 | 
0 | 
0 | 
| T31 | 
0 | 
200 | 
0 | 
0 | 
| T41 | 
0 | 
304 | 
0 | 
0 | 
| T42 | 
0 | 
396 | 
0 | 
0 | 
| T50 | 
0 | 
456 | 
0 | 
0 | 
| T53 | 
64768 | 
0 | 
0 | 
0 | 
| T54 | 
8986 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
68 | 
0 | 
0 | 
| T56 | 
0 | 
52 | 
0 | 
0 | 
| T71 | 
19282 | 
3 | 
0 | 
0 | 
| T73 | 
21686 | 
1 | 
0 | 
0 | 
| T74 | 
5137 | 
0 | 
0 | 
0 | 
| T76 | 
2921 | 
1 | 
0 | 
0 | 
| T77 | 
4591 | 
1 | 
0 | 
0 | 
| T79 | 
4924 | 
4 | 
0 | 
0 | 
| T138 | 
13702 | 
2 | 
0 | 
0 | 
| T139 | 
13932 | 
2 | 
0 | 
0 | 
| T140 | 
7648 | 
0 | 
0 | 
0 | 
| T141 | 
11082 | 
0 | 
0 | 
0 | 
| T142 | 
16096 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1114395157 | 
426740 | 
0 | 
0 | 
| T1 | 
116584 | 
252 | 
0 | 
0 | 
| T2 | 
316541 | 
336 | 
0 | 
0 | 
| T3 | 
0 | 
86 | 
0 | 
0 | 
| T10 | 
0 | 
280 | 
0 | 
0 | 
| T11 | 
0 | 
340 | 
0 | 
0 | 
| T12 | 
0 | 
140 | 
0 | 
0 | 
| T13 | 
0 | 
70 | 
0 | 
0 | 
| T21 | 
3670 | 
0 | 
0 | 
0 | 
| T22 | 
6328 | 
0 | 
0 | 
0 | 
| T23 | 
5115 | 
0 | 
0 | 
0 | 
| T24 | 
4195 | 
0 | 
0 | 
0 | 
| T25 | 
5085 | 
0 | 
0 | 
0 | 
| T26 | 
18686 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
123 | 
0 | 
0 | 
| T31 | 
0 | 
200 | 
0 | 
0 | 
| T41 | 
0 | 
304 | 
0 | 
0 | 
| T42 | 
0 | 
396 | 
0 | 
0 | 
| T50 | 
0 | 
456 | 
0 | 
0 | 
| T53 | 
36396 | 
0 | 
0 | 
0 | 
| T54 | 
5297 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
68 | 
0 | 
0 | 
| T56 | 
0 | 
52 | 
0 | 
0 | 
| T71 | 
16478 | 
3 | 
0 | 
0 | 
| T73 | 
39930 | 
1 | 
0 | 
0 | 
| T74 | 
2631 | 
0 | 
0 | 
0 | 
| T76 | 
5293 | 
1 | 
0 | 
0 | 
| T77 | 
3967 | 
1 | 
0 | 
0 | 
| T79 | 
9206 | 
4 | 
0 | 
0 | 
| T138 | 
64622 | 
2 | 
0 | 
0 | 
| T139 | 
14262 | 
2 | 
0 | 
0 | 
| T140 | 
6348 | 
0 | 
0 | 
0 | 
| T141 | 
16436 | 
0 | 
0 | 
0 | 
| T142 | 
33328 | 
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 | 
70064433 | 
10767 | 
0 | 
0 | 
| T1 | 
41879 | 
8 | 
0 | 
0 | 
| T2 | 
133983 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
28 | 
0 | 
0 | 
| T13 | 
0 | 
14 | 
0 | 
0 | 
| T21 | 
1426 | 
0 | 
0 | 
0 | 
| T22 | 
3446 | 
0 | 
0 | 
0 | 
| T23 | 
1764 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
20908 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
24 | 
0 | 
0 | 
| T31 | 
0 | 
40 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
15498 | 
0 | 
0 | 
0 | 
| T54 | 
1895 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40020067 | 
10767 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
28 | 
0 | 
0 | 
| T13 | 
0 | 
14 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
24 | 
0 | 
0 | 
| T31 | 
0 | 
40 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
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 | 
70064433 | 
16761 | 
0 | 
0 | 
| T1 | 
41879 | 
8 | 
0 | 
0 | 
| T2 | 
133983 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1426 | 
0 | 
0 | 
0 | 
| T22 | 
3446 | 
0 | 
0 | 
0 | 
| T23 | 
1764 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
20908 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
15498 | 
0 | 
0 | 
0 | 
| T54 | 
1895 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40020067 | 
16776 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
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 | 
40020067 | 
16752 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
70064433 | 
16766 | 
0 | 
0 | 
| T1 | 
41879 | 
8 | 
0 | 
0 | 
| T2 | 
133983 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1426 | 
0 | 
0 | 
0 | 
| T22 | 
3446 | 
0 | 
0 | 
0 | 
| T23 | 
1764 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
20908 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
15498 | 
0 | 
0 | 
0 | 
| T54 | 
1895 | 
0 | 
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 | 
34075430 | 
10767 | 
0 | 
0 | 
| T1 | 
20906 | 
8 | 
0 | 
0 | 
| T2 | 
66931 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
28 | 
0 | 
0 | 
| T13 | 
0 | 
14 | 
0 | 
0 | 
| T21 | 
646 | 
0 | 
0 | 
0 | 
| T22 | 
1806 | 
0 | 
0 | 
0 | 
| T23 | 
815 | 
0 | 
0 | 
0 | 
| T24 | 
729 | 
0 | 
0 | 
0 | 
| T25 | 
895 | 
0 | 
0 | 
0 | 
| T26 | 
10414 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
24 | 
0 | 
0 | 
| T31 | 
0 | 
40 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
5728 | 
0 | 
0 | 
0 | 
| T54 | 
915 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40020067 | 
10767 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
28 | 
0 | 
0 | 
| T13 | 
0 | 
14 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
24 | 
0 | 
0 | 
| T31 | 
0 | 
40 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
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 | 
34075430 | 
16778 | 
0 | 
0 | 
| T1 | 
20906 | 
8 | 
0 | 
0 | 
| T2 | 
66931 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
646 | 
0 | 
0 | 
0 | 
| T22 | 
1806 | 
0 | 
0 | 
0 | 
| T23 | 
815 | 
0 | 
0 | 
0 | 
| T24 | 
729 | 
0 | 
0 | 
0 | 
| T25 | 
895 | 
0 | 
0 | 
0 | 
| T26 | 
10414 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
5728 | 
0 | 
0 | 
0 | 
| T54 | 
915 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40020067 | 
16800 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
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 | 
40020067 | 
16766 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
34075430 | 
16779 | 
0 | 
0 | 
| T1 | 
20906 | 
8 | 
0 | 
0 | 
| T2 | 
66931 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
646 | 
0 | 
0 | 
0 | 
| T22 | 
1806 | 
0 | 
0 | 
0 | 
| T23 | 
815 | 
0 | 
0 | 
0 | 
| T24 | 
729 | 
0 | 
0 | 
0 | 
| T25 | 
895 | 
0 | 
0 | 
0 | 
| T26 | 
10414 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
5728 | 
0 | 
0 | 
0 | 
| T54 | 
915 | 
0 | 
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 | 
17037310 | 
10767 | 
0 | 
0 | 
| T1 | 
10453 | 
8 | 
0 | 
0 | 
| T2 | 
33466 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
28 | 
0 | 
0 | 
| T13 | 
0 | 
14 | 
0 | 
0 | 
| T21 | 
323 | 
0 | 
0 | 
0 | 
| T22 | 
902 | 
0 | 
0 | 
0 | 
| T23 | 
407 | 
0 | 
0 | 
0 | 
| T24 | 
364 | 
0 | 
0 | 
0 | 
| T25 | 
447 | 
0 | 
0 | 
0 | 
| T26 | 
5207 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
24 | 
0 | 
0 | 
| T31 | 
0 | 
40 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
2865 | 
0 | 
0 | 
0 | 
| T54 | 
457 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40020067 | 
10767 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
28 | 
0 | 
0 | 
| T13 | 
0 | 
14 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
24 | 
0 | 
0 | 
| T31 | 
0 | 
40 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
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 | 
17037310 | 
16799 | 
0 | 
0 | 
| T1 | 
10453 | 
8 | 
0 | 
0 | 
| T2 | 
33466 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
323 | 
0 | 
0 | 
0 | 
| T22 | 
902 | 
0 | 
0 | 
0 | 
| T23 | 
407 | 
0 | 
0 | 
0 | 
| T24 | 
364 | 
0 | 
0 | 
0 | 
| T25 | 
447 | 
0 | 
0 | 
0 | 
| T26 | 
5207 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
2865 | 
0 | 
0 | 
0 | 
| T54 | 
457 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40020067 | 
16827 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
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 | 
40020067 | 
16795 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
17037310 | 
16803 | 
0 | 
0 | 
| T1 | 
10453 | 
8 | 
0 | 
0 | 
| T2 | 
33466 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
323 | 
0 | 
0 | 
0 | 
| T22 | 
902 | 
0 | 
0 | 
0 | 
| T23 | 
407 | 
0 | 
0 | 
0 | 
| T24 | 
364 | 
0 | 
0 | 
0 | 
| T25 | 
447 | 
0 | 
0 | 
0 | 
| T26 | 
5207 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
2865 | 
0 | 
0 | 
0 | 
| T54 | 
457 | 
0 | 
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 | 
78012897 | 
10767 | 
0 | 
0 | 
| T1 | 
49626 | 
8 | 
0 | 
0 | 
| T2 | 
139571 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
28 | 
0 | 
0 | 
| T13 | 
0 | 
14 | 
0 | 
0 | 
| T21 | 
1485 | 
0 | 
0 | 
0 | 
| T22 | 
3589 | 
0 | 
0 | 
0 | 
| T23 | 
1762 | 
0 | 
0 | 
0 | 
| T24 | 
1577 | 
0 | 
0 | 
0 | 
| T25 | 
1906 | 
0 | 
0 | 
0 | 
| T26 | 
21780 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
24 | 
0 | 
0 | 
| T31 | 
0 | 
40 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
16145 | 
0 | 
0 | 
0 | 
| T54 | 
1974 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40020067 | 
10767 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
28 | 
0 | 
0 | 
| T13 | 
0 | 
14 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
24 | 
0 | 
0 | 
| T31 | 
0 | 
40 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
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 | 
78012897 | 
16831 | 
0 | 
0 | 
| T1 | 
49626 | 
8 | 
0 | 
0 | 
| T2 | 
139571 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1485 | 
0 | 
0 | 
0 | 
| T22 | 
3589 | 
0 | 
0 | 
0 | 
| T23 | 
1762 | 
0 | 
0 | 
0 | 
| T24 | 
1577 | 
0 | 
0 | 
0 | 
| T25 | 
1906 | 
0 | 
0 | 
0 | 
| T26 | 
21780 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
16145 | 
0 | 
0 | 
0 | 
| T54 | 
1974 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40020067 | 
16841 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
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 | 
40020067 | 
16818 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
78012897 | 
16835 | 
0 | 
0 | 
| T1 | 
49626 | 
8 | 
0 | 
0 | 
| T2 | 
139571 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1485 | 
0 | 
0 | 
0 | 
| T22 | 
3589 | 
0 | 
0 | 
0 | 
| T23 | 
1762 | 
0 | 
0 | 
0 | 
| T24 | 
1577 | 
0 | 
0 | 
0 | 
| T25 | 
1906 | 
0 | 
0 | 
0 | 
| T26 | 
21780 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
16145 | 
0 | 
0 | 
0 | 
| T54 | 
1974 | 
0 | 
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,T2,T3 | 
| 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 | 
37309282 | 
10369 | 
0 | 
0 | 
| T1 | 
20939 | 
8 | 
0 | 
0 | 
| T2 | 
66995 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
14 | 
0 | 
0 | 
| T13 | 
0 | 
7 | 
0 | 
0 | 
| T21 | 
713 | 
0 | 
0 | 
0 | 
| T22 | 
1722 | 
0 | 
0 | 
0 | 
| T23 | 
855 | 
0 | 
0 | 
0 | 
| T24 | 
756 | 
0 | 
0 | 
0 | 
| T25 | 
914 | 
0 | 
0 | 
0 | 
| T26 | 
10455 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
24 | 
0 | 
0 | 
| T31 | 
0 | 
20 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
7749 | 
0 | 
0 | 
0 | 
| T54 | 
948 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40020067 | 
10767 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
28 | 
0 | 
0 | 
| T13 | 
0 | 
14 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
24 | 
0 | 
0 | 
| T31 | 
0 | 
40 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
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 | 
37309282 | 
16564 | 
0 | 
0 | 
| T1 | 
20939 | 
8 | 
0 | 
0 | 
| T2 | 
66995 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
21 | 
0 | 
0 | 
| T21 | 
713 | 
0 | 
0 | 
0 | 
| T22 | 
1722 | 
0 | 
0 | 
0 | 
| T23 | 
855 | 
0 | 
0 | 
0 | 
| T24 | 
756 | 
0 | 
0 | 
0 | 
| T25 | 
914 | 
0 | 
0 | 
0 | 
| T26 | 
10455 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
7749 | 
0 | 
0 | 
0 | 
| T54 | 
948 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40020067 | 
16741 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
28 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
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 | 
40020067 | 
16418 | 
0 | 
0 | 
| T1 | 
47639 | 
8 | 
0 | 
0 | 
| T2 | 
124217 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
42 | 
0 | 
0 | 
| T13 | 
0 | 
21 | 
0 | 
0 | 
| T21 | 
1306 | 
0 | 
0 | 
0 | 
| T22 | 
1759 | 
0 | 
0 | 
0 | 
| T23 | 
1874 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
1088 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
46 | 
0 | 
0 | 
| T31 | 
0 | 
60 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
13076 | 
0 | 
0 | 
0 | 
| T54 | 
1915 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
37309282 | 
16592 | 
0 | 
0 | 
| T1 | 
20939 | 
8 | 
0 | 
0 | 
| T2 | 
66995 | 
24 | 
0 | 
0 | 
| T3 | 
0 | 
6 | 
0 | 
0 | 
| T10 | 
0 | 
24 | 
0 | 
0 | 
| T12 | 
0 | 
56 | 
0 | 
0 | 
| T13 | 
0 | 
21 | 
0 | 
0 | 
| T21 | 
713 | 
0 | 
0 | 
0 | 
| T22 | 
1722 | 
0 | 
0 | 
0 | 
| T23 | 
855 | 
0 | 
0 | 
0 | 
| T24 | 
756 | 
0 | 
0 | 
0 | 
| T25 | 
914 | 
0 | 
0 | 
0 | 
| T26 | 
10455 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
48 | 
0 | 
0 | 
| T31 | 
0 | 
80 | 
0 | 
0 | 
| T41 | 
0 | 
12 | 
0 | 
0 | 
| T42 | 
0 | 
16 | 
0 | 
0 | 
| T53 | 
7749 | 
0 | 
0 | 
0 | 
| T54 | 
948 | 
0 | 
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:       T71 T73 T75 
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 | T71,T73,T75 | 
| 1 | 0 | Covered | T71,T73,T75 | 
| 1 | 1 | Covered | T79,T143 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T71,T73,T75 | 
| 1 | 0 | Covered | T79,T143 | 
| 1 | 1 | Covered | T71,T73,T75 | 
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 | 
40020067 | 
30 | 
0 | 
0 | 
| T71 | 
9641 | 
2 | 
0 | 
0 | 
| T73 | 
10843 | 
1 | 
0 | 
0 | 
| T75 | 
14040 | 
1 | 
0 | 
0 | 
| T76 | 
2921 | 
2 | 
0 | 
0 | 
| T78 | 
2812 | 
1 | 
0 | 
0 | 
| T79 | 
2462 | 
2 | 
0 | 
0 | 
| T139 | 
6966 | 
1 | 
0 | 
0 | 
| T144 | 
9903 | 
2 | 
0 | 
0 | 
| T145 | 
3247 | 
1 | 
0 | 
0 | 
| T146 | 
13766 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
70064433 | 
30 | 
0 | 
0 | 
| T71 | 
18511 | 
2 | 
0 | 
0 | 
| T73 | 
41637 | 
1 | 
0 | 
0 | 
| T75 | 
14187 | 
1 | 
0 | 
0 | 
| T76 | 
11686 | 
2 | 
0 | 
0 | 
| T78 | 
29998 | 
1 | 
0 | 
0 | 
| T79 | 
9846 | 
2 | 
0 | 
0 | 
| T139 | 
15921 | 
1 | 
0 | 
0 | 
| T144 | 
9903 | 
2 | 
0 | 
0 | 
| T145 | 
12468 | 
1 | 
0 | 
0 | 
| T146 | 
14058 | 
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:       T71 T73 T76 
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 | T71,T73,T76 | 
| 1 | 0 | Covered | T71,T73,T76 | 
| 1 | 1 | Covered | T147,T143 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T71,T73,T76 | 
| 1 | 0 | Covered | T147,T143 | 
| 1 | 1 | Covered | T71,T73,T76 | 
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 | 
40020067 | 
25 | 
0 | 
0 | 
| T71 | 
9641 | 
1 | 
0 | 
0 | 
| T73 | 
10843 | 
1 | 
0 | 
0 | 
| T76 | 
2921 | 
1 | 
0 | 
0 | 
| T79 | 
2462 | 
1 | 
0 | 
0 | 
| T141 | 
5541 | 
2 | 
0 | 
0 | 
| T142 | 
8048 | 
1 | 
0 | 
0 | 
| T144 | 
9903 | 
1 | 
0 | 
0 | 
| T146 | 
13766 | 
2 | 
0 | 
0 | 
| T147 | 
11120 | 
2 | 
0 | 
0 | 
| T148 | 
6167 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
70064433 | 
25 | 
0 | 
0 | 
| T71 | 
18511 | 
1 | 
0 | 
0 | 
| T73 | 
41637 | 
1 | 
0 | 
0 | 
| T76 | 
11686 | 
1 | 
0 | 
0 | 
| T79 | 
9846 | 
1 | 
0 | 
0 | 
| T141 | 
18343 | 
2 | 
0 | 
0 | 
| T142 | 
35119 | 
1 | 
0 | 
0 | 
| T144 | 
9903 | 
1 | 
0 | 
0 | 
| T146 | 
14058 | 
2 | 
0 | 
0 | 
| T147 | 
22241 | 
2 | 
0 | 
0 | 
| T148 | 
5920 | 
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:       T71 T73 T77 
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 | T71,T73,T77 | 
| 1 | 0 | Covered | T71,T73,T77 | 
| 1 | 1 | Covered | T79,T138,T149 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T71,T73,T77 | 
| 1 | 0 | Covered | T79,T138,T149 | 
| 1 | 1 | Covered | T71,T73,T77 | 
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 | 
40020067 | 
30 | 
0 | 
0 | 
| T71 | 
9641 | 
3 | 
0 | 
0 | 
| T73 | 
10843 | 
1 | 
0 | 
0 | 
| T76 | 
2921 | 
1 | 
0 | 
0 | 
| T77 | 
4591 | 
1 | 
0 | 
0 | 
| T79 | 
2462 | 
4 | 
0 | 
0 | 
| T138 | 
6851 | 
2 | 
0 | 
0 | 
| T139 | 
6966 | 
2 | 
0 | 
0 | 
| T140 | 
3824 | 
1 | 
0 | 
0 | 
| T141 | 
5541 | 
2 | 
0 | 
0 | 
| T142 | 
8048 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
34075430 | 
30 | 
0 | 
0 | 
| T71 | 
8239 | 
3 | 
0 | 
0 | 
| T73 | 
19965 | 
1 | 
0 | 
0 | 
| T76 | 
5293 | 
1 | 
0 | 
0 | 
| T77 | 
3967 | 
1 | 
0 | 
0 | 
| T79 | 
4603 | 
4 | 
0 | 
0 | 
| T138 | 
32311 | 
2 | 
0 | 
0 | 
| T139 | 
7131 | 
2 | 
0 | 
0 | 
| T140 | 
3174 | 
1 | 
0 | 
0 | 
| T141 | 
8218 | 
2 | 
0 | 
0 | 
| T142 | 
16664 | 
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:       T71 T73 T74 
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 | T71,T73,T74 | 
| 1 | 0 | Covered | T71,T73,T74 | 
| 1 | 1 | Covered | T73,T74,T79 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T71,T73,T74 | 
| 1 | 0 | Covered | T73,T74,T79 | 
| 1 | 1 | Covered | T71,T73,T74 | 
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 | 
40020067 | 
29 | 
0 | 
0 | 
| T71 | 
9641 | 
3 | 
0 | 
0 | 
| T73 | 
10843 | 
2 | 
0 | 
0 | 
| T74 | 
5137 | 
2 | 
0 | 
0 | 
| T79 | 
2462 | 
3 | 
0 | 
0 | 
| T138 | 
6851 | 
1 | 
0 | 
0 | 
| T139 | 
6966 | 
1 | 
0 | 
0 | 
| T140 | 
3824 | 
1 | 
0 | 
0 | 
| T141 | 
5541 | 
3 | 
0 | 
0 | 
| T142 | 
8048 | 
1 | 
0 | 
0 | 
| T149 | 
7848 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
34075430 | 
29 | 
0 | 
0 | 
| T71 | 
8239 | 
3 | 
0 | 
0 | 
| T73 | 
19965 | 
2 | 
0 | 
0 | 
| T74 | 
2631 | 
2 | 
0 | 
0 | 
| T79 | 
4603 | 
3 | 
0 | 
0 | 
| T138 | 
32311 | 
1 | 
0 | 
0 | 
| T139 | 
7131 | 
1 | 
0 | 
0 | 
| T140 | 
3174 | 
1 | 
0 | 
0 | 
| T141 | 
8218 | 
3 | 
0 | 
0 | 
| T142 | 
16664 | 
1 | 
0 | 
0 | 
| T149 | 
22845 | 
2 | 
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:       T72 T73 T74 
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 | T72,T73,T74 | 
| 1 | 0 | Covered | T72,T73,T74 | 
| 1 | 1 | Covered | T74,T148,T144 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T72,T73,T74 | 
| 1 | 0 | Covered | T74,T148,T144 | 
| 1 | 1 | Covered | T72,T73,T74 | 
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 | 
40020067 | 
41 | 
0 | 
0 | 
| T72 | 
8218 | 
1 | 
0 | 
0 | 
| T73 | 
10843 | 
1 | 
0 | 
0 | 
| T74 | 
5137 | 
2 | 
0 | 
0 | 
| T75 | 
14040 | 
1 | 
0 | 
0 | 
| T138 | 
6851 | 
1 | 
0 | 
0 | 
| T139 | 
6966 | 
1 | 
0 | 
0 | 
| T141 | 
5541 | 
5 | 
0 | 
0 | 
| T144 | 
9903 | 
3 | 
0 | 
0 | 
| T145 | 
3247 | 
3 | 
0 | 
0 | 
| T148 | 
6167 | 
3 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
17037310 | 
41 | 
0 | 
0 | 
| T72 | 
1714 | 
1 | 
0 | 
0 | 
| T73 | 
9979 | 
1 | 
0 | 
0 | 
| T74 | 
1316 | 
2 | 
0 | 
0 | 
| T75 | 
3103 | 
1 | 
0 | 
0 | 
| T138 | 
16155 | 
1 | 
0 | 
0 | 
| T139 | 
3564 | 
1 | 
0 | 
0 | 
| T141 | 
4110 | 
5 | 
0 | 
0 | 
| T144 | 
2126 | 
3 | 
0 | 
0 | 
| T145 | 
2859 | 
3 | 
0 | 
0 | 
| T148 | 
1228 | 
3 | 
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:       T72 T77 T74 
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 | T72,T77,T74 | 
| 1 | 0 | Covered | T72,T77,T74 | 
| 1 | 1 | Covered | T74,T148,T141 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T72,T77,T74 | 
| 1 | 0 | Covered | T74,T148,T141 | 
| 1 | 1 | Covered | T72,T77,T74 | 
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 | 
40020067 | 
39 | 
0 | 
0 | 
| T72 | 
8218 | 
2 | 
0 | 
0 | 
| T74 | 
5137 | 
3 | 
0 | 
0 | 
| T75 | 
14040 | 
1 | 
0 | 
0 | 
| T77 | 
4591 | 
1 | 
0 | 
0 | 
| T141 | 
5541 | 
3 | 
0 | 
0 | 
| T142 | 
8048 | 
1 | 
0 | 
0 | 
| T144 | 
9903 | 
2 | 
0 | 
0 | 
| T145 | 
3247 | 
2 | 
0 | 
0 | 
| T146 | 
13766 | 
1 | 
0 | 
0 | 
| T148 | 
6167 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
17037310 | 
39 | 
0 | 
0 | 
| T72 | 
1714 | 
2 | 
0 | 
0 | 
| T74 | 
1316 | 
3 | 
0 | 
0 | 
| T75 | 
3103 | 
1 | 
0 | 
0 | 
| T77 | 
1982 | 
1 | 
0 | 
0 | 
| T141 | 
4110 | 
3 | 
0 | 
0 | 
| T142 | 
8336 | 
1 | 
0 | 
0 | 
| T144 | 
2126 | 
2 | 
0 | 
0 | 
| T145 | 
2859 | 
2 | 
0 | 
0 | 
| T146 | 
3126 | 
1 | 
0 | 
0 | 
| T148 | 
1228 | 
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:       T71 T72 T73 
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 | T71,T72,T73 | 
| 1 | 0 | Covered | T71,T72,T73 | 
| 1 | 1 | Covered | T71,T139,T144 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T71,T72,T73 | 
| 1 | 0 | Covered | T71,T139,T144 | 
| 1 | 1 | Covered | T71,T72,T73 | 
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 | 
40020067 | 
46 | 
0 | 
0 | 
| T71 | 
9641 | 
4 | 
0 | 
0 | 
| T72 | 
8218 | 
1 | 
0 | 
0 | 
| T73 | 
10843 | 
1 | 
0 | 
0 | 
| T74 | 
5137 | 
1 | 
0 | 
0 | 
| T76 | 
2921 | 
2 | 
0 | 
0 | 
| T79 | 
2462 | 
2 | 
0 | 
0 | 
| T80 | 
2900 | 
1 | 
0 | 
0 | 
| T139 | 
6966 | 
2 | 
0 | 
0 | 
| T144 | 
9903 | 
2 | 
0 | 
0 | 
| T148 | 
6167 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
78012897 | 
46 | 
0 | 
0 | 
| T71 | 
19284 | 
4 | 
0 | 
0 | 
| T72 | 
8218 | 
1 | 
0 | 
0 | 
| T73 | 
43374 | 
1 | 
0 | 
0 | 
| T74 | 
6587 | 
1 | 
0 | 
0 | 
| T76 | 
12175 | 
2 | 
0 | 
0 | 
| T79 | 
10257 | 
2 | 
0 | 
0 | 
| T80 | 
11601 | 
1 | 
0 | 
0 | 
| T139 | 
16585 | 
2 | 
0 | 
0 | 
| T144 | 
10316 | 
2 | 
0 | 
0 | 
| T148 | 
6167 | 
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:       T71 T72 T73 
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 | T71,T72,T73 | 
| 1 | 0 | Covered | T71,T72,T73 | 
| 1 | 1 | Covered | T140,T141,T149 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T71,T72,T73 | 
| 1 | 0 | Covered | T140,T141,T149 | 
| 1 | 1 | Covered | T71,T72,T73 | 
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 | 
40020067 | 
41 | 
0 | 
0 | 
| T71 | 
9641 | 
2 | 
0 | 
0 | 
| T72 | 
8218 | 
1 | 
0 | 
0 | 
| T73 | 
10843 | 
1 | 
0 | 
0 | 
| T76 | 
2921 | 
2 | 
0 | 
0 | 
| T77 | 
4591 | 
2 | 
0 | 
0 | 
| T79 | 
2462 | 
1 | 
0 | 
0 | 
| T80 | 
2900 | 
1 | 
0 | 
0 | 
| T139 | 
6966 | 
1 | 
0 | 
0 | 
| T144 | 
9903 | 
1 | 
0 | 
0 | 
| T148 | 
6167 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
78012897 | 
41 | 
0 | 
0 | 
| T71 | 
19284 | 
2 | 
0 | 
0 | 
| T72 | 
8218 | 
1 | 
0 | 
0 | 
| T73 | 
43374 | 
1 | 
0 | 
0 | 
| T76 | 
12175 | 
2 | 
0 | 
0 | 
| T77 | 
9370 | 
2 | 
0 | 
0 | 
| T79 | 
10257 | 
1 | 
0 | 
0 | 
| T80 | 
11601 | 
1 | 
0 | 
0 | 
| T139 | 
16585 | 
1 | 
0 | 
0 | 
| T144 | 
10316 | 
1 | 
0 | 
0 | 
| T148 | 
6167 | 
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:       T73 T75 T76 
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 | T73,T75,T76 | 
| 1 | 0 | Covered | T73,T75,T76 | 
| 1 | 1 | Covered | T139,T141,T150 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T73,T75,T76 | 
| 1 | 0 | Covered | T139,T141,T150 | 
| 1 | 1 | Covered | T73,T75,T76 | 
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 | 
40020067 | 
37 | 
0 | 
0 | 
| T73 | 
10843 | 
1 | 
0 | 
0 | 
| T75 | 
14040 | 
1 | 
0 | 
0 | 
| T76 | 
2921 | 
2 | 
0 | 
0 | 
| T139 | 
6966 | 
2 | 
0 | 
0 | 
| T141 | 
5541 | 
2 | 
0 | 
0 | 
| T144 | 
9903 | 
1 | 
0 | 
0 | 
| T146 | 
13766 | 
2 | 
0 | 
0 | 
| T148 | 
6167 | 
2 | 
0 | 
0 | 
| T150 | 
6734 | 
2 | 
0 | 
0 | 
| T151 | 
6154 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
37309282 | 
37 | 
0 | 
0 | 
| T73 | 
20820 | 
1 | 
0 | 
0 | 
| T75 | 
7094 | 
1 | 
0 | 
0 | 
| T76 | 
5843 | 
2 | 
0 | 
0 | 
| T139 | 
7961 | 
2 | 
0 | 
0 | 
| T141 | 
9172 | 
2 | 
0 | 
0 | 
| T144 | 
4951 | 
1 | 
0 | 
0 | 
| T146 | 
7030 | 
2 | 
0 | 
0 | 
| T148 | 
2960 | 
2 | 
0 | 
0 | 
| T150 | 
3298 | 
2 | 
0 | 
0 | 
| T151 | 
3177 | 
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:       T71 T72 T73 
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 | T71,T72,T73 | 
| 1 | 0 | Covered | T71,T72,T73 | 
| 1 | 1 | Covered | T76,T152,T153 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T71,T72,T73 | 
| 1 | 0 | Covered | T76,T152,T153 | 
| 1 | 1 | Covered | T71,T72,T73 | 
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 | 
40020067 | 
40 | 
0 | 
0 | 
| T71 | 
9641 | 
1 | 
0 | 
0 | 
| T72 | 
8218 | 
1 | 
0 | 
0 | 
| T73 | 
10843 | 
4 | 
0 | 
0 | 
| T75 | 
14040 | 
1 | 
0 | 
0 | 
| T76 | 
2921 | 
3 | 
0 | 
0 | 
| T80 | 
2900 | 
1 | 
0 | 
0 | 
| T139 | 
6966 | 
1 | 
0 | 
0 | 
| T141 | 
5541 | 
1 | 
0 | 
0 | 
| T146 | 
13766 | 
2 | 
0 | 
0 | 
| T148 | 
6167 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
37309282 | 
40 | 
0 | 
0 | 
| T71 | 
9256 | 
1 | 
0 | 
0 | 
| T72 | 
3944 | 
1 | 
0 | 
0 | 
| T73 | 
20820 | 
4 | 
0 | 
0 | 
| T75 | 
7094 | 
1 | 
0 | 
0 | 
| T76 | 
5843 | 
3 | 
0 | 
0 | 
| T80 | 
5569 | 
1 | 
0 | 
0 | 
| T139 | 
7961 | 
1 | 
0 | 
0 | 
| T141 | 
9172 | 
1 | 
0 | 
0 | 
| T146 | 
7030 | 
2 | 
0 | 
0 | 
| T148 | 
2960 | 
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 T2 T3 
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,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_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 | 
67850313 | 
39161 | 
0 | 
0 | 
| T1 | 
41879 | 
54 | 
0 | 
0 | 
| T2 | 
133983 | 
66 | 
0 | 
0 | 
| T3 | 
0 | 
17 | 
0 | 
0 | 
| T10 | 
0 | 
52 | 
0 | 
0 | 
| T11 | 
0 | 
85 | 
0 | 
0 | 
| T21 | 
1426 | 
0 | 
0 | 
0 | 
| T22 | 
3446 | 
0 | 
0 | 
0 | 
| T23 | 
1764 | 
0 | 
0 | 
0 | 
| T24 | 
1513 | 
0 | 
0 | 
0 | 
| T25 | 
1829 | 
0 | 
0 | 
0 | 
| T26 | 
20908 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
1 | 
0 | 
0 | 
| T41 | 
0 | 
70 | 
0 | 
0 | 
| T42 | 
0 | 
75 | 
0 | 
0 | 
| T53 | 
15498 | 
0 | 
0 | 
0 | 
| T54 | 
1895 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
17 | 
0 | 
0 | 
| T56 | 
0 | 
13 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
912182 | 
37615 | 
0 | 
0 | 
| T1 | 
97 | 
54 | 
0 | 
0 | 
| T2 | 
294 | 
66 | 
0 | 
0 | 
| T3 | 
0 | 
17 | 
0 | 
0 | 
| T10 | 
0 | 
52 | 
0 | 
0 | 
| T11 | 
0 | 
85 | 
0 | 
0 | 
| T21 | 
103 | 
0 | 
0 | 
0 | 
| T22 | 
251 | 
0 | 
0 | 
0 | 
| T23 | 
138 | 
0 | 
0 | 
0 | 
| T24 | 
110 | 
0 | 
0 | 
0 | 
| T25 | 
133 | 
0 | 
0 | 
0 | 
| T26 | 
1524 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
1 | 
0 | 
0 | 
| T41 | 
0 | 
70 | 
0 | 
0 | 
| T42 | 
0 | 
75 | 
0 | 
0 | 
| T53 | 
1129 | 
0 | 
0 | 
0 | 
| T54 | 
138 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
17 | 
0 | 
0 | 
| T56 | 
0 | 
13 | 
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 T2 T3 
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,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_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 | 
33014455 | 
38825 | 
0 | 
0 | 
| T1 | 
20906 | 
54 | 
0 | 
0 | 
| T2 | 
66931 | 
66 | 
0 | 
0 | 
| T3 | 
0 | 
17 | 
0 | 
0 | 
| T10 | 
0 | 
52 | 
0 | 
0 | 
| T11 | 
0 | 
85 | 
0 | 
0 | 
| T21 | 
646 | 
0 | 
0 | 
0 | 
| T22 | 
1806 | 
0 | 
0 | 
0 | 
| T23 | 
815 | 
0 | 
0 | 
0 | 
| T24 | 
729 | 
0 | 
0 | 
0 | 
| T25 | 
895 | 
0 | 
0 | 
0 | 
| T26 | 
10414 | 
0 | 
0 | 
0 | 
| T41 | 
0 | 
70 | 
0 | 
0 | 
| T42 | 
0 | 
75 | 
0 | 
0 | 
| T50 | 
0 | 
192 | 
0 | 
0 | 
| T53 | 
5728 | 
0 | 
0 | 
0 | 
| T54 | 
915 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
17 | 
0 | 
0 | 
| T56 | 
0 | 
13 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
912182 | 
37300 | 
0 | 
0 | 
| T1 | 
97 | 
54 | 
0 | 
0 | 
| T2 | 
294 | 
66 | 
0 | 
0 | 
| T3 | 
0 | 
17 | 
0 | 
0 | 
| T10 | 
0 | 
52 | 
0 | 
0 | 
| T11 | 
0 | 
85 | 
0 | 
0 | 
| T21 | 
103 | 
0 | 
0 | 
0 | 
| T22 | 
251 | 
0 | 
0 | 
0 | 
| T23 | 
138 | 
0 | 
0 | 
0 | 
| T24 | 
110 | 
0 | 
0 | 
0 | 
| T25 | 
133 | 
0 | 
0 | 
0 | 
| T26 | 
1524 | 
0 | 
0 | 
0 | 
| T41 | 
0 | 
70 | 
0 | 
0 | 
| T42 | 
0 | 
75 | 
0 | 
0 | 
| T50 | 
0 | 
192 | 
0 | 
0 | 
| T53 | 
1129 | 
0 | 
0 | 
0 | 
| T54 | 
138 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
17 | 
0 | 
0 | 
| T56 | 
0 | 
13 | 
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 T2 T3 
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,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_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 | 
16506839 | 
38422 | 
0 | 
0 | 
| T1 | 
10453 | 
54 | 
0 | 
0 | 
| T2 | 
33466 | 
66 | 
0 | 
0 | 
| T3 | 
0 | 
17 | 
0 | 
0 | 
| T10 | 
0 | 
52 | 
0 | 
0 | 
| T11 | 
0 | 
85 | 
0 | 
0 | 
| T21 | 
323 | 
0 | 
0 | 
0 | 
| T22 | 
902 | 
0 | 
0 | 
0 | 
| T23 | 
407 | 
0 | 
0 | 
0 | 
| T24 | 
364 | 
0 | 
0 | 
0 | 
| T25 | 
447 | 
0 | 
0 | 
0 | 
| T26 | 
5207 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
2 | 
0 | 
0 | 
| T41 | 
0 | 
70 | 
0 | 
0 | 
| T42 | 
0 | 
75 | 
0 | 
0 | 
| T53 | 
2865 | 
0 | 
0 | 
0 | 
| T54 | 
457 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
17 | 
0 | 
0 | 
| T56 | 
0 | 
13 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
912182 | 
36921 | 
0 | 
0 | 
| T1 | 
97 | 
54 | 
0 | 
0 | 
| T2 | 
294 | 
66 | 
0 | 
0 | 
| T3 | 
0 | 
17 | 
0 | 
0 | 
| T10 | 
0 | 
52 | 
0 | 
0 | 
| T11 | 
0 | 
85 | 
0 | 
0 | 
| T21 | 
103 | 
0 | 
0 | 
0 | 
| T22 | 
251 | 
0 | 
0 | 
0 | 
| T23 | 
138 | 
0 | 
0 | 
0 | 
| T24 | 
110 | 
0 | 
0 | 
0 | 
| T25 | 
133 | 
0 | 
0 | 
0 | 
| T26 | 
1524 | 
0 | 
0 | 
0 | 
| T30 | 
0 | 
2 | 
0 | 
0 | 
| T41 | 
0 | 
70 | 
0 | 
0 | 
| T42 | 
0 | 
75 | 
0 | 
0 | 
| T53 | 
1129 | 
0 | 
0 | 
0 | 
| T54 | 
138 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
17 | 
0 | 
0 | 
| T56 | 
0 | 
13 | 
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 T2 T3 
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,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_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 | 
75706418 | 
47673 | 
0 | 
0 | 
| T1 | 
49626 | 
66 | 
0 | 
0 | 
| T2 | 
139571 | 
66 | 
0 | 
0 | 
| T3 | 
0 | 
17 | 
0 | 
0 | 
| T10 | 
0 | 
52 | 
0 | 
0 | 
| T11 | 
0 | 
85 | 
0 | 
0 | 
| T21 | 
1485 | 
0 | 
0 | 
0 | 
| T22 | 
3589 | 
0 | 
0 | 
0 | 
| T23 | 
1762 | 
0 | 
0 | 
0 | 
| T24 | 
1577 | 
0 | 
0 | 
0 | 
| T25 | 
1906 | 
0 | 
0 | 
0 | 
| T26 | 
21780 | 
0 | 
0 | 
0 | 
| T41 | 
0 | 
58 | 
0 | 
0 | 
| T42 | 
0 | 
123 | 
0 | 
0 | 
| T50 | 
0 | 
264 | 
0 | 
0 | 
| T53 | 
16145 | 
0 | 
0 | 
0 | 
| T54 | 
1974 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
17 | 
0 | 
0 | 
| T56 | 
0 | 
13 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
968750 | 
46896 | 
0 | 
0 | 
| T1 | 
109 | 
66 | 
0 | 
0 | 
| T2 | 
294 | 
66 | 
0 | 
0 | 
| T3 | 
0 | 
17 | 
0 | 
0 | 
| T10 | 
0 | 
52 | 
0 | 
0 | 
| T11 | 
0 | 
85 | 
0 | 
0 | 
| T21 | 
103 | 
0 | 
0 | 
0 | 
| T22 | 
251 | 
0 | 
0 | 
0 | 
| T23 | 
138 | 
0 | 
0 | 
0 | 
| T24 | 
110 | 
0 | 
0 | 
0 | 
| T25 | 
133 | 
0 | 
0 | 
0 | 
| T26 | 
1524 | 
0 | 
0 | 
0 | 
| T41 | 
0 | 
58 | 
0 | 
0 | 
| T42 | 
0 | 
123 | 
0 | 
0 | 
| T50 | 
0 | 
264 | 
0 | 
0 | 
| T53 | 
1129 | 
0 | 
0 | 
0 | 
| T54 | 
138 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
17 | 
0 | 
0 | 
| T56 | 
0 | 
13 | 
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 T2 T3 
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,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_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 | 
36202211 | 
46618 | 
0 | 
0 | 
| T1 | 
20939 | 
54 | 
0 | 
0 | 
| T2 | 
66995 | 
66 | 
0 | 
0 | 
| T3 | 
0 | 
17 | 
0 | 
0 | 
| T10 | 
0 | 
52 | 
0 | 
0 | 
| T11 | 
0 | 
85 | 
0 | 
0 | 
| T21 | 
713 | 
0 | 
0 | 
0 | 
| T22 | 
1722 | 
0 | 
0 | 
0 | 
| T23 | 
855 | 
0 | 
0 | 
0 | 
| T24 | 
756 | 
0 | 
0 | 
0 | 
| T25 | 
914 | 
0 | 
0 | 
0 | 
| T26 | 
10455 | 
0 | 
0 | 
0 | 
| T41 | 
0 | 
94 | 
0 | 
0 | 
| T42 | 
0 | 
120 | 
0 | 
0 | 
| T50 | 
0 | 
264 | 
0 | 
0 | 
| T53 | 
7749 | 
0 | 
0 | 
0 | 
| T54 | 
948 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
17 | 
0 | 
0 | 
| T56 | 
0 | 
13 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
991135 | 
46055 | 
0 | 
0 | 
| T1 | 
97 | 
54 | 
0 | 
0 | 
| T2 | 
294 | 
66 | 
0 | 
0 | 
| T3 | 
0 | 
17 | 
0 | 
0 | 
| T10 | 
0 | 
52 | 
0 | 
0 | 
| T11 | 
0 | 
85 | 
0 | 
0 | 
| T21 | 
103 | 
0 | 
0 | 
0 | 
| T22 | 
251 | 
0 | 
0 | 
0 | 
| T23 | 
138 | 
0 | 
0 | 
0 | 
| T24 | 
110 | 
0 | 
0 | 
0 | 
| T25 | 
133 | 
0 | 
0 | 
0 | 
| T26 | 
1524 | 
0 | 
0 | 
0 | 
| T41 | 
0 | 
94 | 
0 | 
0 | 
| T42 | 
0 | 
120 | 
0 | 
0 | 
| T50 | 
0 | 
264 | 
0 | 
0 | 
| T53 | 
1129 | 
0 | 
0 | 
0 | 
| T54 | 
138 | 
0 | 
0 | 
0 | 
| T55 | 
0 | 
17 | 
0 | 
0 | 
| T56 | 
0 | 
13 | 
0 | 
0 |