Line Coverage for Module : 
prim_arbiter_ppc ( parameter N=3,DW=75,EnDataPort=1,IdxW=2 + N=5,DW=75,EnDataPort=1,IdxW=3 ) 
Line Coverage for Module self-instances : 
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 22 | 22 | 100.00 | 
| CONT_ASSIGN | 55 | 0 | 0 |  | 
| CONT_ASSIGN | 75 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 76 | 1 | 1 | 100.00 | 
| ALWAYS | 82 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 89 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 90 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 92 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 96 | 5 | 5 | 100.00 | 
| ALWAYS | 109 | 4 | 4 | 100.00 | 
| ALWAYS | 124 | 4 | 4 | 100.00 | 
54                        logic unused_req_chk;
55         unreachable    assign unused_req_chk = req_chk_i;
56                      
57                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
58                      
59                        // this case is basically just a bypass
60                        if (N == 1) begin : gen_degenerate_case
61                      
62                          assign valid_o  = req_i[0];
63                          assign data_o   = data_i[0];
64                          assign gnt_o[0] = valid_o & ready_i;
65                          assign idx_o    = '0;
66                      
67                        end else begin : gen_normal_case
68                      
69                          logic [N-1:0] masked_req;
70                          logic [N-1:0] ppc_out;
71                          logic [N-1:0] arb_req;
72                          logic [N-1:0] mask, mask_next;
73                          logic [N-1:0] winner;
74                      
75         1/1              assign masked_req = mask & req_i;
           Tests:       T1 T2 T3 
76         1/1              assign arb_req = (|masked_req) ? masked_req : req_i;
           Tests:       T1 T2 T3 
77                      
78                          // PPC
79                          //   Even below code looks O(n) but DC optimizes it to O(log(N))
80                          //   Using Parallel Prefix Computation
81                          always_comb begin
82         1/1                ppc_out[0] = arb_req[0];
           Tests:       T1 T2 T3 
