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 | 
1352829137 | 
457243 | 
0 | 
0 | 
| T1 | 
391380 | 
530 | 
0 | 
0 | 
| T2 | 
302188 | 
140 | 
0 | 
0 | 
| T3 | 
0 | 
340 | 
0 | 
0 | 
| T9 | 
0 | 
160 | 
0 | 
0 | 
| T10 | 
0 | 
460 | 
0 | 
0 | 
| T11 | 
0 | 
200 | 
0 | 
0 | 
| T12 | 
0 | 
100 | 
0 | 
0 | 
| T21 | 
0 | 
484 | 
0 | 
0 | 
| T33 | 
16885 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
150 | 
0 | 
0 | 
| T50 | 
0 | 
1634 | 
0 | 
0 | 
| T51 | 
39118 | 
0 | 
0 | 
0 | 
| T52 | 
6022 | 
0 | 
0 | 
0 | 
| T53 | 
7439 | 
0 | 
0 | 
0 | 
| T54 | 
19232 | 
0 | 
0 | 
0 | 
| T55 | 
122200 | 
0 | 
0 | 
0 | 
| T56 | 
10599 | 
0 | 
0 | 
0 | 
| T57 | 
49252 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
604 | 
0 | 
0 | 
| T74 | 
7073 | 
0 | 
0 | 
0 | 
| T75 | 
15828 | 
3 | 
0 | 
0 | 
| T76 | 
17128 | 
1 | 
0 | 
0 | 
| T78 | 
17610 | 
2 | 
0 | 
0 | 
| T79 | 
14572 | 
2 | 
0 | 
0 | 
| T80 | 
2455 | 
1 | 
0 | 
0 | 
| T104 | 
26018 | 
1 | 
0 | 
0 | 
| T136 | 
0 | 
32 | 
0 | 
0 | 
| T137 | 
0 | 
704 | 
0 | 
0 | 
| T138 | 
19768 | 
4 | 
0 | 
0 | 
| T139 | 
5785 | 
1 | 
0 | 
0 | 
| T140 | 
10174 | 
0 | 
0 | 
0 | 
| T141 | 
6343 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1169323244 | 
453995 | 
0 | 
0 | 
| T1 | 
104701 | 
530 | 
0 | 
0 | 
| T2 | 
74850 | 
140 | 
0 | 
0 | 
| T3 | 
0 | 
340 | 
0 | 
0 | 
| T9 | 
0 | 
160 | 
0 | 
0 | 
| T10 | 
0 | 
460 | 
0 | 
0 | 
| T11 | 
0 | 
200 | 
0 | 
0 | 
| T12 | 
0 | 
100 | 
0 | 
0 | 
| T21 | 
0 | 
484 | 
0 | 
0 | 
| T33 | 
5458 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
150 | 
0 | 
0 | 
| T50 | 
0 | 
1634 | 
0 | 
0 | 
| T51 | 
12556 | 
0 | 
0 | 
0 | 
| T52 | 
3584 | 
0 | 
0 | 
0 | 
| T53 | 
4300 | 
0 | 
0 | 
0 | 
| T54 | 
6149 | 
0 | 
0 | 
0 | 
| T55 | 
39815 | 
0 | 
0 | 
0 | 
| T56 | 
4486 | 
0 | 
0 | 
0 | 
| T57 | 
15747 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
604 | 
0 | 
0 | 
| T74 | 
36979 | 
0 | 
0 | 
0 | 
| T75 | 
6598 | 
3 | 
0 | 
0 | 
| T76 | 
12322 | 
1 | 
0 | 
0 | 
| T78 | 
15686 | 
2 | 
0 | 
0 | 
| T79 | 
5950 | 
2 | 
0 | 
0 | 
| T80 | 
3358 | 
1 | 
0 | 
0 | 
| T104 | 
46744 | 
1 | 
0 | 
0 | 
| T136 | 
0 | 
32 | 
0 | 
0 | 
| T137 | 
0 | 
704 | 
0 | 
0 | 
| T138 | 
8544 | 
4 | 
0 | 
0 | 
| T139 | 
2366 | 
1 | 
0 | 
0 | 
| T140 | 
18612 | 
0 | 
0 | 
0 | 
| T141 | 
11544 | 
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 | 
75966842 | 
11723 | 
0 | 
0 | 
| T1 | 
95886 | 
18 | 
0 | 
0 | 
| T2 | 
89964 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
40 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
4103 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
30 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
8939 | 
0 | 
0 | 
0 | 
| T52 | 
1247 | 
0 | 
0 | 
0 | 
| T53 | 
1568 | 
0 | 
0 | 
0 | 
| T54 | 
4805 | 
0 | 
0 | 
0 | 
| T55 | 
31690 | 
0 | 
0 | 
0 | 
| T56 | 
2502 | 
0 | 
0 | 
0 | 
| T57 | 
12226 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
39433932 | 
11723 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
40 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
30 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
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 | 
75966842 | 
17955 | 
0 | 
0 | 
| T1 | 
95886 | 
18 | 
0 | 
0 | 
| T2 | 
89964 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
4103 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
8939 | 
0 | 
0 | 
0 | 
| T52 | 
1247 | 
0 | 
0 | 
0 | 
| T53 | 
1568 | 
0 | 
0 | 
0 | 
| T54 | 
4805 | 
0 | 
0 | 
0 | 
| T55 | 
31690 | 
0 | 
0 | 
0 | 
| T56 | 
2502 | 
0 | 
0 | 
0 | 
| T57 | 
12226 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
39433932 | 
17964 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
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 | 
39433932 | 
17945 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
75966842 | 
17957 | 
0 | 
0 | 
| T1 | 
95886 | 
18 | 
0 | 
0 | 
| T2 | 
89964 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
4103 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
8939 | 
0 | 
0 | 
0 | 
| T52 | 
1247 | 
0 | 
0 | 
0 | 
| T53 | 
1568 | 
0 | 
0 | 
0 | 
| T54 | 
4805 | 
0 | 
0 | 
0 | 
| T55 | 
31690 | 
0 | 
0 | 
0 | 
| T56 | 
2502 | 
0 | 
0 | 
0 | 
| T57 | 
12226 | 
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 | 
37178629 | 
11723 | 
0 | 
0 | 
| T1 | 
47897 | 
18 | 
0 | 
0 | 
| T2 | 
27166 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
40 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
2126 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
30 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
5298 | 
0 | 
0 | 
0 | 
| T52 | 
622 | 
0 | 
0 | 
0 | 
| T53 | 
772 | 
0 | 
0 | 
0 | 
| T54 | 
2349 | 
0 | 
0 | 
0 | 
| T55 | 
14071 | 
0 | 
0 | 
0 | 
| T56 | 
1204 | 
0 | 
0 | 
0 | 
| T57 | 
6067 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
39433932 | 
11723 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
40 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
30 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
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 | 
37178629 | 
17849 | 
0 | 
0 | 
| T1 | 
47897 | 
18 | 
0 | 
0 | 
| T2 | 
27166 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
2126 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
5298 | 
0 | 
0 | 
0 | 
| T52 | 
622 | 
0 | 
0 | 
0 | 
| T53 | 
772 | 
0 | 
0 | 
0 | 
| T54 | 
2349 | 
0 | 
0 | 
0 | 
| T55 | 
14071 | 
0 | 
0 | 
0 | 
| T56 | 
1204 | 
0 | 
0 | 
0 | 
| T57 | 
6067 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
39433932 | 
17866 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
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 | 
39433932 | 
17841 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
37178629 | 
17851 | 
0 | 
0 | 
| T1 | 
47897 | 
18 | 
0 | 
0 | 
| T2 | 
27166 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
2126 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
5298 | 
0 | 
0 | 
0 | 
| T52 | 
622 | 
0 | 
0 | 
0 | 
| T53 | 
772 | 
0 | 
0 | 
0 | 
| T54 | 
2349 | 
0 | 
0 | 
0 | 
| T55 | 
14071 | 
0 | 
0 | 
0 | 
| T56 | 
1204 | 
0 | 
0 | 
0 | 
| T57 | 
6067 | 
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 | 
18588829 | 
11723 | 
0 | 
0 | 
| T1 | 
23948 | 
18 | 
0 | 
0 | 
| T2 | 
13583 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
40 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1062 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
30 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2647 | 
0 | 
0 | 
0 | 
| T52 | 
311 | 
0 | 
0 | 
0 | 
| T53 | 
386 | 
0 | 
0 | 
0 | 
| T54 | 
1174 | 
0 | 
0 | 
0 | 
| T55 | 
7035 | 
0 | 
0 | 
0 | 
| T56 | 
602 | 
0 | 
0 | 
0 | 
| T57 | 
3033 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
39433932 | 
11723 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
40 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
30 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
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 | 
18588829 | 
17984 | 
0 | 
0 | 
| T1 | 
23948 | 
18 | 
0 | 
0 | 
| T2 | 
13583 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1062 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2647 | 
0 | 
0 | 
0 | 
| T52 | 
311 | 
0 | 
0 | 
0 | 
| T53 | 
386 | 
0 | 
0 | 
0 | 
| T54 | 
1174 | 
0 | 
0 | 
0 | 
| T55 | 
7035 | 
0 | 
0 | 
0 | 
| T56 | 
602 | 
0 | 
0 | 
0 | 
| T57 | 
3033 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
39433932 | 
18014 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
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 | 
39433932 | 
17981 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
18588829 | 
17989 | 
0 | 
0 | 
| T1 | 
23948 | 
18 | 
0 | 
0 | 
| T2 | 
13583 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1062 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2647 | 
0 | 
0 | 
0 | 
| T52 | 
311 | 
0 | 
0 | 
0 | 
| T53 | 
386 | 
0 | 
0 | 
0 | 
| T54 | 
1174 | 
0 | 
0 | 
0 | 
| T55 | 
7035 | 
0 | 
0 | 
0 | 
| T56 | 
602 | 
0 | 
0 | 
0 | 
| T57 | 
3033 | 
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 | 
84464139 | 
11723 | 
0 | 
0 | 
| T1 | 
99885 | 
18 | 
0 | 
0 | 
| T2 | 
93715 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
40 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
4274 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
30 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
9311 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1633 | 
0 | 
0 | 
0 | 
| T54 | 
5006 | 
0 | 
0 | 
0 | 
| T55 | 
33010 | 
0 | 
0 | 
0 | 
| T56 | 
2606 | 
0 | 
0 | 
0 | 
| T57 | 
12736 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
39433932 | 
11723 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
40 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
30 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
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 | 
84464139 | 
17954 | 
0 | 
0 | 
| T1 | 
99885 | 
18 | 
0 | 
0 | 
| T2 | 
93715 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
4274 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
9311 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1633 | 
0 | 
0 | 
0 | 
| T54 | 
5006 | 
0 | 
0 | 
0 | 
| T55 | 
33010 | 
0 | 
0 | 
0 | 
| T56 | 
2606 | 
0 | 
0 | 
0 | 
| T57 | 
12736 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
39433932 | 
17969 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
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 | 
39433932 | 
17944 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
84464139 | 
17958 | 
0 | 
0 | 
| T1 | 
99885 | 
18 | 
0 | 
0 | 
| T2 | 
93715 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
4274 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
9311 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1633 | 
0 | 
0 | 
0 | 
| T54 | 
5006 | 
0 | 
0 | 
0 | 
| T55 | 
33010 | 
0 | 
0 | 
0 | 
| T56 | 
2606 | 
0 | 
0 | 
0 | 
| T57 | 
12736 | 
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 | 
40464908 | 
11269 | 
0 | 
0 | 
| T1 | 
47945 | 
18 | 
0 | 
0 | 
| T2 | 
44984 | 
14 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
20 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
2052 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
15 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
4469 | 
0 | 
0 | 
0 | 
| T52 | 
624 | 
0 | 
0 | 
0 | 
| T53 | 
784 | 
0 | 
0 | 
0 | 
| T54 | 
2402 | 
0 | 
0 | 
0 | 
| T55 | 
15845 | 
0 | 
0 | 
0 | 
| T56 | 
1251 | 
0 | 
0 | 
0 | 
| T57 | 
6113 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
39433932 | 
11723 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
28 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
40 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
30 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
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 | 
40464908 | 
17754 | 
0 | 
0 | 
| T1 | 
47945 | 
18 | 
0 | 
0 | 
| T2 | 
44984 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
60 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
2052 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
4469 | 
0 | 
0 | 
0 | 
| T52 | 
624 | 
0 | 
0 | 
0 | 
| T53 | 
784 | 
0 | 
0 | 
0 | 
| T54 | 
2402 | 
0 | 
0 | 
0 | 
| T55 | 
15845 | 
0 | 
0 | 
0 | 
| T56 | 
1251 | 
0 | 
0 | 
0 | 
| T57 | 
6113 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
39433932 | 
17942 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
80 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
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 | 
39433932 | 
17605 | 
0 | 
0 | 
| T1 | 
27970 | 
18 | 
0 | 
0 | 
| T2 | 
23428 | 
54 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
60 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
1068 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
54 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
2327 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1536 | 
0 | 
0 | 
0 | 
| T54 | 
1200 | 
0 | 
0 | 
0 | 
| T55 | 
8252 | 
0 | 
0 | 
0 | 
| T56 | 
1277 | 
0 | 
0 | 
0 | 
| T57 | 
3056 | 
0 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40464908 | 
17798 | 
0 | 
0 | 
| T1 | 
47945 | 
18 | 
0 | 
0 | 
| T2 | 
44984 | 
56 | 
0 | 
0 | 
| T3 | 
0 | 
28 | 
0 | 
0 | 
| T9 | 
0 | 
12 | 
0 | 
0 | 
| T10 | 
0 | 
32 | 
0 | 
0 | 
| T11 | 
0 | 
70 | 
0 | 
0 | 
| T12 | 
0 | 
8 | 
0 | 
0 | 
| T21 | 
0 | 
20 | 
0 | 
0 | 
| T33 | 
2052 | 
0 | 
0 | 
0 | 
| T48 | 
0 | 
60 | 
0 | 
0 | 
| T50 | 
0 | 
68 | 
0 | 
0 | 
| T51 | 
4469 | 
0 | 
0 | 
0 | 
| T52 | 
624 | 
0 | 
0 | 
0 | 
| T53 | 
784 | 
0 | 
0 | 
0 | 
| T54 | 
2402 | 
0 | 
0 | 
0 | 
| T55 | 
15845 | 
0 | 
0 | 
0 | 
| T56 | 
1251 | 
0 | 
0 | 
0 | 
| T57 | 
6113 | 
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:       T77 T74 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 | T77,T74,T75 | 
| 1 | 0 | Covered | T77,T74,T75 | 
| 1 | 1 | Covered | T138,T142 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T77,T74,T75 | 
| 1 | 0 | Covered | T138,T142 | 
| 1 | 1 | Covered | T77,T74,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 | 
39433932 | 
36 | 
0 | 
0 | 
| T74 | 
7073 | 
1 | 
0 | 
0 | 
| T75 | 
7914 | 
2 | 
0 | 
0 | 
| T77 | 
6313 | 
1 | 
0 | 
0 | 
| T78 | 
8805 | 
1 | 
0 | 
0 | 
| T79 | 
7286 | 
1 | 
0 | 
0 | 
| T104 | 
13009 | 
1 | 
0 | 
0 | 
| T138 | 
9884 | 
3 | 
0 | 
0 | 
| T140 | 
5087 | 
2 | 
0 | 
0 | 
| T143 | 
4361 | 
2 | 
0 | 
0 | 
| T144 | 
9403 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
75966842 | 
36 | 
0 | 
0 | 
| T74 | 
75448 | 
1 | 
0 | 
0 | 
| T75 | 
8081 | 
2 | 
0 | 
0 | 
| T77 | 
12368 | 
1 | 
0 | 
0 | 
| T78 | 
17609 | 
1 | 
0 | 
0 | 
| T79 | 
7136 | 
1 | 
0 | 
0 | 
| T104 | 
48034 | 
1 | 
0 | 
0 | 
| T138 | 
9781 | 
3 | 
0 | 
0 | 
| T140 | 
20348 | 
2 | 
0 | 
0 | 
| T143 | 
8545 | 
2 | 
0 | 
0 | 
| T144 | 
9026 | 
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:       T77 T74 T75 
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 | T77,T74,T75 | 
| 1 | 0 | Covered | T77,T74,T75 | 
| 1 | 1 | Covered | T138,T145,T146 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T77,T74,T75 | 
| 1 | 0 | Covered | T138,T145,T146 | 
| 1 | 1 | Covered | T77,T74,T75 | 
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 | 
39433932 | 
39 | 
0 | 
0 | 
| T74 | 
7073 | 
2 | 
0 | 
0 | 
| T75 | 
7914 | 
1 | 
0 | 
0 | 
| T77 | 
6313 | 
1 | 
0 | 
0 | 
| T79 | 
7286 | 
2 | 
0 | 
0 | 
| T104 | 
13009 | 
1 | 
0 | 
0 | 
| T138 | 
9884 | 
3 | 
0 | 
0 | 
| T140 | 
5087 | 
2 | 
0 | 
0 | 
| T143 | 
4361 | 
1 | 
0 | 
0 | 
| T147 | 
5261 | 
3 | 
0 | 
0 | 
| T148 | 
11241 | 
3 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
75966842 | 
39 | 
0 | 
0 | 
| T74 | 
75448 | 
2 | 
0 | 
0 | 
| T75 | 
8081 | 
1 | 
0 | 
0 | 
| T77 | 
12368 | 
1 | 
0 | 
0 | 
| T79 | 
7136 | 
2 | 
0 | 
0 | 
| T104 | 
48034 | 
1 | 
0 | 
0 | 
| T138 | 
9781 | 
3 | 
0 | 
0 | 
| T140 | 
20348 | 
2 | 
0 | 
0 | 
| T143 | 
8545 | 
1 | 
0 | 
0 | 
| T147 | 
5050 | 
3 | 
0 | 
0 | 
| T148 | 
22482 | 
3 | 
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:       T75 T76 T78 
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 | T75,T76,T78 | 
| 1 | 0 | Covered | T75,T76,T78 | 
| 1 | 1 | Covered | T75,T79,T138 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T75,T76,T78 | 
| 1 | 0 | Covered | T75,T79,T138 | 
| 1 | 1 | Covered | T75,T76,T78 | 
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 | 
39433932 | 
38 | 
0 | 
0 | 
| T75 | 
7914 | 
3 | 
0 | 
0 | 
| T76 | 
8564 | 
1 | 
0 | 
0 | 
| T78 | 
8805 | 
2 | 
0 | 
0 | 
| T79 | 
7286 | 
2 | 
0 | 
0 | 
| T80 | 
2455 | 
1 | 
0 | 
0 | 
| T104 | 
13009 | 
1 | 
0 | 
0 | 
| T138 | 
9884 | 
4 | 
0 | 
0 | 
| T139 | 
5785 | 
1 | 
0 | 
0 | 
| T140 | 
5087 | 
4 | 
0 | 
0 | 
| T141 | 
6343 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
37178629 | 
38 | 
0 | 
0 | 
| T75 | 
3299 | 
3 | 
0 | 
0 | 
| T76 | 
6161 | 
1 | 
0 | 
0 | 
| T78 | 
7843 | 
2 | 
0 | 
0 | 
| T79 | 
2975 | 
2 | 
0 | 
0 | 
| T80 | 
3358 | 
1 | 
0 | 
0 | 
| T104 | 
23372 | 
1 | 
0 | 
0 | 
| T138 | 
4272 | 
4 | 
0 | 
0 | 
| T139 | 
2366 | 
1 | 
0 | 
0 | 
| T140 | 
9306 | 
4 | 
0 | 
0 | 
| T141 | 
11544 | 
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:       T74 T75 T76 
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 | T74,T75,T76 | 
| 1 | 0 | Covered | T74,T75,T76 | 
| 1 | 1 | Covered | T75,T78,T79 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T74,T75,T76 | 
| 1 | 0 | Covered | T75,T78,T79 | 
| 1 | 1 | Covered | T74,T75,T76 | 
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 | 
39433932 | 
35 | 
0 | 
0 | 
| T74 | 
7073 | 
1 | 
0 | 
0 | 
| T75 | 
7914 | 
2 | 
0 | 
0 | 
| T76 | 
8564 | 
1 | 
0 | 
0 | 
| T78 | 
8805 | 
3 | 
0 | 
0 | 
| T79 | 
7286 | 
3 | 
0 | 
0 | 
| T104 | 
13009 | 
1 | 
0 | 
0 | 
| T138 | 
9884 | 
3 | 
0 | 
0 | 
| T140 | 
5087 | 
2 | 
0 | 
0 | 
| T149 | 
7051 | 
1 | 
0 | 
0 | 
| T150 | 
11578 | 
2 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
37178629 | 
35 | 
0 | 
0 | 
| T74 | 
36979 | 
1 | 
0 | 
0 | 
| T75 | 
3299 | 
2 | 
0 | 
0 | 
| T76 | 
6161 | 
1 | 
0 | 
0 | 
| T78 | 
7843 | 
3 | 
0 | 
0 | 
| T79 | 
2975 | 
3 | 
0 | 
0 | 
| T104 | 
23372 | 
1 | 
0 | 
0 | 
| T138 | 
4272 | 
3 | 
0 | 
0 | 
| T140 | 
9306 | 
2 | 
0 | 
0 | 
| T149 | 
13163 | 
1 | 
0 | 
0 | 
| T150 | 
22140 | 
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:       T75 T76 T78 
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 | T75,T76,T78 | 
| 1 | 0 | Covered | T75,T76,T78 | 
| 1 | 1 | Covered | T78,T151,T152 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T75,T76,T78 | 
| 1 | 0 | Covered | T78,T151,T152 | 
| 1 | 1 | Covered | T75,T76,T78 | 
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 | 
39433932 | 
42 | 
0 | 
0 | 
| T75 | 
7914 | 
2 | 
0 | 
0 | 
| T76 | 
8564 | 
1 | 
0 | 
0 | 
| T78 | 
8805 | 
4 | 
0 | 
0 | 
| T138 | 
9884 | 
2 | 
0 | 
0 | 
| T139 | 
5785 | 
1 | 
0 | 
0 | 
| T143 | 
4361 | 
1 | 
0 | 
0 | 
| T147 | 
5261 | 
1 | 
0 | 
0 | 
| T148 | 
11241 | 
1 | 
0 | 
0 | 
| T149 | 
7051 | 
1 | 
0 | 
0 | 
| T150 | 
11578 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
18588829 | 
42 | 
0 | 
0 | 
| T75 | 
1649 | 
2 | 
0 | 
0 | 
| T76 | 
3079 | 
1 | 
0 | 
0 | 
| T78 | 
3921 | 
4 | 
0 | 
0 | 
| T138 | 
2138 | 
2 | 
0 | 
0 | 
| T139 | 
1182 | 
1 | 
0 | 
0 | 
| T143 | 
1906 | 
1 | 
0 | 
0 | 
| T147 | 
1061 | 
1 | 
0 | 
0 | 
| T148 | 
5124 | 
1 | 
0 | 
0 | 
| T149 | 
6581 | 
1 | 
0 | 
0 | 
| T150 | 
11068 | 
1 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo_err_update_sync
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T74 T75 T78 
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 | T74,T75,T78 | 
| 1 | 0 | Covered | T74,T75,T78 | 
| 1 | 1 | Covered | T78,T147,T152 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T74,T75,T78 | 
| 1 | 0 | Covered | T78,T147,T152 | 
| 1 | 1 | Covered | T74,T75,T78 | 
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 | 
39433932 | 
37 | 
0 | 
0 | 
| T74 | 
7073 | 
1 | 
0 | 
0 | 
| T75 | 
7914 | 
1 | 
0 | 
0 | 
| T78 | 
8805 | 
4 | 
0 | 
0 | 
| T138 | 
9884 | 
3 | 
0 | 
0 | 
| T146 | 
11672 | 
1 | 
0 | 
0 | 
| T147 | 
5261 | 
2 | 
0 | 
0 | 
| T148 | 
11241 | 
1 | 
0 | 
0 | 
| T149 | 
7051 | 
2 | 
0 | 
0 | 
| T151 | 
5879 | 
1 | 
0 | 
0 | 
| T153 | 
7123 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
18588829 | 
37 | 
0 | 
0 | 
| T74 | 
18487 | 
1 | 
0 | 
0 | 
| T75 | 
1649 | 
1 | 
0 | 
0 | 
| T78 | 
3921 | 
4 | 
0 | 
0 | 
| T138 | 
2138 | 
3 | 
0 | 
0 | 
| T146 | 
2409 | 
1 | 
0 | 
0 | 
| T147 | 
1061 | 
2 | 
0 | 
0 | 
| T148 | 
5124 | 
1 | 
0 | 
0 | 
| T149 | 
6581 | 
2 | 
0 | 
0 | 
| T151 | 
5525 | 
1 | 
0 | 
0 | 
| T153 | 
1524 | 
1 | 
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:       T77 T74 T75 
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 | T77,T74,T75 | 
| 1 | 0 | Covered | T77,T74,T75 | 
| 1 | 1 | Covered | T75,T80,T138 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T77,T74,T75 | 
| 1 | 0 | Covered | T75,T80,T138 | 
| 1 | 1 | Covered | T77,T74,T75 | 
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 | 
39433932 | 
40 | 
0 | 
0 | 
| T74 | 
7073 | 
2 | 
0 | 
0 | 
| T75 | 
7914 | 
4 | 
0 | 
0 | 
| T77 | 
6313 | 
1 | 
0 | 
0 | 
| T78 | 
8805 | 
1 | 
0 | 
0 | 
| T79 | 
7286 | 
1 | 
0 | 
0 | 
| T80 | 
2455 | 
2 | 
0 | 
0 | 
| T104 | 
13009 | 
1 | 
0 | 
0 | 
| T138 | 
9884 | 
2 | 
0 | 
0 | 
| T140 | 
5087 | 
1 | 
0 | 
0 | 
| T149 | 
7051 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
84464139 | 
40 | 
0 | 
0 | 
| T74 | 
78594 | 
2 | 
0 | 
0 | 
| T75 | 
8419 | 
4 | 
0 | 
0 | 
| T77 | 
12884 | 
1 | 
0 | 
0 | 
| T78 | 
18344 | 
1 | 
0 | 
0 | 
| T79 | 
7434 | 
1 | 
0 | 
0 | 
| T80 | 
7672 | 
2 | 
0 | 
0 | 
| T104 | 
50038 | 
1 | 
0 | 
0 | 
| T138 | 
10190 | 
2 | 
0 | 
0 | 
| T140 | 
21198 | 
1 | 
0 | 
0 | 
| T149 | 
29382 | 
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:       T74 T75 T76 
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 | T74,T75,T76 | 
| 1 | 0 | Covered | T74,T75,T76 | 
| 1 | 1 | Covered | T74,T75,T80 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T74,T75,T76 | 
| 1 | 0 | Covered | T74,T75,T80 | 
| 1 | 1 | Covered | T74,T75,T76 | 
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 | 
39433932 | 
34 | 
0 | 
0 | 
| T74 | 
7073 | 
2 | 
0 | 
0 | 
| T75 | 
7914 | 
3 | 
0 | 
0 | 
| T76 | 
8564 | 
1 | 
0 | 
0 | 
| T79 | 
7286 | 
1 | 
0 | 
0 | 
| T80 | 
2455 | 
3 | 
0 | 
0 | 
| T138 | 
9884 | 
2 | 
0 | 
0 | 
| T140 | 
5087 | 
1 | 
0 | 
0 | 
| T141 | 
6343 | 
1 | 
0 | 
0 | 
| T143 | 
4361 | 
1 | 
0 | 
0 | 
| T149 | 
7051 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
84464139 | 
34 | 
0 | 
0 | 
| T74 | 
78594 | 
2 | 
0 | 
0 | 
| T75 | 
8419 | 
3 | 
0 | 
0 | 
| T76 | 
14764 | 
1 | 
0 | 
0 | 
| T79 | 
7434 | 
1 | 
0 | 
0 | 
| T80 | 
7672 | 
3 | 
0 | 
0 | 
| T138 | 
10190 | 
2 | 
0 | 
0 | 
| T140 | 
21198 | 
1 | 
0 | 
0 | 
| T141 | 
25372 | 
1 | 
0 | 
0 | 
| T143 | 
8902 | 
1 | 
0 | 
0 | 
| T149 | 
29382 | 
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:       T74 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 | T74,T75,T76 | 
| 1 | 0 | Covered | T74,T75,T76 | 
| 1 | 1 | Covered | T75,T140,T154 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T74,T75,T76 | 
| 1 | 0 | Covered | T75,T140,T154 | 
| 1 | 1 | Covered | T74,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 | 
39433932 | 
45 | 
0 | 
0 | 
| T74 | 
7073 | 
2 | 
0 | 
0 | 
| T75 | 
7914 | 
2 | 
0 | 
0 | 
| T76 | 
8564 | 
1 | 
0 | 
0 | 
| T78 | 
8805 | 
1 | 
0 | 
0 | 
| T80 | 
2455 | 
2 | 
0 | 
0 | 
| T138 | 
9884 | 
2 | 
0 | 
0 | 
| T139 | 
5785 | 
1 | 
0 | 
0 | 
| T140 | 
5087 | 
4 | 
0 | 
0 | 
| T143 | 
4361 | 
1 | 
0 | 
0 | 
| T150 | 
11578 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40464908 | 
45 | 
0 | 
0 | 
| T74 | 
37726 | 
2 | 
0 | 
0 | 
| T75 | 
4040 | 
2 | 
0 | 
0 | 
| T76 | 
7087 | 
1 | 
0 | 
0 | 
| T78 | 
8805 | 
1 | 
0 | 
0 | 
| T80 | 
3683 | 
2 | 
0 | 
0 | 
| T138 | 
4891 | 
2 | 
0 | 
0 | 
| T139 | 
2833 | 
1 | 
0 | 
0 | 
| T140 | 
10174 | 
4 | 
0 | 
0 | 
| T143 | 
4273 | 
1 | 
0 | 
0 | 
| T150 | 
23156 | 
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:       T75 T78 T80 
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 | T75,T78,T80 | 
| 1 | 0 | Covered | T75,T78,T80 | 
| 1 | 1 | Covered | T80,T145,T153 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T75,T78,T80 | 
| 1 | 0 | Covered | T80,T145,T153 | 
| 1 | 1 | Covered | T75,T78,T80 | 
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 | 
39433932 | 
37 | 
0 | 
0 | 
| T75 | 
7914 | 
1 | 
0 | 
0 | 
| T78 | 
8805 | 
1 | 
0 | 
0 | 
| T80 | 
2455 | 
3 | 
0 | 
0 | 
| T138 | 
9884 | 
2 | 
0 | 
0 | 
| T139 | 
5785 | 
1 | 
0 | 
0 | 
| T140 | 
5087 | 
2 | 
0 | 
0 | 
| T143 | 
4361 | 
1 | 
0 | 
0 | 
| T148 | 
11241 | 
1 | 
0 | 
0 | 
| T149 | 
7051 | 
1 | 
0 | 
0 | 
| T150 | 
11578 | 
1 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
40464908 | 
37 | 
0 | 
0 | 
| T75 | 
4040 | 
1 | 
0 | 
0 | 
| T78 | 
8805 | 
1 | 
0 | 
0 | 
| T80 | 
3683 | 
3 | 
0 | 
0 | 
| T138 | 
4891 | 
2 | 
0 | 
0 | 
| T139 | 
2833 | 
1 | 
0 | 
0 | 
| T140 | 
10174 | 
2 | 
0 | 
0 | 
| T143 | 
4273 | 
1 | 
0 | 
0 | 
| T148 | 
11241 | 
1 | 
0 | 
0 | 
| T149 | 
14103 | 
1 | 
0 | 
0 | 
| T150 | 
23156 | 
1 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_io_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T3 T21 
Cond Coverage for Instance : tb.dut.u_io_meas.u_meas.u_sync_ref
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T21 | 
| 1 | 0 | Covered | T1,T3,T21 | 
| 1 | 1 | Covered | T1,T3,T21 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T21 | 
| 1 | 0 | Covered | T1,T3,T21 | 
| 1 | 1 | Covered | T1,T3,T21 | 
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 | 
73311726 | 
40455 | 
0 | 
0 | 
| T1 | 
95886 | 
119 | 
0 | 
0 | 
| T2 | 
89964 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
64 | 
0 | 
0 | 
| T9 | 
0 | 
31 | 
0 | 
0 | 
| T10 | 
0 | 
91 | 
0 | 
0 | 
| T12 | 
0 | 
19 | 
0 | 
0 | 
| T21 | 
0 | 
88 | 
0 | 
0 | 
| T33 | 
4103 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
332 | 
0 | 
0 | 
| T51 | 
8939 | 
0 | 
0 | 
0 | 
| T52 | 
1247 | 
0 | 
0 | 
0 | 
| T53 | 
1568 | 
0 | 
0 | 
0 | 
| T54 | 
4805 | 
0 | 
0 | 
0 | 
| T55 | 
31690 | 
0 | 
0 | 
0 | 
| T56 | 
2502 | 
0 | 
0 | 
0 | 
| T57 | 
12226 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
130 | 
0 | 
0 | 
| T136 | 
0 | 
5 | 
0 | 
0 | 
| T137 | 
0 | 
152 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
968521 | 
39571 | 
0 | 
0 | 
| T1 | 
216 | 
119 | 
0 | 
0 | 
| T2 | 
207 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
64 | 
0 | 
0 | 
| T9 | 
0 | 
31 | 
0 | 
0 | 
| T10 | 
0 | 
91 | 
0 | 
0 | 
| T12 | 
0 | 
19 | 
0 | 
0 | 
| T21 | 
0 | 
88 | 
0 | 
0 | 
| T33 | 
299 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
332 | 
0 | 
0 | 
| T51 | 
651 | 
0 | 
0 | 
0 | 
| T52 | 
91 | 
0 | 
0 | 
0 | 
| T53 | 
114 | 
0 | 
0 | 
0 | 
| T54 | 
350 | 
0 | 
0 | 
0 | 
| T55 | 
2310 | 
0 | 
0 | 
0 | 
| T56 | 
182 | 
0 | 
0 | 
0 | 
| T57 | 
892 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
130 | 
0 | 
0 | 
| T136 | 
0 | 
5 | 
0 | 
0 | 
| T137 | 
0 | 
152 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_io_div2_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T3 T21 
Cond Coverage for Instance : tb.dut.u_io_div2_meas.u_meas.u_sync_ref
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T21 | 
| 1 | 0 | Covered | T1,T3,T21 | 
| 1 | 1 | Covered | T1,T3,T21 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T21 | 
| 1 | 0 | Covered | T1,T3,T21 | 
| 1 | 1 | Covered | T1,T3,T21 | 
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 | 
35897717 | 
40217 | 
0 | 
0 | 
| T1 | 
47897 | 
119 | 
0 | 
0 | 
| T2 | 
27166 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
64 | 
0 | 
0 | 
| T9 | 
0 | 
31 | 
0 | 
0 | 
| T10 | 
0 | 
91 | 
0 | 
0 | 
| T12 | 
0 | 
19 | 
0 | 
0 | 
| T21 | 
0 | 
88 | 
0 | 
0 | 
| T33 | 
2126 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
332 | 
0 | 
0 | 
| T51 | 
5298 | 
0 | 
0 | 
0 | 
| T52 | 
622 | 
0 | 
0 | 
0 | 
| T53 | 
772 | 
0 | 
0 | 
0 | 
| T54 | 
2349 | 
0 | 
0 | 
0 | 
| T55 | 
14071 | 
0 | 
0 | 
0 | 
| T56 | 
1204 | 
0 | 
0 | 
0 | 
| T57 | 
6067 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
130 | 
0 | 
0 | 
| T136 | 
0 | 
5 | 
0 | 
0 | 
| T137 | 
0 | 
152 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
968521 | 
39350 | 
0 | 
0 | 
| T1 | 
216 | 
119 | 
0 | 
0 | 
| T2 | 
207 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
64 | 
0 | 
0 | 
| T9 | 
0 | 
31 | 
0 | 
0 | 
| T10 | 
0 | 
91 | 
0 | 
0 | 
| T12 | 
0 | 
19 | 
0 | 
0 | 
| T21 | 
0 | 
88 | 
0 | 
0 | 
| T33 | 
299 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
332 | 
0 | 
0 | 
| T51 | 
651 | 
0 | 
0 | 
0 | 
| T52 | 
91 | 
0 | 
0 | 
0 | 
| T53 | 
114 | 
0 | 
0 | 
0 | 
| T54 | 
350 | 
0 | 
0 | 
0 | 
| T55 | 
2310 | 
0 | 
0 | 
0 | 
| T56 | 
182 | 
0 | 
0 | 
0 | 
| T57 | 
892 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
130 | 
0 | 
0 | 
| T136 | 
0 | 
5 | 
0 | 
0 | 
| T137 | 
0 | 
152 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_io_div4_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T3 T21 
Cond Coverage for Instance : tb.dut.u_io_div4_meas.u_meas.u_sync_ref
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T21 | 
| 1 | 0 | Covered | T1,T3,T21 | 
| 1 | 1 | Covered | T1,T3,T21 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T21 | 
| 1 | 0 | Covered | T1,T3,T21 | 
| 1 | 1 | Covered | T1,T3,T21 | 
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 | 
17948391 | 
40010 | 
0 | 
0 | 
| T1 | 
23948 | 
119 | 
0 | 
0 | 
| T2 | 
13583 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
64 | 
0 | 
0 | 
| T9 | 
0 | 
31 | 
0 | 
0 | 
| T10 | 
0 | 
91 | 
0 | 
0 | 
| T12 | 
0 | 
19 | 
0 | 
0 | 
| T21 | 
0 | 
88 | 
0 | 
0 | 
| T33 | 
1062 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
330 | 
0 | 
0 | 
| T51 | 
2647 | 
0 | 
0 | 
0 | 
| T52 | 
311 | 
0 | 
0 | 
0 | 
| T53 | 
386 | 
0 | 
0 | 
0 | 
| T54 | 
1174 | 
0 | 
0 | 
0 | 
| T55 | 
7035 | 
0 | 
0 | 
0 | 
| T56 | 
602 | 
0 | 
0 | 
0 | 
| T57 | 
3033 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
130 | 
0 | 
0 | 
| T136 | 
0 | 
5 | 
0 | 
0 | 
| T137 | 
0 | 
151 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
968521 | 
39161 | 
0 | 
0 | 
| T1 | 
216 | 
119 | 
0 | 
0 | 
| T2 | 
207 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
64 | 
0 | 
0 | 
| T9 | 
0 | 
31 | 
0 | 
0 | 
| T10 | 
0 | 
91 | 
0 | 
0 | 
| T12 | 
0 | 
19 | 
0 | 
0 | 
| T21 | 
0 | 
88 | 
0 | 
0 | 
| T33 | 
299 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
330 | 
0 | 
0 | 
| T51 | 
651 | 
0 | 
0 | 
0 | 
| T52 | 
91 | 
0 | 
0 | 
0 | 
| T53 | 
114 | 
0 | 
0 | 
0 | 
| T54 | 
350 | 
0 | 
0 | 
0 | 
| T55 | 
2310 | 
0 | 
0 | 
0 | 
| T56 | 
182 | 
0 | 
0 | 
0 | 
| T57 | 
892 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
130 | 
0 | 
0 | 
| T136 | 
0 | 
5 | 
0 | 
0 | 
| T137 | 
0 | 
151 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_main_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T3 T21 
Cond Coverage for Instance : tb.dut.u_main_meas.u_meas.u_sync_ref
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T21 | 
| 1 | 0 | Covered | T1,T3,T21 | 
| 1 | 1 | Covered | T1,T3,T21 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T21 | 
| 1 | 0 | Covered | T1,T3,T21 | 
| 1 | 1 | Covered | T1,T3,T21 | 
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 | 
81698299 | 
50024 | 
0 | 
0 | 
| T1 | 
99885 | 
119 | 
0 | 
0 | 
| T2 | 
93715 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
64 | 
0 | 
0 | 
| T9 | 
0 | 
31 | 
0 | 
0 | 
| T10 | 
0 | 
91 | 
0 | 
0 | 
| T12 | 
0 | 
19 | 
0 | 
0 | 
| T21 | 
0 | 
160 | 
0 | 
0 | 
| T33 | 
4274 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
436 | 
0 | 
0 | 
| T51 | 
9311 | 
0 | 
0 | 
0 | 
| T52 | 
1299 | 
0 | 
0 | 
0 | 
| T53 | 
1633 | 
0 | 
0 | 
0 | 
| T54 | 
5006 | 
0 | 
0 | 
0 | 
| T55 | 
33010 | 
0 | 
0 | 
0 | 
| T56 | 
2606 | 
0 | 
0 | 
0 | 
| T57 | 
12736 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
214 | 
0 | 
0 | 
| T136 | 
0 | 
17 | 
0 | 
0 | 
| T137 | 
0 | 
249 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1057429 | 
49354 | 
0 | 
0 | 
| T1 | 
216 | 
119 | 
0 | 
0 | 
| T2 | 
207 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
64 | 
0 | 
0 | 
| T9 | 
0 | 
31 | 
0 | 
0 | 
| T10 | 
0 | 
91 | 
0 | 
0 | 
| T12 | 
0 | 
19 | 
0 | 
0 | 
| T21 | 
0 | 
160 | 
0 | 
0 | 
| T33 | 
299 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
436 | 
0 | 
0 | 
| T51 | 
651 | 
0 | 
0 | 
0 | 
| T52 | 
91 | 
0 | 
0 | 
0 | 
| T53 | 
114 | 
0 | 
0 | 
0 | 
| T54 | 
350 | 
0 | 
0 | 
0 | 
| T55 | 
2310 | 
0 | 
0 | 
0 | 
| T56 | 
182 | 
0 | 
0 | 
0 | 
| T57 | 
892 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
214 | 
0 | 
0 | 
| T136 | 
0 | 
17 | 
0 | 
0 | 
| T137 | 
0 | 
249 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_usb_meas.u_meas.u_sync_ref
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 7 | 7 | 100.00 | 
| ALWAYS | 31 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 49 | 0 | 0 |  | 
| CONT_ASSIGN | 52 | 0 | 0 |  | 
| ALWAYS | 55 | 0 | 0 |  | 
| ALWAYS | 89 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 97 | 1 | 1 | 100.00 | 
30                        always_ff @(posedge clk_src_i or negedge rst_src_ni) begin
31         1/1              if (!rst_src_ni) begin
           Tests:       T4 T5 T6 