83         1/1                for (int i = 1 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
84         1/1                  ppc_out[i] = ppc_out[i-1] | arb_req[i];
           Tests:       T1 T2 T3 
85                            end
86                          end
87                      
88                          // Grant Generation: Leading-One detector
89         1/1              assign winner = ppc_out ^ {ppc_out[N-2:0], 1'b0};
           Tests:       T1 T2 T3 
90         1/1              assign gnt_o    = (ready_i) ? winner : '0;
           Tests:       T1 T2 T3 
91                      
92         1/1              assign valid_o = |req_i;
           Tests:       T1 T2 T3 
93                          // Mask Generation
94         1/1              assign mask_next = {ppc_out[N-2:0], 1'b0};
           Tests:       T1 T2 T3 
95                          always_ff @(posedge clk_i or negedge rst_ni) begin
96         1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
97         1/1                  mask <= '0;
           Tests:       T1 T2 T3 
98         1/1                end else if (valid_o && ready_i) begin
           Tests:       T1 T2 T3 
99                              // Latch only when requests accepted
100        1/1                  mask <= mask_next;
           Tests:       T4 T6 T7 
101        1/1                end else if (valid_o && !ready_i) begin
           Tests:       T1 T2 T3 
102                             // Downstream isn't yet ready so, keep current request alive. (First come first serve)
103        unreachable          mask <= ppc_out;
104                           end
                        MISSING_ELSE
105                         end
106                     
107                         if (EnDataPort == 1) begin: gen_datapath
108                           always_comb begin
109        1/1                  data_o = '0;
           Tests:       T1 T2 T3 
110        1/1                  for (int i = 0 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
111        1/1                    if (winner[i]) begin
           Tests:       T1 T2 T3 
112        1/1                      data_o = data_i[i];
           Tests:       T4 T6 T7 
113                               end
                        MISSING_ELSE
114                             end
115                           end
116                         end else begin: gen_nodatapath
117                           assign data_o = '1;
118                           // The following signal is used to avoid possible lint errors.
119                           logic [DW-1:0] unused_data [N];
120                           assign unused_data = data_i;
121                         end
122                     
123                         always_comb begin
124        1/1                idx_o = '0;
           Tests:       T1 T2 T3 
125        1/1                for (int unsigned i = 0 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
126        1/1                  if (winner[i]) begin
           Tests:       T1 T2 T3 
127        1/1                    idx_o = i[IdxW-1:0];
           Tests:       T4 T6 T7 
128                             end
                        MISSING_ELSE
Line Coverage for Module : 
prim_arbiter_ppc ( parameter N=2,DW=75,EnDataPort=1,IdxW=1 ) 
Line Coverage for Module self-instances : 
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 22 | 22 | 100.00 | 
| CONT_ASSIGN | 55 | 0 | 0 |  | 
| CONT_ASSIGN | 75 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 76 | 1 | 1 | 100.00 | 
| ALWAYS | 82 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 89 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 90 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 92 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 96 | 5 | 5 | 100.00 | 
| ALWAYS | 109 | 4 | 4 | 100.00 | 
| ALWAYS | 124 | 4 | 4 | 100.00 | 
54                        logic unused_req_chk;
55         unreachable    assign unused_req_chk = req_chk_i;
56                      
57                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
58                      
59                        // this case is basically just a bypass
60                        if (N == 1) begin : gen_degenerate_case
61                      
62                          assign valid_o  = req_i[0];
63                          assign data_o   = data_i[0];
64                          assign gnt_o[0] = valid_o & ready_i;
65                          assign idx_o    = '0;
66                      
67                        end else begin : gen_normal_case
68                      
69                          logic [N-1:0] masked_req;
70                          logic [N-1:0] ppc_out;
71                          logic [N-1:0] arb_req;
72                          logic [N-1:0] mask, mask_next;
73                          logic [N-1:0] winner;
74                      
75         1/1              assign masked_req = mask & req_i;
           Tests:       T1 T2 T3 
76         1/1              assign arb_req = (|masked_req) ? masked_req : req_i;
           Tests:       T1 T2 T3 
77                      
78                          // PPC
79                          //   Even below code looks O(n) but DC optimizes it to O(log(N))
80                          //   Using Parallel Prefix Computation
81                          always_comb begin
82         1/1                ppc_out[0] = arb_req[0];
           Tests:       T1 T2 T3 
83         1/1                for (int i = 1 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
84         1/1                  ppc_out[i] = ppc_out[i-1] | arb_req[i];
           Tests:       T1 T2 T3 
85                            end
86                          end
87                      
88                          // Grant Generation: Leading-One detector
89         1/1              assign winner = ppc_out ^ {ppc_out[N-2:0], 1'b0};
           Tests:       T1 T2 T3 
90         1/1              assign gnt_o    = (ready_i) ? winner : '0;
           Tests:       T1 T2 T3 
91                      
92         1/1              assign valid_o = |req_i;
           Tests:       T1 T2 T3 
93                          // Mask Generation
94         1/1              assign mask_next = {ppc_out[N-2:0], 1'b0};
           Tests:       T1 T2 T3 
95                          always_ff @(posedge clk_i or negedge rst_ni) begin
96         1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
97         1/1                  mask <= '0;
           Tests:       T1 T2 T3 
98         1/1                end else if (valid_o && ready_i) begin
           Tests:       T3 T5 T6 
99                              // Latch only when requests accepted
100        1/1                  mask <= mask_next;
           Tests:       T6 T12 T26 
101        1/1                end else if (valid_o && !ready_i) begin
           Tests:       T3 T5 T6 
102                             // Downstream isn't yet ready so, keep current request alive. (First come first serve)
103        unreachable          mask <= ppc_out;
104                           end
                        MISSING_ELSE
105                         end
106                     
107                         if (EnDataPort == 1) begin: gen_datapath
108                           always_comb begin
109        1/1                  data_o = '0;
           Tests:       T1 T2 T3 
110        1/1                  for (int i = 0 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
111        1/1                    if (winner[i]) begin
           Tests:       T1 T2 T3 
112        1/1                      data_o = data_i[i];
           Tests:       T6 T12 T26 
113                               end
                        MISSING_ELSE
114                             end
115                           end
116                         end else begin: gen_nodatapath
117                           assign data_o = '1;
118                           // The following signal is used to avoid possible lint errors.
119                           logic [DW-1:0] unused_data [N];
120                           assign unused_data = data_i;
121                         end
122                     
123                         always_comb begin
124        1/1                idx_o = '0;
           Tests:       T1 T2 T3 
125        1/1                for (int unsigned i = 0 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
126        1/1                  if (winner[i]) begin
           Tests:       T1 T2 T3 
127        1/1                    idx_o = i[IdxW-1:0];
           Tests:       T6 T12 T26 
128                             end
                        MISSING_ELSE
Cond Coverage for Module : 
prim_arbiter_ppc ( parameter N=2,DW=75,EnDataPort=1,IdxW=1 ) 
Cond Coverage for Module self-instances : 
 | Total | Covered | Percent | 
| Conditions | 9 | 7 | 77.78 | 
| Logical | 9 | 7 | 77.78 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       76
 EXPRESSION (((|gen_normal_case.masked_req)) ? gen_normal_case.masked_req : req_i)
             ---------------1---------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Not Covered |  | 
 LINE       84
 EXPRESSION (gen_normal_case.ppc_out[(i - 1)] | gen_normal_case.arb_req[i])
             ----------------1---------------   -------------2------------
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T6,T12,T26 | 
| 1 | 0 | Covered | T6,T12,T26 | 
 LINE       90
 EXPRESSION (ready_i ? gen_normal_case.winner : '0)
             ---1---
| -1- | Status | Tests |                       
| 0 | Unreachable |  | 
| 1 | Covered | T1,T2,T3 | 
 LINE       98
 EXPRESSION (valid_o && ready_i)
             ---1---    ---2---
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T3,T5,T6 | 
| 1 | 0 | Unreachable |  | 
| 1 | 1 | Covered | T6,T12,T26 | 
 LINE       101
 EXPRESSION (valid_o && ((!ready_i)))
             ---1---    ------2-----
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Not Covered |  | 
| 1 | 1 | Unreachable |  | 
Cond Coverage for Module : 
prim_arbiter_ppc ( parameter N=3,DW=75,EnDataPort=1,IdxW=2 ) 
Cond Coverage for Module self-instances : 
 | Total | Covered | Percent | 
| Conditions | 9 | 8 | 88.89 | 
| Logical | 9 | 8 | 88.89 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       76
 EXPRESSION (((|gen_normal_case.masked_req)) ? gen_normal_case.masked_req : req_i)
             ---------------1---------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T13,T36,T38 | 
 LINE       84
 EXPRESSION (gen_normal_case.ppc_out[(i - 1)] | gen_normal_case.arb_req[i])
             ----------------1---------------   -------------2------------
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T13,T36,T38 | 
| 1 | 0 | Covered | T13,T36,T38 | 
 LINE       90
 EXPRESSION (ready_i ? gen_normal_case.winner : '0)
             ---1---
| -1- | Status | Tests |                       
| 0 | Unreachable |  | 
| 1 | Covered | T1,T2,T3 | 
 LINE       98
 EXPRESSION (valid_o && ready_i)
             ---1---    ---2---
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T7,T8 | 
| 1 | 0 | Unreachable |  | 
| 1 | 1 | Covered | T13,T36,T38 | 
 LINE       101
 EXPRESSION (valid_o && ((!ready_i)))
             ---1---    ------2-----
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Not Covered |  | 
| 1 | 1 | Unreachable |  | 
Cond Coverage for Module : 
prim_arbiter_ppc ( parameter N=5,DW=75,EnDataPort=1,IdxW=3 ) 
Cond Coverage for Module self-instances : 
 | Total | Covered | Percent | 
| Conditions | 9 | 8 | 88.89 | 
| Logical | 9 | 8 | 88.89 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       76
 EXPRESSION (((|gen_normal_case.masked_req)) ? gen_normal_case.masked_req : req_i)
             ---------------1---------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T6,T12,T13 | 
 LINE       84
 EXPRESSION (gen_normal_case.ppc_out[(i - 1)] | gen_normal_case.arb_req[i])
             ----------------1---------------   -------------2------------
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T6,T12,T13 | 
| 1 | 0 | Covered | T4,T6,T7 | 
 LINE       90
 EXPRESSION (ready_i ? gen_normal_case.winner : '0)
             ---1---
| -1- | Status | Tests |                       
| 0 | Unreachable |  | 
| 1 | Covered | T1,T2,T3 | 
 LINE       98
 EXPRESSION (valid_o && ready_i)
             ---1---    ---2---
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
| 1 | 1 | Covered | T4,T6,T7 | 
 LINE       101
 EXPRESSION (valid_o && ((!ready_i)))
             ---1---    ------2-----
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Not Covered |  | 
| 1 | 1 | Unreachable |  | 
Branch Coverage for Module : 
prim_arbiter_ppc
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
10 | 
10 | 
100.00 | 
| TERNARY | 
76 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
90 | 
1 | 
1 | 
100.00 | 
| IF | 
96 | 
3 | 
3 | 
100.00 | 
| IF | 
126 | 
2 | 
2 | 
100.00 | 
| IF | 
111 | 
2 | 
2 | 
100.00 | 
76             assign arb_req = (|masked_req) ? masked_req : req_i;
                                              -1-  
                                              ==>  
                                              ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T6,T12,T13 | 
| 0 | 
Covered | 
T1,T2,T3 | 
90             assign gnt_o    = (ready_i) ? winner : '0;
                                           -1-  
                                           ==>  
                                           ==> (Unreachable)  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Unreachable | 
 | 
96               if (!rst_ni) begin
                 -1-  
97                 mask <= '0;
                   ==>
98               end else if (valid_o && ready_i) begin
                          -2-  
99                 // Latch only when requests accepted
100                mask <= mask_next;
                   ==>
101              end else if (valid_o && !ready_i) begin
                          -3-  
102                // Downstream isn't yet ready so, keep current request alive. (First come first serve)
103                mask <= ppc_out;
                   ==> (Unreachable)
104              end
                 MISSING_ELSE
                 ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
1 | 
- | 
Covered | 
T4,T6,T7 | 
| 0 | 
0 | 
1 | 
Unreachable | 
 | 
| 0 | 
0 | 
0 | 
Covered | 
T1,T3,T4 | 
126                if (winner[i]) begin
                   -1-  
127                  idx_o = i[IdxW-1:0];
                     ==>
128                end
                   MISSING_ELSE
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T6,T7 | 
| 0 | 
Covered | 
T1,T2,T3 | 
111                  if (winner[i]) begin
                     -1-  
112                    data_o = data_i[i];
                       ==>
113                  end
                     MISSING_ELSE
                     ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T6,T7 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Module : 
prim_arbiter_ppc
Assertion Details
CheckHotOne_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
607413786 | 
0 | 
0 | 
| T1 | 
1098 | 
1022 | 
0 | 
0 | 
| T2 | 
718 | 
619 | 
0 | 
0 | 
| T3 | 
3510 | 
3419 | 
0 | 
0 | 
| T4 | 
7979 | 
7563 | 
0 | 
0 | 
| T5 | 
282783 | 
159838 | 
0 | 
0 | 
| T6 | 
12826 | 
11570 | 
0 | 
0 | 
| T7 | 
115868 | 
69338 | 
0 | 
0 | 
| T8 | 
214965 | 
161168 | 
0 | 
0 | 
| T9 | 
31717 | 
28053 | 
0 | 
0 | 
| T10 | 
15053 | 
12874 | 
0 | 
0 | 
| T11 | 
134824 | 
67412 | 
0 | 
0 | 
| T12 | 
875398 | 
432056 | 
0 | 
0 | 
| T13 | 
100164 | 
99724 | 
0 | 
0 | 
| T14 | 
0 | 
21545 | 
0 | 
0 | 
| T17 | 
0 | 
8624 | 
0 | 
0 | 
| T21 | 
0 | 
328208 | 
0 | 
0 | 
| T24 | 
0 | 
864 | 
0 | 
0 | 
| T26 | 
0 | 
43136 | 
0 | 
0 | 
| T27 | 
0 | 
100040 | 
0 | 
0 | 
| T28 | 
0 | 
2608 | 
0 | 
0 | 
| T29 | 
0 | 
19592 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2868 | 
2868 | 
0 | 
0 | 
| T1 | 
3 | 
3 | 
0 | 
0 | 
| T2 | 
3 | 
3 | 
0 | 
0 | 
| T3 | 
3 | 
3 | 
0 | 
0 | 
| T4 | 
3 | 
3 | 
0 | 
0 | 
| T5 | 
3 | 
3 | 
0 | 
0 | 
| T6 | 
3 | 
3 | 
0 | 
0 | 
| T7 | 
3 | 
3 | 
0 | 
0 | 
| T8 | 
3 | 
3 | 
0 | 
0 | 
| T9 | 
3 | 
3 | 
0 | 
0 | 
| T10 | 
3 | 
3 | 
0 | 
0 | 
GntImpliesReady_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
3906991 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
11650 | 
132 | 
0 | 
0 | 
| T7 | 
69392 | 
832 | 
0 | 
0 | 
| T8 | 
162160 | 
832 | 
0 | 
0 | 
| T9 | 
28149 | 
832 | 
0 | 
0 | 
| T10 | 
12971 | 
832 | 
0 | 
0 | 
| T11 | 
474943 | 
832 | 
0 | 
0 | 
| T12 | 
691565 | 
10440 | 
0 | 
0 | 
| T13 | 
908164 | 
840 | 
0 | 
0 | 
| T14 | 
43606 | 
832 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
4120 | 
0 | 
0 | 
| T24 | 
1728 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
4300 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
10524 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
3906991 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
11650 | 
132 | 
0 | 
0 | 
| T7 | 
69392 | 
832 | 
0 | 
0 | 
| T8 | 
162160 | 
832 | 
0 | 
0 | 
| T9 | 
28149 | 
832 | 
0 | 
0 | 
| T10 | 
12971 | 
832 | 
0 | 
0 | 
| T11 | 
474943 | 
832 | 
0 | 
0 | 
| T12 | 
691565 | 
10440 | 
0 | 
0 | 
| T13 | 
908164 | 
840 | 
0 | 
0 | 
| T14 | 
43606 | 
832 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
4120 | 
0 | 
0 | 
| T24 | 
1728 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
4300 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
10524 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
607413786 | 
0 | 
0 | 
| T1 | 
1098 | 
1022 | 
0 | 
0 | 
| T2 | 
718 | 
619 | 
0 | 
0 | 
| T3 | 
3510 | 
3419 | 
0 | 
0 | 
| T4 | 
7979 | 
7563 | 
0 | 
0 | 
| T5 | 
282783 | 
159838 | 
0 | 
0 | 
| T6 | 
12826 | 
11570 | 
0 | 
0 | 
| T7 | 
115868 | 
69338 | 
0 | 
0 | 
| T8 | 
214965 | 
161168 | 
0 | 
0 | 
| T9 | 
31717 | 
28053 | 
0 | 
0 | 
| T10 | 
15053 | 
12874 | 
0 | 
0 | 
| T11 | 
134824 | 
67412 | 
0 | 
0 | 
| T12 | 
875398 | 
432056 | 
0 | 
0 | 
| T13 | 
100164 | 
99724 | 
0 | 
0 | 
| T14 | 
0 | 
21545 | 
0 | 
0 | 
| T17 | 
0 | 
8624 | 
0 | 
0 | 
| T21 | 
0 | 
328208 | 
0 | 
0 | 
| T24 | 
0 | 
864 | 
0 | 
0 | 
| T26 | 
0 | 
43136 | 
0 | 
0 | 
| T27 | 
0 | 
100040 | 
0 | 
0 | 
| T28 | 
0 | 
2608 | 
0 | 
0 | 
| T29 | 
0 | 
19592 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
607413786 | 
0 | 
0 | 
| T1 | 
1098 | 
1022 | 
0 | 
0 | 
| T2 | 
718 | 
619 | 
0 | 
0 | 
| T3 | 
3510 | 
3419 | 
0 | 
0 | 
| T4 | 
7979 | 
7563 | 
0 | 
0 | 
| T5 | 
282783 | 
159838 | 
0 | 
0 | 
| T6 | 
12826 | 
11570 | 
0 | 
0 | 
| T7 | 
115868 | 
69338 | 
0 | 
0 | 
| T8 | 
214965 | 
161168 | 
0 | 
0 | 
| T9 | 
31717 | 
28053 | 
0 | 
0 | 
| T10 | 
15053 | 
12874 | 
0 | 
0 | 
| T11 | 
134824 | 
67412 | 
0 | 
0 | 
| T12 | 
875398 | 
432056 | 
0 | 
0 | 
| T13 | 
100164 | 
99724 | 
0 | 
0 | 
| T14 | 
0 | 
21545 | 
0 | 
0 | 
| T17 | 
0 | 
8624 | 
0 | 
0 | 
| T21 | 
0 | 
328208 | 
0 | 
0 | 
| T24 | 
0 | 
864 | 
0 | 
0 | 
| T26 | 
0 | 
43136 | 
0 | 
0 | 
| T27 | 
0 | 
100040 | 
0 | 
0 | 
| T28 | 
0 | 
2608 | 
0 | 
0 | 
| T29 | 
0 | 
19592 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
3906991 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
11650 | 
132 | 
0 | 
0 | 
| T7 | 
69392 | 
832 | 
0 | 
0 | 
| T8 | 
162160 | 
832 | 
0 | 
0 | 
| T9 | 
28149 | 
832 | 
0 | 
0 | 
| T10 | 
12971 | 
832 | 
0 | 
0 | 
| T11 | 
474943 | 
832 | 
0 | 
0 | 
| T12 | 
691565 | 
10440 | 
0 | 
0 | 
| T13 | 
908164 | 
840 | 
0 | 
0 | 
| T14 | 
43606 | 
832 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
4120 | 
0 | 
0 | 
| T24 | 
1728 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
4300 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
10524 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
0 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
0 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
3906991 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
11650 | 
132 | 
0 | 
0 | 
| T7 | 
69392 | 
832 | 
0 | 
0 | 
| T8 | 
162160 | 
832 | 
0 | 
0 | 
| T9 | 
28149 | 
832 | 
0 | 
0 | 
| T10 | 
12971 | 
832 | 
0 | 
0 | 
| T11 | 
474943 | 
832 | 
0 | 
0 | 
| T12 | 
691565 | 
10440 | 
0 | 
0 | 
| T13 | 
908164 | 
840 | 
0 | 
0 | 
| T14 | 
43606 | 
832 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
4120 | 
0 | 
0 | 
| T24 | 
1728 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
4300 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
10524 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
3906991 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
11650 | 
132 | 
0 | 
0 | 
| T7 | 
69392 | 
832 | 
0 | 
0 | 
| T8 | 
162160 | 
832 | 
0 | 
0 | 
| T9 | 
28149 | 
832 | 
0 | 
0 | 
| T10 | 
12971 | 
832 | 
0 | 
0 | 
| T11 | 
474943 | 
832 | 
0 | 
0 | 
| T12 | 
691565 | 
10440 | 
0 | 
0 | 
| T13 | 
908164 | 
840 | 
0 | 
0 | 
| T14 | 
43606 | 
832 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
4120 | 
0 | 
0 | 
| T24 | 
1728 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
4300 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
10524 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
3906991 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
11650 | 
132 | 
0 | 
0 | 
| T7 | 
69392 | 
832 | 
0 | 
0 | 
| T8 | 
162160 | 
832 | 
0 | 
0 | 
| T9 | 
28149 | 
832 | 
0 | 
0 | 
| T10 | 
12971 | 
832 | 
0 | 
0 | 
| T11 | 
474943 | 
832 | 
0 | 
0 | 
| T12 | 
691565 | 
10440 | 
0 | 
0 | 
| T13 | 
908164 | 
840 | 
0 | 
0 | 
| T14 | 
43606 | 
832 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
4120 | 
0 | 
0 | 
| T24 | 
1728 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
4300 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
10524 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
0 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
5 | 
0 | 
956 | 
| T64 | 
573642 | 
1 | 
0 | 
1 | 
| T65 | 
0 | 
1 | 
0 | 
0 | 
| T66 | 
0 | 
1 | 
0 | 
0 | 
| T67 | 
0 | 
1 | 
0 | 
0 | 
| T68 | 
0 | 
1 | 
0 | 
0 | 
| T69 | 
2432 | 
0 | 
0 | 
1 | 
| T70 | 
999 | 
0 | 
0 | 
1 | 
| T71 | 
518583 | 
0 | 
0 | 
1 | 
| T72 | 
156031 | 
0 | 
0 | 
1 | 
| T73 | 
597249 | 
0 | 
0 | 
1 | 
| T74 | 
798754 | 
0 | 
0 | 
1 | 
| T75 | 
360434 | 
0 | 
0 | 
1 | 
| T76 | 
96542 | 
0 | 
0 | 
1 | 
| T77 | 
10801 | 
0 | 
0 | 
1 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
607413786 | 
0 | 
0 | 
| T1 | 
1098 | 
1022 | 
0 | 
0 | 
| T2 | 
718 | 
619 | 
0 | 
0 | 
| T3 | 
3510 | 
3419 | 
0 | 
0 | 
| T4 | 
7979 | 
7563 | 
0 | 
0 | 
| T5 | 
282783 | 
159838 | 
0 | 
0 | 
| T6 | 
12826 | 
11570 | 
0 | 
0 | 
| T7 | 
115868 | 
69338 | 
0 | 
0 | 
| T8 | 
214965 | 
161168 | 
0 | 
0 | 
| T9 | 
31717 | 
28053 | 
0 | 
0 | 
| T10 | 
15053 | 
12874 | 
0 | 
0 | 
| T11 | 
134824 | 
67412 | 
0 | 
0 | 
| T12 | 
875398 | 
432056 | 
0 | 
0 | 
| T13 | 
100164 | 
99724 | 
0 | 
0 | 
| T14 | 
0 | 
21545 | 
0 | 
0 | 
| T17 | 
0 | 
8624 | 
0 | 
0 | 
| T21 | 
0 | 
328208 | 
0 | 
0 | 
| T24 | 
0 | 
864 | 
0 | 
0 | 
| T26 | 
0 | 
43136 | 
0 | 
0 | 
| T27 | 
0 | 
100040 | 
0 | 
0 | 
| T28 | 
0 | 
2608 | 
0 | 
0 | 
| T29 | 
0 | 
19592 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
764827754 | 
3906991 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
11650 | 
132 | 
0 | 
0 | 
| T7 | 
69392 | 
832 | 
0 | 
0 | 
| T8 | 
162160 | 
832 | 
0 | 
0 | 
| T9 | 
28149 | 
832 | 
0 | 
0 | 
| T10 | 
12971 | 
832 | 
0 | 
0 | 
| T11 | 
474943 | 
832 | 
0 | 
0 | 
| T12 | 
691565 | 
10440 | 
0 | 
0 | 
| T13 | 
908164 | 
840 | 
0 | 
0 | 
| T14 | 
43606 | 
832 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
4120 | 
0 | 
0 | 
| T24 | 
1728 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
4300 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
10524 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_spi_tpm.u_arbiter.gen_arb_ppc.u_reqarb
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 22 | 22 | 100.00 | 
| CONT_ASSIGN | 55 | 0 | 0 |  | 
| CONT_ASSIGN | 75 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 76 | 1 | 1 | 100.00 | 
| ALWAYS | 82 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 89 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 90 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 92 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 96 | 5 | 5 | 100.00 | 
| ALWAYS | 109 | 4 | 4 | 100.00 | 
| ALWAYS | 124 | 4 | 4 | 100.00 | 
54                        logic unused_req_chk;
55         unreachable    assign unused_req_chk = req_chk_i;
56                      
57                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
58                      
59                        // this case is basically just a bypass
60                        if (N == 1) begin : gen_degenerate_case
61                      
62                          assign valid_o  = req_i[0];
63                          assign data_o   = data_i[0];
64                          assign gnt_o[0] = valid_o & ready_i;
65                          assign idx_o    = '0;
66                      
67                        end else begin : gen_normal_case
68                      
69                          logic [N-1:0] masked_req;
70                          logic [N-1:0] ppc_out;
71                          logic [N-1:0] arb_req;
72                          logic [N-1:0] mask, mask_next;
73                          logic [N-1:0] winner;
74                      
75         1/1              assign masked_req = mask & req_i;
           Tests:       T1 T2 T3 
76         1/1              assign arb_req = (|masked_req) ? masked_req : req_i;
           Tests:       T1 T2 T3 
77                      
78                          // PPC
79                          //   Even below code looks O(n) but DC optimizes it to O(log(N))
80                          //   Using Parallel Prefix Computation
81                          always_comb begin
82         1/1                ppc_out[0] = arb_req[0];
           Tests:       T1 T2 T3 
83         1/1                for (int i = 1 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
84         1/1                  ppc_out[i] = ppc_out[i-1] | arb_req[i];
           Tests:       T1 T2 T3 
85                            end
86                          end
87                      
88                          // Grant Generation: Leading-One detector
89         1/1              assign winner = ppc_out ^ {ppc_out[N-2:0], 1'b0};
           Tests:       T1 T2 T3 
90         1/1              assign gnt_o    = (ready_i) ? winner : '0;
           Tests:       T1 T2 T3 
91                      
92         1/1              assign valid_o = |req_i;
           Tests:       T1 T2 T3 
93                          // Mask Generation
94         1/1              assign mask_next = {ppc_out[N-2:0], 1'b0};
           Tests:       T1 T2 T3 
95                          always_ff @(posedge clk_i or negedge rst_ni) begin
96         1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
97         1/1                  mask <= '0;
           Tests:       T1 T2 T3 
98         1/1                end else if (valid_o && ready_i) begin
           Tests:       T3 T5 T6 
99                              // Latch only when requests accepted
100        1/1                  mask <= mask_next;
           Tests:       T6 T12 T26 
101        1/1                end else if (valid_o && !ready_i) begin
           Tests:       T3 T5 T6 
102                             // Downstream isn't yet ready so, keep current request alive. (First come first serve)
103        unreachable          mask <= ppc_out;
104                           end
                        MISSING_ELSE
105                         end
106                     
107                         if (EnDataPort == 1) begin: gen_datapath
108                           always_comb begin
109        1/1                  data_o = '0;
           Tests:       T1 T2 T3 
110        1/1                  for (int i = 0 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
111        1/1                    if (winner[i]) begin
           Tests:       T1 T2 T3 
112        1/1                      data_o = data_i[i];
           Tests:       T6 T12 T26 
113                               end
                        MISSING_ELSE
114                             end
115                           end
116                         end else begin: gen_nodatapath
117                           assign data_o = '1;
118                           // The following signal is used to avoid possible lint errors.
119                           logic [DW-1:0] unused_data [N];
120                           assign unused_data = data_i;
121                         end
122                     
123                         always_comb begin
124        1/1                idx_o = '0;
           Tests:       T1 T2 T3 
125        1/1                for (int unsigned i = 0 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
126        1/1                  if (winner[i]) begin
           Tests:       T1 T2 T3 
127        1/1                    idx_o = i[IdxW-1:0];
           Tests:       T6 T12 T26 
128                             end
                        MISSING_ELSE
Cond Coverage for Instance : tb.dut.u_spi_tpm.u_arbiter.gen_arb_ppc.u_reqarb
 | Total | Covered | Percent | 
| Conditions | 8 | 7 | 87.50 | 
| Logical | 8 | 7 | 87.50 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       76
 EXPRESSION (((|gen_normal_case.masked_req)) ? gen_normal_case.masked_req : req_i)
             ---------------1---------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Not Covered |  | 
 LINE       84
 EXPRESSION (gen_normal_case.ppc_out[(i - 1)] | gen_normal_case.arb_req[i])
             ----------------1---------------   -------------2------------
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T6,T12,T26 | 
| 1 | 0 | Covered | T6,T12,T26 | 
 LINE       90
 EXPRESSION (ready_i ? gen_normal_case.winner : '0)
             ---1---
| -1- | Status | Tests |                       
| 0 | Unreachable |  | 
| 1 | Covered | T1,T2,T3 | 
 LINE       98
 EXPRESSION (valid_o && ready_i)
             ---1---    ---2---
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T3,T5,T6 | 
| 1 | 0 | Unreachable |  | 
| 1 | 1 | Covered | T6,T12,T26 | 
 LINE       101
 EXPRESSION (valid_o && ((!ready_i)))
             ---1---    ------2-----
| -1- | -2- | Status | Tests | Exclude Annotation | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Excluded |  | 
VC_COV_UNR | 
| 1 | 1 | Unreachable |  | 
Branch Coverage for Instance : tb.dut.u_spi_tpm.u_arbiter.gen_arb_ppc.u_reqarb
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
10 | 
9 | 
90.00  | 
| TERNARY | 
76 | 
2 | 
1 | 
50.00  | 
| TERNARY | 
90 | 
1 | 
1 | 
100.00 | 
| IF | 
96 | 
3 | 
3 | 
100.00 | 
| IF | 
126 | 
2 | 
2 | 
100.00 | 
| IF | 
111 | 
2 | 
2 | 
100.00 | 
76             assign arb_req = (|masked_req) ? masked_req : req_i;
                                              -1-  
                                              ==>  
                                              ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Not Covered | 
 | 
| 0 | 
Covered | 
T1,T2,T3 | 
90             assign gnt_o    = (ready_i) ? winner : '0;
                                           -1-  
                                           ==>  
                                           ==> (Unreachable)  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Unreachable | 
 | 
96               if (!rst_ni) begin
                 -1-  
97                 mask <= '0;
                   ==>
98               end else if (valid_o && ready_i) begin
                          -2-  
99                 // Latch only when requests accepted
100                mask <= mask_next;
                   ==>
101              end else if (valid_o && !ready_i) begin
                          -3-  
102                // Downstream isn't yet ready so, keep current request alive. (First come first serve)
103                mask <= ppc_out;
                   ==> (Unreachable)
104              end
                 MISSING_ELSE
                 ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
1 | 
- | 
Covered | 
T6,T12,T26 | 
| 0 | 
0 | 
1 | 
Unreachable | 
 | 
| 0 | 
0 | 
0 | 
Covered | 
T3,T5,T6 | 
126                if (winner[i]) begin
                   -1-  
127                  idx_o = i[IdxW-1:0];
                     ==>
128                end
                   MISSING_ELSE
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T6,T12,T26 | 
| 0 | 
Covered | 
T1,T2,T3 | 
111                  if (winner[i]) begin
                     -1-  
112                    data_o = data_i[i];
                       ==>
113                  end
                     MISSING_ELSE
                     ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T6,T12,T26 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_spi_tpm.u_arbiter.gen_arb_ppc.u_reqarb
Assertion Details
CheckHotOne_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
30066769 | 
0 | 
0 | 
| T3 | 
576 | 
576 | 
0 | 
0 | 
| T4 | 
352 | 
0 | 
0 | 
0 | 
| T5 | 
118137 | 
113416 | 
0 | 
0 | 
| T6 | 
1176 | 
1176 | 
0 | 
0 | 
| T7 | 
46476 | 
0 | 
0 | 
0 | 
| T8 | 
52805 | 
0 | 
0 | 
0 | 
| T9 | 
3568 | 
0 | 
0 | 
0 | 
| T10 | 
2082 | 
0 | 
0 | 
0 | 
| T11 | 
67412 | 
0 | 
0 | 
0 | 
| T12 | 
437699 | 
432056 | 
0 | 
0 | 
| T21 | 
0 | 
328208 | 
0 | 
0 | 
| T24 | 
0 | 
864 | 
0 | 
0 | 
| T26 | 
0 | 
43136 | 
0 | 
0 | 
| T27 | 
0 | 
100040 | 
0 | 
0 | 
| T28 | 
0 | 
2608 | 
0 | 
0 | 
| T29 | 
0 | 
19592 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
956 | 
956 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
GntImpliesReady_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
659538 | 
0 | 
0 | 
| T6 | 
1176 | 
102 | 
0 | 
0 | 
| T7 | 
46476 | 
0 | 
0 | 
0 | 
| T8 | 
52805 | 
0 | 
0 | 
0 | 
| T9 | 
3568 | 
0 | 
0 | 
0 | 
| T10 | 
2082 | 
0 | 
0 | 
0 | 
| T11 | 
67412 | 
0 | 
0 | 
0 | 
| T12 | 
437699 | 
7057 | 
0 | 
0 | 
| T13 | 
100164 | 
0 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
3663 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
3416 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
6833 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
659538 | 
0 | 
0 | 
| T6 | 
1176 | 
102 | 
0 | 
0 | 
| T7 | 
46476 | 
0 | 
0 | 
0 | 
| T8 | 
52805 | 
0 | 
0 | 
0 | 
| T9 | 
3568 | 
0 | 
0 | 
0 | 
| T10 | 
2082 | 
0 | 
0 | 
0 | 
| T11 | 
67412 | 
0 | 
0 | 
0 | 
| T12 | 
437699 | 
7057 | 
0 | 
0 | 
| T13 | 
100164 | 
0 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
3663 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
3416 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
6833 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
30066769 | 
0 | 
0 | 
| T3 | 
576 | 
576 | 
0 | 
0 | 
| T4 | 
352 | 
0 | 
0 | 
0 | 
| T5 | 
118137 | 
113416 | 
0 | 
0 | 
| T6 | 
1176 | 
1176 | 
0 | 
0 | 
| T7 | 
46476 | 
0 | 
0 | 
0 | 
| T8 | 
52805 | 
0 | 
0 | 
0 | 
| T9 | 
3568 | 
0 | 
0 | 
0 | 
| T10 | 
2082 | 
0 | 
0 | 
0 | 
| T11 | 
67412 | 
0 | 
0 | 
0 | 
| T12 | 
437699 | 
432056 | 
0 | 
0 | 
| T21 | 
0 | 
328208 | 
0 | 
0 | 
| T24 | 
0 | 
864 | 
0 | 
0 | 
| T26 | 
0 | 
43136 | 
0 | 
0 | 
| T27 | 
0 | 
100040 | 
0 | 
0 | 
| T28 | 
0 | 
2608 | 
0 | 
0 | 
| T29 | 
0 | 
19592 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
30066769 | 
0 | 
0 | 
| T3 | 
576 | 
576 | 
0 | 
0 | 
| T4 | 
352 | 
0 | 
0 | 
0 | 
| T5 | 
118137 | 
113416 | 
0 | 
0 | 
| T6 | 
1176 | 
1176 | 
0 | 
0 | 
| T7 | 
46476 | 
0 | 
0 | 
0 | 
| T8 | 
52805 | 
0 | 
0 | 
0 | 
| T9 | 
3568 | 
0 | 
0 | 
0 | 
| T10 | 
2082 | 
0 | 
0 | 
0 | 
| T11 | 
67412 | 
0 | 
0 | 
0 | 
| T12 | 
437699 | 
432056 | 
0 | 
0 | 
| T21 | 
0 | 
328208 | 
0 | 
0 | 
| T24 | 
0 | 
864 | 
0 | 
0 | 
| T26 | 
0 | 
43136 | 
0 | 
0 | 
| T27 | 
0 | 
100040 | 
0 | 
0 | 
| T28 | 
0 | 
2608 | 
0 | 
0 | 
| T29 | 
0 | 
19592 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
659538 | 
0 | 
0 | 
| T6 | 
1176 | 
102 | 
0 | 
0 | 
| T7 | 
46476 | 
0 | 
0 | 
0 | 
| T8 | 
52805 | 
0 | 
0 | 
0 | 
| T9 | 
3568 | 
0 | 
0 | 
0 | 
| T10 | 
2082 | 
0 | 
0 | 
0 | 
| T11 | 
67412 | 
0 | 
0 | 
0 | 
| T12 | 
437699 | 
7057 | 
0 | 
0 | 
| T13 | 
100164 | 
0 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
3663 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
3416 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
6833 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
0 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
0 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
659538 | 
0 | 
0 | 
| T6 | 
1176 | 
102 | 
0 | 
0 | 
| T7 | 
46476 | 
0 | 
0 | 
0 | 
| T8 | 
52805 | 
0 | 
0 | 
0 | 
| T9 | 
3568 | 
0 | 
0 | 
0 | 
| T10 | 
2082 | 
0 | 
0 | 
0 | 
| T11 | 
67412 | 
0 | 
0 | 
0 | 
| T12 | 
437699 | 
7057 | 
0 | 
0 | 
| T13 | 
100164 | 
0 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
3663 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
3416 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
6833 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
659538 | 
0 | 
0 | 
| T6 | 
1176 | 
102 | 
0 | 
0 | 
| T7 | 
46476 | 
0 | 
0 | 
0 | 
| T8 | 
52805 | 
0 | 
0 | 
0 | 
| T9 | 
3568 | 
0 | 
0 | 
0 | 
| T10 | 
2082 | 
0 | 
0 | 
0 | 
| T11 | 
67412 | 
0 | 
0 | 
0 | 
| T12 | 
437699 | 
7057 | 
0 | 
0 | 
| T13 | 
100164 | 
0 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
3663 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
3416 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
6833 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
659538 | 
0 | 
0 | 
| T6 | 
1176 | 
102 | 
0 | 
0 | 
| T7 | 
46476 | 
0 | 
0 | 
0 | 
| T8 | 
52805 | 
0 | 
0 | 
0 | 
| T9 | 
3568 | 
0 | 
0 | 
0 | 
| T10 | 
2082 | 
0 | 
0 | 
0 | 
| T11 | 
67412 | 
0 | 
0 | 
0 | 
| T12 | 
437699 | 
7057 | 
0 | 
0 | 
| T13 | 
100164 | 
0 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
3663 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
3416 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
6833 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
0 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
0 | 
0 | 
0 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
30066769 | 
0 | 
0 | 
| T3 | 
576 | 
576 | 
0 | 
0 | 
| T4 | 
352 | 
0 | 
0 | 
0 | 
| T5 | 
118137 | 
113416 | 
0 | 
0 | 
| T6 | 
1176 | 
1176 | 
0 | 
0 | 
| T7 | 
46476 | 
0 | 
0 | 
0 | 
| T8 | 
52805 | 
0 | 
0 | 
0 | 
| T9 | 
3568 | 
0 | 
0 | 
0 | 
| T10 | 
2082 | 
0 | 
0 | 
0 | 
| T11 | 
67412 | 
0 | 
0 | 
0 | 
| T12 | 
437699 | 
432056 | 
0 | 
0 | 
| T21 | 
0 | 
328208 | 
0 | 
0 | 
| T24 | 
0 | 
864 | 
0 | 
0 | 
| T26 | 
0 | 
43136 | 
0 | 
0 | 
| T27 | 
0 | 
100040 | 
0 | 
0 | 
| T28 | 
0 | 
2608 | 
0 | 
0 | 
| T29 | 
0 | 
19592 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
659538 | 
0 | 
0 | 
| T6 | 
1176 | 
102 | 
0 | 
0 | 
| T7 | 
46476 | 
0 | 
0 | 
0 | 
| T8 | 
52805 | 
0 | 
0 | 
0 | 
| T9 | 
3568 | 
0 | 
0 | 
0 | 
| T10 | 
2082 | 
0 | 
0 | 
0 | 
| T11 | 
67412 | 
0 | 
0 | 
0 | 
| T12 | 
437699 | 
7057 | 
0 | 
0 | 
| T13 | 
100164 | 
0 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
3663 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
0 | 
1851 | 
0 | 
0 | 
| T28 | 
0 | 
134 | 
0 | 
0 | 
| T42 | 
0 | 
2474 | 
0 | 
0 | 
| T44 | 
0 | 
281 | 
0 | 
0 | 
| T48 | 
0 | 
3416 | 
0 | 
0 | 
| T62 | 
0 | 
5594 | 
0 | 
0 | 
| T63 | 
0 | 
6833 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_upload.u_arbiter.gen_arb_ppc.u_reqarb
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 22 | 22 | 100.00 | 
| CONT_ASSIGN | 55 | 0 | 0 |  | 
| CONT_ASSIGN | 75 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 76 | 1 | 1 | 100.00 | 
| ALWAYS | 82 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 89 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 90 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 92 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 96 | 5 | 5 | 100.00 | 
| ALWAYS | 109 | 4 | 4 | 100.00 | 
| ALWAYS | 124 | 4 | 4 | 100.00 | 
54                        logic unused_req_chk;
55         unreachable    assign unused_req_chk = req_chk_i;
56                      
57                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
58                      
59                        // this case is basically just a bypass
60                        if (N == 1) begin : gen_degenerate_case
61                      
62                          assign valid_o  = req_i[0];
63                          assign data_o   = data_i[0];
64                          assign gnt_o[0] = valid_o & ready_i;
65                          assign idx_o    = '0;
66                      
67                        end else begin : gen_normal_case
68                      
69                          logic [N-1:0] masked_req;
70                          logic [N-1:0] ppc_out;
71                          logic [N-1:0] arb_req;
72                          logic [N-1:0] mask, mask_next;
73                          logic [N-1:0] winner;
74                      
75         1/1              assign masked_req = mask & req_i;
           Tests:       T1 T2 T3 
76         1/1              assign arb_req = (|masked_req) ? masked_req : req_i;
           Tests:       T1 T2 T3 
77                      
78                          // PPC
79                          //   Even below code looks O(n) but DC optimizes it to O(log(N))
80                          //   Using Parallel Prefix Computation
81                          always_comb begin
82         1/1                ppc_out[0] = arb_req[0];
           Tests:       T1 T2 T3 
83         1/1                for (int i = 1 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
84         1/1                  ppc_out[i] = ppc_out[i-1] | arb_req[i];
           Tests:       T1 T2 T3 
85                            end
86                          end
87                      
88                          // Grant Generation: Leading-One detector
89         1/1              assign winner = ppc_out ^ {ppc_out[N-2:0], 1'b0};
           Tests:       T1 T2 T3 
90         1/1              assign gnt_o    = (ready_i) ? winner : '0;
           Tests:       T1 T2 T3 
91                      
92         1/1              assign valid_o = |req_i;
           Tests:       T1 T2 T3 
93                          // Mask Generation
94         1/1              assign mask_next = {ppc_out[N-2:0], 1'b0};
           Tests:       T1 T2 T3 
95                          always_ff @(posedge clk_i or negedge rst_ni) begin
96         1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
97         1/1                  mask <= '0;
           Tests:       T1 T2 T3 
98         1/1                end else if (valid_o && ready_i) begin
           Tests:       T4 T7 T8 
99                              // Latch only when requests accepted
100        1/1                  mask <= mask_next;
           Tests:       T13 T36 T38 
101        1/1                end else if (valid_o && !ready_i) begin
           Tests:       T4 T7 T8 
102                             // Downstream isn't yet ready so, keep current request alive. (First come first serve)
103        unreachable          mask <= ppc_out;
104                           end
                        MISSING_ELSE
105                         end
106                     
107                         if (EnDataPort == 1) begin: gen_datapath
108                           always_comb begin
109        1/1                  data_o = '0;
           Tests:       T1 T2 T3 
110        1/1                  for (int i = 0 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
111        1/1                    if (winner[i]) begin
           Tests:       T1 T2 T3 
112        1/1                      data_o = data_i[i];
           Tests:       T13 T36 T38 
113                               end
                        MISSING_ELSE
114                             end
115                           end
116                         end else begin: gen_nodatapath
117                           assign data_o = '1;
118                           // The following signal is used to avoid possible lint errors.
119                           logic [DW-1:0] unused_data [N];
120                           assign unused_data = data_i;
121                         end
122                     
123                         always_comb begin
124        1/1                idx_o = '0;
           Tests:       T1 T2 T3 
125        1/1                for (int unsigned i = 0 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
126        1/1                  if (winner[i]) begin
           Tests:       T1 T2 T3 
127        1/1                    idx_o = i[IdxW-1:0];
           Tests:       T13 T36 T38 
128                             end
                        MISSING_ELSE
Cond Coverage for Instance : tb.dut.u_upload.u_arbiter.gen_arb_ppc.u_reqarb
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       76
 EXPRESSION (((|gen_normal_case.masked_req)) ? gen_normal_case.masked_req : req_i)
             ---------------1---------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T13,T36,T38 | 
 LINE       84
 EXPRESSION (gen_normal_case.ppc_out[(i - 1)] | gen_normal_case.arb_req[i])
             ----------------1---------------   -------------2------------
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T13,T36,T38 | 
| 1 | 0 | Covered | T13,T36,T38 | 
 LINE       90
 EXPRESSION (ready_i ? gen_normal_case.winner : '0)
             ---1---
| -1- | Status | Tests |                       
| 0 | Unreachable |  | 
| 1 | Covered | T1,T2,T3 | 
 LINE       98
 EXPRESSION (valid_o && ready_i)
             ---1---    ---2---
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T4,T7,T8 | 
| 1 | 0 | Unreachable |  | 
| 1 | 1 | Covered | T13,T36,T38 | 
 LINE       101
 EXPRESSION (valid_o && ((!ready_i)))
             ---1---    ------2-----
| -1- | -2- | Status | Tests | Exclude Annotation | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Excluded |  | 
VC_COV_UNR | 
| 1 | 1 | Unreachable |  | 
Branch Coverage for Instance : tb.dut.u_upload.u_arbiter.gen_arb_ppc.u_reqarb
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
10 | 
10 | 
100.00 | 
| TERNARY | 
76 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
90 | 
1 | 
1 | 
100.00 | 
| IF | 
96 | 
3 | 
3 | 
100.00 | 
| IF | 
126 | 
2 | 
2 | 
100.00 | 
| IF | 
111 | 
2 | 
2 | 
100.00 | 
76             assign arb_req = (|masked_req) ? masked_req : req_i;
                                              -1-  
                                              ==>  
                                              ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T13,T36,T38 | 
| 0 | 
Covered | 
T1,T2,T3 | 
90             assign gnt_o    = (ready_i) ? winner : '0;
                                           -1-  
                                           ==>  
                                           ==> (Unreachable)  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Unreachable | 
 | 
96               if (!rst_ni) begin
                 -1-  
97                 mask <= '0;
                   ==>
98               end else if (valid_o && ready_i) begin
                          -2-  
99                 // Latch only when requests accepted
100                mask <= mask_next;
                   ==>
101              end else if (valid_o && !ready_i) begin
                          -3-  
102                // Downstream isn't yet ready so, keep current request alive. (First come first serve)
103                mask <= ppc_out;
                   ==> (Unreachable)
104              end
                 MISSING_ELSE
                 ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
1 | 
- | 
Covered | 
T13,T36,T38 | 
| 0 | 
0 | 
1 | 
Unreachable | 
 | 
| 0 | 
0 | 
0 | 
Covered | 
T4,T7,T8 | 
126                if (winner[i]) begin
                   -1-  
127                  idx_o = i[IdxW-1:0];
                     ==>
128                end
                   MISSING_ELSE
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T13,T36,T38 | 
| 0 | 
Covered | 
T1,T2,T3 | 
111                  if (winner[i]) begin
                     -1-  
112                    data_o = data_i[i];
                       ==>
113                  end
                     MISSING_ELSE
                     ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T13,T36,T38 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_upload.u_arbiter.gen_arb_ppc.u_reqarb
Assertion Details
CheckHotOne_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
124410175 | 
0 | 
0 | 
| T4 | 
352 | 
352 | 
0 | 
0 | 
| T5 | 
118137 | 
0 | 
0 | 
0 | 
| T6 | 
1176 | 
0 | 
0 | 
0 | 
| T7 | 
46476 | 
46476 | 
0 | 
0 | 
| T8 | 
52805 | 
51904 | 
0 | 
0 | 
| T9 | 
3568 | 
3568 | 
0 | 
0 | 
| T10 | 
2082 | 
2082 | 
0 | 
0 | 
| T11 | 
67412 | 
67412 | 
0 | 
0 | 
| T12 | 
437699 | 
0 | 
0 | 
0 | 
| T13 | 
100164 | 
99724 | 
0 | 
0 | 
| T14 | 
0 | 
21545 | 
0 | 
0 | 
| T17 | 
0 | 
8624 | 
0 | 
0 | 
| T18 | 
0 | 
20752 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
956 | 
956 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
GntImpliesReady_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
879726 | 
0 | 
0 | 
| T13 | 
100164 | 
4 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
457 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
0 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T48 | 
0 | 
884 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
4 | 
0 | 
0 | 
| T55 | 
0 | 
2995 | 
0 | 
0 | 
| T63 | 
0 | 
3691 | 
0 | 
0 | 
| T78 | 
0 | 
257 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
879726 | 
0 | 
0 | 
| T13 | 
100164 | 
4 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
457 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
0 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T48 | 
0 | 
884 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
4 | 
0 | 
0 | 
| T55 | 
0 | 
2995 | 
0 | 
0 | 
| T63 | 
0 | 
3691 | 
0 | 
0 | 
| T78 | 
0 | 
257 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
124410175 | 
0 | 
0 | 
| T4 | 
352 | 
352 | 
0 | 
0 | 
| T5 | 
118137 | 
0 | 
0 | 
0 | 
| T6 | 
1176 | 
0 | 
0 | 
0 | 
| T7 | 
46476 | 
46476 | 
0 | 
0 | 
| T8 | 
52805 | 
51904 | 
0 | 
0 | 
| T9 | 
3568 | 
3568 | 
0 | 
0 | 
| T10 | 
2082 | 
2082 | 
0 | 
0 | 
| T11 | 
67412 | 
67412 | 
0 | 
0 | 
| T12 | 
437699 | 
0 | 
0 | 
0 | 
| T13 | 
100164 | 
99724 | 
0 | 
0 | 
| T14 | 
0 | 
21545 | 
0 | 
0 | 
| T17 | 
0 | 
8624 | 
0 | 
0 | 
| T18 | 
0 | 
20752 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
124410175 | 
0 | 
0 | 
| T4 | 
352 | 
352 | 
0 | 
0 | 
| T5 | 
118137 | 
0 | 
0 | 
0 | 
| T6 | 
1176 | 
0 | 
0 | 
0 | 
| T7 | 
46476 | 
46476 | 
0 | 
0 | 
| T8 | 
52805 | 
51904 | 
0 | 
0 | 
| T9 | 
3568 | 
3568 | 
0 | 
0 | 
| T10 | 
2082 | 
2082 | 
0 | 
0 | 
| T11 | 
67412 | 
67412 | 
0 | 
0 | 
| T12 | 
437699 | 
0 | 
0 | 
0 | 
| T13 | 
100164 | 
99724 | 
0 | 
0 | 
| T14 | 
0 | 
21545 | 
0 | 
0 | 
| T17 | 
0 | 
8624 | 
0 | 
0 | 
| T18 | 
0 | 
20752 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
879726 | 
0 | 
0 | 
| T13 | 
100164 | 
4 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
457 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
0 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T48 | 
0 | 
884 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
4 | 
0 | 
0 | 
| T55 | 
0 | 
2995 | 
0 | 
0 | 
| T63 | 
0 | 
3691 | 
0 | 
0 | 
| T78 | 
0 | 
257 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
0 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
0 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
879726 | 
0 | 
0 | 
| T13 | 
100164 | 
4 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
457 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
0 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T48 | 
0 | 
884 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
4 | 
0 | 
0 | 
| T55 | 
0 | 
2995 | 
0 | 
0 | 
| T63 | 
0 | 
3691 | 
0 | 
0 | 
| T78 | 
0 | 
257 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
879726 | 
0 | 
0 | 
| T13 | 
100164 | 
4 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
457 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
0 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T48 | 
0 | 
884 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
4 | 
0 | 
0 | 
| T55 | 
0 | 
2995 | 
0 | 
0 | 
| T63 | 
0 | 
3691 | 
0 | 
0 | 
| T78 | 
0 | 
257 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
879726 | 
0 | 
0 | 
| T13 | 
100164 | 
4 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
457 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
0 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T48 | 
0 | 
884 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
4 | 
0 | 
0 | 
| T55 | 
0 | 
2995 | 
0 | 
0 | 
| T63 | 
0 | 
3691 | 
0 | 
0 | 
| T78 | 
0 | 
257 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
0 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
0 | 
0 | 
0 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
124410175 | 
0 | 
0 | 
| T4 | 
352 | 
352 | 
0 | 
0 | 
| T5 | 
118137 | 
0 | 
0 | 
0 | 
| T6 | 
1176 | 
0 | 
0 | 
0 | 
| T7 | 
46476 | 
46476 | 
0 | 
0 | 
| T8 | 
52805 | 
51904 | 
0 | 
0 | 
| T9 | 
3568 | 
3568 | 
0 | 
0 | 
| T10 | 
2082 | 
2082 | 
0 | 
0 | 
| T11 | 
67412 | 
67412 | 
0 | 
0 | 
| T12 | 
437699 | 
0 | 
0 | 
0 | 
| T13 | 
100164 | 
99724 | 
0 | 
0 | 
| T14 | 
0 | 
21545 | 
0 | 
0 | 
| T17 | 
0 | 
8624 | 
0 | 
0 | 
| T18 | 
0 | 
20752 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
155902211 | 
879726 | 
0 | 
0 | 
| T13 | 
100164 | 
4 | 
0 | 
0 | 
| T14 | 
21803 | 
0 | 
0 | 
0 | 
| T17 | 
8624 | 
0 | 
0 | 
0 | 
| T18 | 
20874 | 
0 | 
0 | 
0 | 
| T19 | 
12480 | 
0 | 
0 | 
0 | 
| T21 | 
0 | 
457 | 
0 | 
0 | 
| T24 | 
864 | 
0 | 
0 | 
0 | 
| T26 | 
45452 | 
0 | 
0 | 
0 | 
| T36 | 
33441 | 
520 | 
0 | 
0 | 
| T37 | 
13418 | 
0 | 
0 | 
0 | 
| T38 | 
0 | 
770 | 
0 | 
0 | 
| T43 | 
0 | 
2577 | 
0 | 
0 | 
| T48 | 
0 | 
884 | 
0 | 
0 | 
| T49 | 
126427 | 
0 | 
0 | 
0 | 
| T50 | 
0 | 
4 | 
0 | 
0 | 
| T55 | 
0 | 
2995 | 
0 | 
0 | 
| T63 | 
0 | 
3691 | 
0 | 
0 | 
| T78 | 
0 | 
257 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sys_sram_arbiter.gen_arb_ppc.u_reqarb
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 22 | 22 | 100.00 | 
| CONT_ASSIGN | 55 | 0 | 0 |  | 
| CONT_ASSIGN | 75 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 76 | 1 | 1 | 100.00 | 
| ALWAYS | 82 | 3 | 3 | 100.00 | 
| CONT_ASSIGN | 89 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 90 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 92 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 94 | 1 | 1 | 100.00 | 
| ALWAYS | 96 | 5 | 5 | 100.00 | 
| ALWAYS | 109 | 4 | 4 | 100.00 | 
| ALWAYS | 124 | 4 | 4 | 100.00 | 
54                        logic unused_req_chk;
55         unreachable    assign unused_req_chk = req_chk_i;
56                      
57                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
58                      
59                        // this case is basically just a bypass
60                        if (N == 1) begin : gen_degenerate_case
61                      
62                          assign valid_o  = req_i[0];
63                          assign data_o   = data_i[0];
64                          assign gnt_o[0] = valid_o & ready_i;
65                          assign idx_o    = '0;
66                      
67                        end else begin : gen_normal_case
68                      
69                          logic [N-1:0] masked_req;
70                          logic [N-1:0] ppc_out;
71                          logic [N-1:0] arb_req;
72                          logic [N-1:0] mask, mask_next;
73                          logic [N-1:0] winner;
74                      
75         1/1              assign masked_req = mask & req_i;
           Tests:       T1 T2 T3 
76         1/1              assign arb_req = (|masked_req) ? masked_req : req_i;
           Tests:       T1 T2 T3 
77                      
78                          // PPC
79                          //   Even below code looks O(n) but DC optimizes it to O(log(N))
80                          //   Using Parallel Prefix Computation
81                          always_comb begin
82         1/1                ppc_out[0] = arb_req[0];
           Tests:       T1 T2 T3 
83         1/1                for (int i = 1 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
84         1/1                  ppc_out[i] = ppc_out[i-1] | arb_req[i];
           Tests:       T1 T2 T3 
85                            end
86                          end
87                      
88                          // Grant Generation: Leading-One detector
89         1/1              assign winner = ppc_out ^ {ppc_out[N-2:0], 1'b0};
           Tests:       T1 T2 T3 
90         1/1              assign gnt_o    = (ready_i) ? winner : '0;
           Tests:       T1 T2 T3 
91                      
92         1/1              assign valid_o = |req_i;
           Tests:       T1 T2 T3 
93                          // Mask Generation
94         1/1              assign mask_next = {ppc_out[N-2:0], 1'b0};
           Tests:       T1 T2 T3 
95                          always_ff @(posedge clk_i or negedge rst_ni) begin
96         1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
97         1/1                  mask <= '0;
           Tests:       T1 T2 T3 
98         1/1                end else if (valid_o && ready_i) begin
           Tests:       T1 T2 T3 
99                              // Latch only when requests accepted
100        1/1                  mask <= mask_next;
           Tests:       T4 T6 T7 
101        1/1                end else if (valid_o && !ready_i) begin
           Tests:       T1 T2 T3 
102                             // Downstream isn't yet ready so, keep current request alive. (First come first serve)
103        unreachable          mask <= ppc_out;
104                           end
                        MISSING_ELSE
105                         end
106                     
107                         if (EnDataPort == 1) begin: gen_datapath
108                           always_comb begin
109        1/1                  data_o = '0;
           Tests:       T1 T2 T3 
110        1/1                  for (int i = 0 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
111        1/1                    if (winner[i]) begin
           Tests:       T1 T2 T3 
112        1/1                      data_o = data_i[i];
           Tests:       T4 T6 T7 
113                               end
                        MISSING_ELSE
114                             end
115                           end
116                         end else begin: gen_nodatapath
117                           assign data_o = '1;
118                           // The following signal is used to avoid possible lint errors.
119                           logic [DW-1:0] unused_data [N];
120                           assign unused_data = data_i;
121                         end
122                     
123                         always_comb begin
124        1/1                idx_o = '0;
           Tests:       T1 T2 T3 
125        1/1                for (int unsigned i = 0 ; i < N ; i++) begin
           Tests:       T1 T2 T3 
126        1/1                  if (winner[i]) begin
           Tests:       T1 T2 T3 
127        1/1                    idx_o = i[IdxW-1:0];
           Tests:       T4 T6 T7 
128                             end
                        MISSING_ELSE
Cond Coverage for Instance : tb.dut.u_sys_sram_arbiter.gen_arb_ppc.u_reqarb
 | Total | Covered | Percent | 
| Conditions | 8 | 8 | 100.00 | 
| Logical | 8 | 8 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       76
 EXPRESSION (((|gen_normal_case.masked_req)) ? gen_normal_case.masked_req : req_i)
             ---------------1---------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T6,T12,T13 | 
 LINE       84
 EXPRESSION (gen_normal_case.ppc_out[(i - 1)] | gen_normal_case.arb_req[i])
             ----------------1---------------   -------------2------------
| -1- | -2- | Status | Tests |                       
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T6,T12,T13 | 
| 1 | 0 | Covered | T4,T6,T7 | 
 LINE       90
 EXPRESSION (ready_i ? gen_normal_case.winner : '0)
             ---1---
| -1- | Status | Tests |                       
| 0 | Unreachable |  | 
| 1 | Covered | T1,T2,T3 | 
 LINE       98
 EXPRESSION (valid_o && ready_i)
             ---1---    ---2---
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
| 1 | 1 | Covered | T4,T6,T7 | 
 LINE       101
 EXPRESSION (valid_o && ((!ready_i)))
             ---1---    ------2-----
| -1- | -2- | Status | Tests | Exclude Annotation | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Excluded |  | 
VC_COV_UNR | 
| 1 | 1 | Unreachable |  | 
Branch Coverage for Instance : tb.dut.u_sys_sram_arbiter.gen_arb_ppc.u_reqarb
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
10 | 
10 | 
100.00 | 
| TERNARY | 
76 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
90 | 
1 | 
1 | 
100.00 | 
| IF | 
96 | 
3 | 
3 | 
100.00 | 
| IF | 
126 | 
2 | 
2 | 
100.00 | 
| IF | 
111 | 
2 | 
2 | 
100.00 | 
76             assign arb_req = (|masked_req) ? masked_req : req_i;
                                              -1-  
                                              ==>  
                                              ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T6,T12,T13 | 
| 0 | 
Covered | 
T1,T2,T3 | 
90             assign gnt_o    = (ready_i) ? winner : '0;
                                           -1-  
                                           ==>  
                                           ==> (Unreachable)  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Unreachable | 
 | 
96               if (!rst_ni) begin
                 -1-  
97                 mask <= '0;
                   ==>
98               end else if (valid_o && ready_i) begin
                          -2-  
99                 // Latch only when requests accepted
100                mask <= mask_next;
                   ==>
101              end else if (valid_o && !ready_i) begin
                          -3-  
102                // Downstream isn't yet ready so, keep current request alive. (First come first serve)
103                mask <= ppc_out;
                   ==> (Unreachable)
104              end
                 MISSING_ELSE
                 ==>
Branches:
| -1- | -2- | -3- | Status | Tests | 
| 1 | 
- | 
- | 
Covered | 
T1,T2,T3 | 
| 0 | 
1 | 
- | 
Covered | 
T4,T6,T7 | 
| 0 | 
0 | 
1 | 
Unreachable | 
 | 
| 0 | 
0 | 
0 | 
Covered | 
T1,T2,T3 | 
126                if (winner[i]) begin
                   -1-  
127                  idx_o = i[IdxW-1:0];
                     ==>
128                end
                   MISSING_ELSE
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T6,T7 | 
| 0 | 
Covered | 
T1,T2,T3 | 
111                  if (winner[i]) begin
                     -1-  
112                    data_o = data_i[i];
                       ==>
113                  end
                     MISSING_ELSE
                     ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T4,T6,T7 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sys_sram_arbiter.gen_arb_ppc.u_reqarb
Assertion Details
CheckHotOne_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
452936842 | 
0 | 
0 | 
| T1 | 
1098 | 
1022 | 
0 | 
0 | 
| T2 | 
718 | 
619 | 
0 | 
0 | 
| T3 | 
2934 | 
2843 | 
0 | 
0 | 
| T4 | 
7275 | 
7211 | 
0 | 
0 | 
| T5 | 
46509 | 
46422 | 
0 | 
0 | 
| T6 | 
10474 | 
10394 | 
0 | 
0 | 
| T7 | 
22916 | 
22862 | 
0 | 
0 | 
| T8 | 
109355 | 
109264 | 
0 | 
0 | 
| T9 | 
24581 | 
24485 | 
0 | 
0 | 
| T10 | 
10889 | 
10792 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
956 | 
956 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T5 | 
1 | 
1 | 
0 | 
0 | 
| T6 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
GntImpliesReady_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
2367727 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
10474 | 
30 | 
0 | 
0 | 
| T7 | 
22916 | 
832 | 
0 | 
0 | 
| T8 | 
109355 | 
832 | 
0 | 
0 | 
| T9 | 
24581 | 
832 | 
0 | 
0 | 
| T10 | 
10889 | 
832 | 
0 | 
0 | 
| T11 | 
407531 | 
832 | 
0 | 
0 | 
| T12 | 
253866 | 
3383 | 
0 | 
0 | 
| T13 | 
707836 | 
836 | 
0 | 
0 | 
| T14 | 
0 | 
832 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
2367727 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
10474 | 
30 | 
0 | 
0 | 
| T7 | 
22916 | 
832 | 
0 | 
0 | 
| T8 | 
109355 | 
832 | 
0 | 
0 | 
| T9 | 
24581 | 
832 | 
0 | 
0 | 
| T10 | 
10889 | 
832 | 
0 | 
0 | 
| T11 | 
407531 | 
832 | 
0 | 
0 | 
| T12 | 
253866 | 
3383 | 
0 | 
0 | 
| T13 | 
707836 | 
836 | 
0 | 
0 | 
| T14 | 
0 | 
832 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
452936842 | 
0 | 
0 | 
| T1 | 
1098 | 
1022 | 
0 | 
0 | 
| T2 | 
718 | 
619 | 
0 | 
0 | 
| T3 | 
2934 | 
2843 | 
0 | 
0 | 
| T4 | 
7275 | 
7211 | 
0 | 
0 | 
| T5 | 
46509 | 
46422 | 
0 | 
0 | 
| T6 | 
10474 | 
10394 | 
0 | 
0 | 
| T7 | 
22916 | 
22862 | 
0 | 
0 | 
| T8 | 
109355 | 
109264 | 
0 | 
0 | 
| T9 | 
24581 | 
24485 | 
0 | 
0 | 
| T10 | 
10889 | 
10792 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
452936842 | 
0 | 
0 | 
| T1 | 
1098 | 
1022 | 
0 | 
0 | 
| T2 | 
718 | 
619 | 
0 | 
0 | 
| T3 | 
2934 | 
2843 | 
0 | 
0 | 
| T4 | 
7275 | 
7211 | 
0 | 
0 | 
| T5 | 
46509 | 
46422 | 
0 | 
0 | 
| T6 | 
10474 | 
10394 | 
0 | 
0 | 
| T7 | 
22916 | 
22862 | 
0 | 
0 | 
| T8 | 
109355 | 
109264 | 
0 | 
0 | 
| T9 | 
24581 | 
24485 | 
0 | 
0 | 
| T10 | 
10889 | 
10792 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
2367727 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
10474 | 
30 | 
0 | 
0 | 
| T7 | 
22916 | 
832 | 
0 | 
0 | 
| T8 | 
109355 | 
832 | 
0 | 
0 | 
| T9 | 
24581 | 
832 | 
0 | 
0 | 
| T10 | 
10889 | 
832 | 
0 | 
0 | 
| T11 | 
407531 | 
832 | 
0 | 
0 | 
| T12 | 
253866 | 
3383 | 
0 | 
0 | 
| T13 | 
707836 | 
836 | 
0 | 
0 | 
| T14 | 
0 | 
832 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
0 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
0 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
2367727 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
10474 | 
30 | 
0 | 
0 | 
| T7 | 
22916 | 
832 | 
0 | 
0 | 
| T8 | 
109355 | 
832 | 
0 | 
0 | 
| T9 | 
24581 | 
832 | 
0 | 
0 | 
| T10 | 
10889 | 
832 | 
0 | 
0 | 
| T11 | 
407531 | 
832 | 
0 | 
0 | 
| T12 | 
253866 | 
3383 | 
0 | 
0 | 
| T13 | 
707836 | 
836 | 
0 | 
0 | 
| T14 | 
0 | 
832 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
2367727 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
10474 | 
30 | 
0 | 
0 | 
| T7 | 
22916 | 
832 | 
0 | 
0 | 
| T8 | 
109355 | 
832 | 
0 | 
0 | 
| T9 | 
24581 | 
832 | 
0 | 
0 | 
| T10 | 
10889 | 
832 | 
0 | 
0 | 
| T11 | 
407531 | 
832 | 
0 | 
0 | 
| T12 | 
253866 | 
3383 | 
0 | 
0 | 
| T13 | 
707836 | 
836 | 
0 | 
0 | 
| T14 | 
0 | 
832 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
2367727 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
10474 | 
30 | 
0 | 
0 | 
| T7 | 
22916 | 
832 | 
0 | 
0 | 
| T8 | 
109355 | 
832 | 
0 | 
0 | 
| T9 | 
24581 | 
832 | 
0 | 
0 | 
| T10 | 
10889 | 
832 | 
0 | 
0 | 
| T11 | 
407531 | 
832 | 
0 | 
0 | 
| T12 | 
253866 | 
3383 | 
0 | 
0 | 
| T13 | 
707836 | 
836 | 
0 | 
0 | 
| T14 | 
0 | 
832 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
0 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
5 | 
0 | 
956 | 
| T64 | 
573642 | 
1 | 
0 | 
1 | 
| T65 | 
0 | 
1 | 
0 | 
0 | 
| T66 | 
0 | 
1 | 
0 | 
0 | 
| T67 | 
0 | 
1 | 
0 | 
0 | 
| T68 | 
0 | 
1 | 
0 | 
0 | 
| T69 | 
2432 | 
0 | 
0 | 
1 | 
| T70 | 
999 | 
0 | 
0 | 
1 | 
| T71 | 
518583 | 
0 | 
0 | 
1 | 
| T72 | 
156031 | 
0 | 
0 | 
1 | 
| T73 | 
597249 | 
0 | 
0 | 
1 | 
| T74 | 
798754 | 
0 | 
0 | 
1 | 
| T75 | 
360434 | 
0 | 
0 | 
1 | 
| T76 | 
96542 | 
0 | 
0 | 
1 | 
| T77 | 
10801 | 
0 | 
0 | 
1 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
452936842 | 
0 | 
0 | 
| T1 | 
1098 | 
1022 | 
0 | 
0 | 
| T2 | 
718 | 
619 | 
0 | 
0 | 
| T3 | 
2934 | 
2843 | 
0 | 
0 | 
| T4 | 
7275 | 
7211 | 
0 | 
0 | 
| T5 | 
46509 | 
46422 | 
0 | 
0 | 
| T6 | 
10474 | 
10394 | 
0 | 
0 | 
| T7 | 
22916 | 
22862 | 
0 | 
0 | 
| T8 | 
109355 | 
109264 | 
0 | 
0 | 
| T9 | 
24581 | 
24485 | 
0 | 
0 | 
| T10 | 
10889 | 
10792 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
453023332 | 
2367727 | 
0 | 
0 | 
| T4 | 
7275 | 
832 | 
0 | 
0 | 
| T5 | 
46509 | 
0 | 
0 | 
0 | 
| T6 | 
10474 | 
30 | 
0 | 
0 | 
| T7 | 
22916 | 
832 | 
0 | 
0 | 
| T8 | 
109355 | 
832 | 
0 | 
0 | 
| T9 | 
24581 | 
832 | 
0 | 
0 | 
| T10 | 
10889 | 
832 | 
0 | 
0 | 
| T11 | 
407531 | 
832 | 
0 | 
0 | 
| T12 | 
253866 | 
3383 | 
0 | 
0 | 
| T13 | 
707836 | 
836 | 
0 | 
0 | 
| T14 | 
0 | 
832 | 
0 | 
0 |