32         1/1                src_level <= 1'b0;
           Tests:       T4 T5 T6 
33                          end else begin
34         1/1                src_level <= src_level ^ src_pulse_i;
           Tests:       T4 T5 T6 
35                          end
36                        end
37                      
38                      
39                        // source active must come far enough such that the destination domain has time
40                        // to create a valid pulse.
41                      `ifdef INC_ASSERT
42                        //VCS coverage off
43                        // pragma coverage off
44                      
45                        // source active flag tracks whether there is an ongoing "toggle" event.
46                        // Until this toggle event is accepted by the destination domain (negative edge of
47                        // of the pulse output), the source side cannot toggle again.
48                        logic effective_rst_n;
49         unreachable    assign effective_rst_n = rst_src_ni && dst_pulse_o;
50                      
51                        logic src_active_flag_d, src_active_flag_q;
52         unreachable    assign src_active_flag_d = src_pulse_i || src_active_flag_q;
53                      
54                        always_ff @(posedge clk_src_i or negedge effective_rst_n) begin
55         unreachable      if (!effective_rst_n) begin
56         unreachable        src_active_flag_q <= '0;
57                          end else begin
58         unreachable        src_active_flag_q <= src_active_flag_d;
59                          end
60                        end
61                      
62                        //VCS coverage on
63                        // pragma coverage on
64                      
65                        `ASSERT(SrcPulseCheck_M, src_pulse_i |-> !src_active_flag_q, clk_src_i, !rst_src_ni)
66                      `endif
67                      
68                        //////////////////////////////////////////////////////////
69                        // synchronize level signal to destination clock domain //
70                        //////////////////////////////////////////////////////////
71                        logic dst_level;
72                      
73                        prim_flop_2sync #(.Width(1)) prim_flop_2sync (
74                          // source clock domain
75                          .d_i    (src_level),
76                          // destination clock domain
77                          .clk_i  (clk_dst_i),
78                          .rst_ni (rst_dst_ni),
79                          .q_o    (dst_level)
80                        );
81                      
82                        ////////////////////////////////////////
83                        // convert level signal back to pulse //
84                        ////////////////////////////////////////
85                        logic dst_level_q;
86                      
87                        // delay dst_level by 1 cycle
88                        always_ff @(posedge clk_dst_i or negedge rst_dst_ni) begin
89         1/1              if (!rst_dst_ni) begin
           Tests:       T4 T5 T6 
90         1/1                dst_level_q <= 1'b0;
           Tests:       T4 T5 T6 
91                          end else begin
92         1/1                dst_level_q <= dst_level;
           Tests:       T4 T5 T6 
93                          end
94                        end
95                      
96                        // edge detection
97         1/1            assign dst_pulse_o = dst_level_q ^ dst_level;
           Tests:       T1 T3 T21 
Cond Coverage for Instance : tb.dut.u_usb_meas.u_meas.u_sync_ref
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       34
 EXPRESSION (src_level ^ src_pulse_i)
             ----1----   -----2-----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T21 | 
| 1 | 0 | Covered | T1,T3,T21 | 
| 1 | 1 | Covered | T1,T3,T21 | 
 LINE       97
 EXPRESSION (dst_level_q ^ dst_level)
             -----1-----   ----2----
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T4,T5,T6 | 
| 0 | 1 | Covered | T1,T3,T21 | 
| 1 | 0 | Covered | T1,T3,T21 | 
| 1 | 1 | Covered | T1,T3,T21 | 
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 | 
39137330 | 
49181 | 
0 | 
0 | 
| T1 | 
47945 | 
119 | 
0 | 
0 | 
| T2 | 
44984 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
64 | 
0 | 
0 | 
| T9 | 
0 | 
31 | 
0 | 
0 | 
| T10 | 
0 | 
91 | 
0 | 
0 | 
| T12 | 
0 | 
19 | 
0 | 
0 | 
| T21 | 
0 | 
148 | 
0 | 
0 | 
| T33 | 
2052 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
514 | 
0 | 
0 | 
| T51 | 
4469 | 
0 | 
0 | 
0 | 
| T52 | 
624 | 
0 | 
0 | 
0 | 
| T53 | 
784 | 
0 | 
0 | 
0 | 
| T54 | 
2402 | 
0 | 
0 | 
0 | 
| T55 | 
15845 | 
0 | 
0 | 
0 | 
| T56 | 
1251 | 
0 | 
0 | 
0 | 
| T57 | 
6113 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
178 | 
0 | 
0 | 
| T136 | 
0 | 
16 | 
0 | 
0 | 
| T137 | 
0 | 
244 | 
0 | 
0 | 
SrcPulseCheck_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1030891 | 
48253 | 
0 | 
0 | 
| T1 | 
216 | 
119 | 
0 | 
0 | 
| T2 | 
207 | 
0 | 
0 | 
0 | 
| T3 | 
0 | 
64 | 
0 | 
0 | 
| T9 | 
0 | 
31 | 
0 | 
0 | 
| T10 | 
0 | 
91 | 
0 | 
0 | 
| T12 | 
0 | 
19 | 
0 | 
0 | 
| T21 | 
0 | 
148 | 
0 | 
0 | 
| T33 | 
299 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
514 | 
0 | 
0 | 
| T51 | 
651 | 
0 | 
0 | 
0 | 
| T52 | 
91 | 
0 | 
0 | 
0 | 
| T53 | 
114 | 
0 | 
0 | 
0 | 
| T54 | 
350 | 
0 | 
0 | 
0 | 
| T55 | 
2310 | 
0 | 
0 | 
0 | 
| T56 | 
182 | 
0 | 
0 | 
0 | 
| T57 | 
892 | 
0 | 
0 | 
0 | 
| T58 | 
0 | 
178 | 
0 | 
0 | 
| T136 | 
0 | 
16 | 
0 | 
0 | 
| T137 | 
0 | 
244 | 
0 | 
0 |