Line Coverage for Module : 
prim_arbiter_tree ( parameter N=4,DW=2,EnDataPort=0,IdxW=2,gen_normal_case.gen_tree[0].gen_level[0].Pa=0,gen_normal_case.gen_tree[0].gen_level[0].C0=1,gen_normal_case.gen_tree[0].gen_level[0].C1=2,gen_normal_case.gen_tree[1].gen_level[0].Pa=1,gen_normal_case.gen_tree[1].gen_level[0].C0=3,gen_normal_case.gen_tree[1].gen_level[0].C1=4,gen_normal_case.gen_tree[1].gen_level[1].Pa=2,gen_normal_case.gen_tree[1].gen_level[1].C0=5,gen_normal_case.gen_tree[1].gen_level[1].C1=6,gen_normal_case.gen_tree[2].gen_level[0].Pa=3,gen_normal_case.gen_tree[2].gen_level[0].C0=7,gen_normal_case.gen_tree[2].gen_level[0].C1=8,gen_normal_case.gen_tree[2].gen_level[1].Pa=4,gen_normal_case.gen_tree[2].gen_level[1].C0=9,gen_normal_case.gen_tree[2].gen_level[1].C1=10,gen_normal_case.gen_tree[2].gen_level[2].Pa=5,gen_normal_case.gen_tree[2].gen_level[2].C0=11,gen_normal_case.gen_tree[2].gen_level[2].C1=12,gen_normal_case.gen_tree[2].gen_level[3].Pa=6,gen_normal_case.gen_tree[2].gen_level[3].C0=13,gen_normal_case.gen_tree[2].gen_level[3].C1=14 ) 
Line Coverage for Module self-instances : 
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 52 | 48 | 92.31 | 
| CONT_ASSIGN | 62 | 0 | 0 |  | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 0 | 0 |  | 
| CONT_ASSIGN | 163 | 0 | 0 |  | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 174 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 182 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| ALWAYS | 191 | 3 | 3 | 100.00 | 
61                        logic unused_req_chk;
62         unreachable    assign unused_req_chk = req_chk_i;
63                      
64                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
65                      
66                        // this case is basically just a bypass
67                        if (N == 1) begin : gen_degenerate_case
68                      
69                          assign valid_o  = req_i[0];
70                          assign data_o   = data_i[0];
71                          assign gnt_o[0] = valid_o & ready_i;
72                          assign idx_o    = '0;
73                      
74                        end else begin : gen_normal_case
75                      
76                          // align to powers of 2 for simplicity
77                          // a full binary tree with N levels has 2**N + 2**N-1 nodes
78                          logic [2**(IdxW+1)-2:0]           req_tree;
79                          logic [2**(IdxW+1)-2:0]           prio_tree;
80                          logic [2**(IdxW+1)-2:0]           sel_tree;
81                          logic [2**(IdxW+1)-2:0]           mask_tree;
82                          logic [2**(IdxW+1)-2:0][IdxW-1:0] idx_tree;
83                          logic [2**(IdxW+1)-2:0][DW-1:0]   data_tree;
84                          logic [N-1:0]                     prio_mask_d, prio_mask_q;
85                      
86                          for (genvar level = 0; level < IdxW+1; level++) begin : gen_tree
87                            //
88                            // level+1   C0   C1   <- "Base1" points to the first node on "level+1",
89                            //            \  /         these nodes are the children of the nodes one level below
90                            // level       Pa      <- "Base0", points to the first node on "level",
91                            //                         these nodes are the parents of the nodes one level above
92                            //
93                            // hence we have the following indices for the Pa, C0, C1 nodes:
94                            // Pa = 2**level     - 1 + offset       = Base0 + offset
95                            // C0 = 2**(level+1) - 1 + 2*offset     = Base1 + 2*offset
96                            // C1 = 2**(level+1) - 1 + 2*offset + 1 = Base1 + 2*offset + 1
97                            //
98                            localparam int Base0 = (2**level)-1;
99                            localparam int Base1 = (2**(level+1))-1;
100                     
101                           for (genvar offset = 0; offset < 2**level; offset++) begin : gen_level
102                             localparam int Pa = Base0 + offset;
103                             localparam int C0 = Base1 + 2*offset;
104                             localparam int C1 = Base1 + 2*offset + 1;
105                     
106                             // this assigns the gated interrupt source signals, their
107                             // corresponding IDs and priorities to the tree leafs
108                             if (level == IdxW) begin : gen_leafs
109                               if (offset < N) begin : gen_assign
110                                 // forward path (requests and data)
111                                 // all requests inputs are assigned to the request tree
112        4/4                      assign req_tree[Pa]      = req_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
113                                 // we basically split the incoming request vector into two halves with the following
114                                 // priority assignment. the prio_mask_q register contains a prefix sum that has been
115                                 // computed using the last winning index, and hence masks out all requests at offsets
116                                 // lower or equal the previously granted index. hence, all higher indices are considered
117                                 // first in the arbitration tree nodes below, before considering the lower indices.
118        4/4                      assign prio_tree[Pa]     = req_i[offset] & prio_mask_q[offset];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
119                                 // input for the index muxes (used to compute the winner index)
120                                 assign idx_tree[Pa]      = offset;
121                                 // input for the data muxes
122        0/4     ==>              assign data_tree[Pa]     = data_i[offset];
123                     
124                                 // backward path (grants and prefix sum)
125                                 // grant if selected, ready and request asserted
126        4/4                      assign gnt_o[offset]       = req_i[offset] & sel_tree[Pa] & ready_i;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
127                                 // only update mask if there is a valid request
128        4/4                      assign prio_mask_d[offset] = (|req_i) ?
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
129                                                              mask_tree[Pa] | sel_tree[Pa] & ~ready_i :
130                                                              prio_mask_q[offset];
131                               end else begin : gen_tie_off
132                                 // forward path
133                                 assign req_tree[Pa]  = '0;
134                                 assign prio_tree[Pa] = '0;
135                                 assign idx_tree[Pa]  = '0;
136                                 assign data_tree[Pa] = '0;
137                                 logic unused_sigs;
138                                 assign unused_sigs = ^{mask_tree[Pa],
139                                                        sel_tree[Pa]};
140                               end
141                             // this creates the node assignments
142                             end else begin : gen_nodes
143                               // local helper variable
144                               logic sel;
145                     
146                               // forward path (requests and data)
147                               // each node looks at its two children, and selects the one with higher priority
148        3/3                    assign sel = ~req_tree[C0] | ~prio_tree[C0] & prio_tree[C1];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
149                               // propagate requests
150        3/3                    assign req_tree[Pa]  = req_tree[C0] | req_tree[C1];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
151        3/3                    assign prio_tree[Pa] = prio_tree[C1] | prio_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
152                               // data and index muxes
153                               // Note: these ternaries have triggered a synthesis bug in Vivado versions older
154                               // than 2020.2. If the problem resurfaces again, have a look at issue #1408.
155        3/3                    assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
156        3/3                    assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
157                     
158                               // backward path (grants and prefix sum)
159                               // this propagates the selction index back and computes a hot one mask
160        3/3                    assign sel_tree[C0] = sel_tree[Pa] & ~sel;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
161        3/3                    assign sel_tree[C1] = sel_tree[Pa] &  sel;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
162                               // this performs a prefix sum for masking the input requests in the next cycle
163        1/1(2 unreachable)            assign mask_tree[C0] = mask_tree[Pa];
           Tests:       T1 T2 T3 
164        3/3                    assign mask_tree[C1] = mask_tree[Pa] | sel_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
165                             end
166                           end : gen_level
167                         end : gen_tree
168                     
169                         // the results can be found at the tree root
170                         if (EnDataPort) begin : gen_data_port
171                           assign data_o      = data_tree[0];
172                         end else begin : gen_no_dataport
173                           logic [DW-1:0] unused_data;
174        1/1                assign unused_data = data_tree[0];
           Tests:       T1 T2 T3 
175                           assign data_o = '1;
176                         end
177                     
178                         // This index is unused.
179                         logic unused_prio_tree;
180        1/1              assign unused_prio_tree = prio_tree[0];
           Tests:       T1 T2 T3 
181                     
182        1/1              assign idx_o       = idx_tree[0];
           Tests:       T1 T2 T3 
183        1/1              assign valid_o     = req_tree[0];
           Tests:       T1 T2 T3 
184                     
185                         // the select tree computes a hot one signal that indicates which request is currently selected
186                         assign sel_tree[0] = 1'b1;
187                         // the mask tree is basically a prefix sum of the hot one select signal computed above
188                         assign mask_tree[0] = 1'b0;
189                     
190                         always_ff @(posedge clk_i or negedge rst_ni) begin : p_mask_reg
191        1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
192        1/1                  prio_mask_q <= '0;
           Tests:       T1 T2 T3 
193                           end else begin
194        1/1                  prio_mask_q <= prio_mask_d;
           Tests:       T1 T2 T3 
Line Coverage for Module : 
prim_arbiter_tree ( parameter N=2,DW=16,EnDataPort=1,IdxW=1,gen_normal_case.gen_tree[0].gen_level[0].Pa=0,gen_normal_case.gen_tree[0].gen_level[0].C0=1,gen_normal_case.gen_tree[0].gen_level[0].C1=2,gen_normal_case.gen_tree[1].gen_level[0].Pa=1,gen_normal_case.gen_tree[1].gen_level[0].C0=3,gen_normal_case.gen_tree[1].gen_level[0].C1=4,gen_normal_case.gen_tree[1].gen_level[1].Pa=2,gen_normal_case.gen_tree[1].gen_level[1].C0=5,gen_normal_case.gen_tree[1].gen_level[1].C1=6 + N=2,DW=129,EnDataPort=1,IdxW=1,gen_normal_case.gen_tree[0].gen_level[0].Pa=0,gen_normal_case.gen_tree[0].gen_level[0].C0=1,gen_normal_case.gen_tree[0].gen_level[0].C1=2,gen_normal_case.gen_tree[1].gen_level[0].Pa=1,gen_normal_case.gen_tree[1].gen_level[0].C0=3,gen_normal_case.gen_tree[1].gen_level[0].C1=4,gen_normal_case.gen_tree[1].gen_level[1].Pa=2,gen_normal_case.gen_tree[1].gen_level[1].C0=5,gen_normal_case.gen_tree[1].gen_level[1].C1=6 ) 
Line Coverage for Module self-instances : 
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 25 | 25 | 100.00 | 
| CONT_ASSIGN | 62 | 0 | 0 |  | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 0 | 0 |  | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 171 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 182 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| ALWAYS | 191 | 3 | 3 | 100.00 | 
61                        logic unused_req_chk;
62         unreachable    assign unused_req_chk = req_chk_i;
63                      
64                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
65                      
66                        // this case is basically just a bypass
67                        if (N == 1) begin : gen_degenerate_case
68                      
69                          assign valid_o  = req_i[0];
70                          assign data_o   = data_i[0];
71                          assign gnt_o[0] = valid_o & ready_i;
72                          assign idx_o    = '0;
73                      
74                        end else begin : gen_normal_case
75                      
76                          // align to powers of 2 for simplicity
77                          // a full binary tree with N levels has 2**N + 2**N-1 nodes
78                          logic [2**(IdxW+1)-2:0]           req_tree;
79                          logic [2**(IdxW+1)-2:0]           prio_tree;
80                          logic [2**(IdxW+1)-2:0]           sel_tree;
81                          logic [2**(IdxW+1)-2:0]           mask_tree;
82                          logic [2**(IdxW+1)-2:0][IdxW-1:0] idx_tree;
83                          logic [2**(IdxW+1)-2:0][DW-1:0]   data_tree;
84                          logic [N-1:0]                     prio_mask_d, prio_mask_q;
85                      
86                          for (genvar level = 0; level < IdxW+1; level++) begin : gen_tree
87                            //
88                            // level+1   C0   C1   <- "Base1" points to the first node on "level+1",
89                            //            \  /         these nodes are the children of the nodes one level below
90                            // level       Pa      <- "Base0", points to the first node on "level",
91                            //                         these nodes are the parents of the nodes one level above
92                            //
93                            // hence we have the following indices for the Pa, C0, C1 nodes:
94                            // Pa = 2**level     - 1 + offset       = Base0 + offset
95                            // C0 = 2**(level+1) - 1 + 2*offset     = Base1 + 2*offset
96                            // C1 = 2**(level+1) - 1 + 2*offset + 1 = Base1 + 2*offset + 1
97                            //
98                            localparam int Base0 = (2**level)-1;
99                            localparam int Base1 = (2**(level+1))-1;
100                     
101                           for (genvar offset = 0; offset < 2**level; offset++) begin : gen_level
102                             localparam int Pa = Base0 + offset;
103                             localparam int C0 = Base1 + 2*offset;
104                             localparam int C1 = Base1 + 2*offset + 1;
105                     
106                             // this assigns the gated interrupt source signals, their
107                             // corresponding IDs and priorities to the tree leafs
108                             if (level == IdxW) begin : gen_leafs
109                               if (offset < N) begin : gen_assign
110                                 // forward path (requests and data)
111                                 // all requests inputs are assigned to the request tree
112        2/2                      assign req_tree[Pa]      = req_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
113                                 // we basically split the incoming request vector into two halves with the following
114                                 // priority assignment. the prio_mask_q register contains a prefix sum that has been
115                                 // computed using the last winning index, and hence masks out all requests at offsets
116                                 // lower or equal the previously granted index. hence, all higher indices are considered
117                                 // first in the arbitration tree nodes below, before considering the lower indices.
118        2/2                      assign prio_tree[Pa]     = req_i[offset] & prio_mask_q[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
119                                 // input for the index muxes (used to compute the winner index)
120                                 assign idx_tree[Pa]      = offset;
121                                 // input for the data muxes
122        2/2                      assign data_tree[Pa]     = data_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
123                     
124                                 // backward path (grants and prefix sum)
125                                 // grant if selected, ready and request asserted
126        2/2                      assign gnt_o[offset]       = req_i[offset] & sel_tree[Pa] & ready_i;
           Tests:       T1 T2 T3  | T1 T2 T3 
127                                 // only update mask if there is a valid request
128        2/2                      assign prio_mask_d[offset] = (|req_i) ?
           Tests:       T1 T2 T3  | T1 T2 T3 
129                                                              mask_tree[Pa] | sel_tree[Pa] & ~ready_i :
130                                                              prio_mask_q[offset];
131                               end else begin : gen_tie_off
132                                 // forward path
133                                 assign req_tree[Pa]  = '0;
134                                 assign prio_tree[Pa] = '0;
135                                 assign idx_tree[Pa]  = '0;
136                                 assign data_tree[Pa] = '0;
137                                 logic unused_sigs;
138                                 assign unused_sigs = ^{mask_tree[Pa],
139                                                        sel_tree[Pa]};
140                               end
141                             // this creates the node assignments
142                             end else begin : gen_nodes
143                               // local helper variable
144                               logic sel;
145                     
146                               // forward path (requests and data)
147                               // each node looks at its two children, and selects the one with higher priority
148        1/1                    assign sel = ~req_tree[C0] | ~prio_tree[C0] & prio_tree[C1];
           Tests:       T1 T2 T3 
149                               // propagate requests
150        1/1                    assign req_tree[Pa]  = req_tree[C0] | req_tree[C1];
           Tests:       T1 T2 T3 
151        1/1                    assign prio_tree[Pa] = prio_tree[C1] | prio_tree[C0];
           Tests:       T1 T2 T3 
152                               // data and index muxes
153                               // Note: these ternaries have triggered a synthesis bug in Vivado versions older
154                               // than 2020.2. If the problem resurfaces again, have a look at issue #1408.
155        1/1                    assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
           Tests:       T1 T2 T3 
156        1/1                    assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
           Tests:       T1 T2 T3 
157                     
158                               // backward path (grants and prefix sum)
159                               // this propagates the selction index back and computes a hot one mask
160        1/1                    assign sel_tree[C0] = sel_tree[Pa] & ~sel;
           Tests:       T1 T2 T3 
161        1/1                    assign sel_tree[C1] = sel_tree[Pa] &  sel;
           Tests:       T1 T2 T3 
162                               // this performs a prefix sum for masking the input requests in the next cycle
163        unreachable            assign mask_tree[C0] = mask_tree[Pa];
164        1/1                    assign mask_tree[C1] = mask_tree[Pa] | sel_tree[C0];
           Tests:       T1 T2 T3 
165                             end
166                           end : gen_level
167                         end : gen_tree
168                     
169                         // the results can be found at the tree root
170                         if (EnDataPort) begin : gen_data_port
171        1/1                assign data_o      = data_tree[0];
           Tests:       T1 T2 T3 
172                         end else begin : gen_no_dataport
173                           logic [DW-1:0] unused_data;
174                           assign unused_data = data_tree[0];
175                           assign data_o = '1;
176                         end
177                     
178                         // This index is unused.
179                         logic unused_prio_tree;
180        1/1              assign unused_prio_tree = prio_tree[0];
           Tests:       T1 T2 T3 
181                     
182        1/1              assign idx_o       = idx_tree[0];
           Tests:       T1 T2 T3 
183        1/1              assign valid_o     = req_tree[0];
           Tests:       T1 T2 T3 
184                     
185                         // the select tree computes a hot one signal that indicates which request is currently selected
186                         assign sel_tree[0] = 1'b1;
187                         // the mask tree is basically a prefix sum of the hot one select signal computed above
188                         assign mask_tree[0] = 1'b0;
189                     
190                         always_ff @(posedge clk_i or negedge rst_ni) begin : p_mask_reg
191        1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
192        1/1                  prio_mask_q <= '0;
           Tests:       T1 T2 T3 
193                           end else begin
194        1/1                  prio_mask_q <= prio_mask_d;
           Tests:       T1 T2 T3 
Cond Coverage for Module : 
prim_arbiter_tree ( parameter N=2,DW=16,EnDataPort=1,IdxW=1,gen_normal_case.gen_tree[0].gen_level[0].Pa=0,gen_normal_case.gen_tree[0].gen_level[0].C0=1,gen_normal_case.gen_tree[0].gen_level[0].C1=2,gen_normal_case.gen_tree[1].gen_level[0].Pa=1,gen_normal_case.gen_tree[1].gen_level[0].C0=3,gen_normal_case.gen_tree[1].gen_level[0].C1=4,gen_normal_case.gen_tree[1].gen_level[1].Pa=2,gen_normal_case.gen_tree[1].gen_level[1].C0=5,gen_normal_case.gen_tree[1].gen_level[1].C1=6 ) 
Cond Coverage for Module self-instances : 
 | Total | Covered | Percent | 
| Conditions | 43 | 43 | 100.00 | 
| Logical | 43 | 43 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       118
 EXPRESSION (req_i[0] & gen_normal_case.prio_mask_q[0])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T198 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[1] & gen_normal_case.prio_mask_q[1])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T12,T26 | 
| 1 | 1 | Covered | T67,T12,T26 | 
 LINE       126
 EXPRESSION (req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Unreachable |  | 
| 1 | 0 | 1 | Unreachable | T12,T46,T47 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Unreachable | T1,T2,T3 | 
 LINE       126
 EXPRESSION (req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Unreachable | T97,T198 | 
| 1 | 0 | 1 | Unreachable | T12,T46,T47 | 
| 1 | 1 | 0 | Covered | T67,T12,T26 | 
| 1 | 1 | 1 | Unreachable | T67,T12,T26 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T67,T12,T26 | 
| 1 | 0 | Unreachable | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[1])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T67,T12,T26 | 
| 0 | 1 | Covered | T67,T12,T26 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable | T67,T12,T26 | 
| 1 | 1 | Covered | T67,T12,T26 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T12,T46,T47 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T12,T46,T47 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T67,T12,T26 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T67,T12,T26 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T12,T26 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
Cond Coverage for Module : 
prim_arbiter_tree ( parameter N=2,DW=129,EnDataPort=1,IdxW=1,gen_normal_case.gen_tree[0].gen_level[0].Pa=0,gen_normal_case.gen_tree[0].gen_level[0].C0=1,gen_normal_case.gen_tree[0].gen_level[0].C1=2,gen_normal_case.gen_tree[1].gen_level[0].Pa=1,gen_normal_case.gen_tree[1].gen_level[0].C0=3,gen_normal_case.gen_tree[1].gen_level[0].C1=4,gen_normal_case.gen_tree[1].gen_level[1].Pa=2,gen_normal_case.gen_tree[1].gen_level[1].C0=5,gen_normal_case.gen_tree[1].gen_level[1].C1=6 ) 
Cond Coverage for Module self-instances : 
 | Total | Covered | Percent | 
| Conditions | 51 | 50 | 98.04 | 
| Logical | 51 | 50 | 98.04 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       118
 EXPRESSION (req_i[0] & gen_normal_case.prio_mask_q[0])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T99 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[1] & gen_normal_case.prio_mask_q[1])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T26,T45 | 
| 1 | 1 | Covered | T67,T26,T45 | 
 LINE       126
 EXPRESSION (req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T99 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       126
 EXPRESSION (req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Covered | T99 | 
| 1 | 0 | 1 | Covered | T99 | 
| 1 | 1 | 0 | Covered | T67,T26,T45 | 
| 1 | 1 | 1 | Covered | T67,T26,T45 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T67,T26,T45 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[1])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T67,T26,T45 | 
| 0 | 1 | Covered | T67,T26,T45 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T26,T45 | 
| 1 | 1 | Covered | T67,T26,T45 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T99 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T99 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T67,T26,T45 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T67,T26,T45 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T26,T45 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
Cond Coverage for Module : 
prim_arbiter_tree ( parameter N=4,DW=2,EnDataPort=0,IdxW=2,gen_normal_case.gen_tree[0].gen_level[0].Pa=0,gen_normal_case.gen_tree[0].gen_level[0].C0=1,gen_normal_case.gen_tree[0].gen_level[0].C1=2,gen_normal_case.gen_tree[1].gen_level[0].Pa=1,gen_normal_case.gen_tree[1].gen_level[0].C0=3,gen_normal_case.gen_tree[1].gen_level[0].C1=4,gen_normal_case.gen_tree[1].gen_level[1].Pa=2,gen_normal_case.gen_tree[1].gen_level[1].C0=5,gen_normal_case.gen_tree[1].gen_level[1].C1=6,gen_normal_case.gen_tree[2].gen_level[0].Pa=3,gen_normal_case.gen_tree[2].gen_level[0].C0=7,gen_normal_case.gen_tree[2].gen_level[0].C1=8,gen_normal_case.gen_tree[2].gen_level[1].Pa=4,gen_normal_case.gen_tree[2].gen_level[1].C0=9,gen_normal_case.gen_tree[2].gen_level[1].C1=10,gen_normal_case.gen_tree[2].gen_level[2].Pa=5,gen_normal_case.gen_tree[2].gen_level[2].C0=11,gen_normal_case.gen_tree[2].gen_level[2].C1=12,gen_normal_case.gen_tree[2].gen_level[3].Pa=6,gen_normal_case.gen_tree[2].gen_level[3].C0=13,gen_normal_case.gen_tree[2].gen_level[3].C1=14 ) 
Cond Coverage for Module self-instances : 
 | Total | Covered | Percent | 
| Conditions | 130 | 127 | 97.69 | 
| Logical | 130 | 127 | 97.69 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       118
 EXPRESSION (req_i[0] & gen_normal_case.prio_mask_q[0])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T10,T11,T16 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[1] & gen_normal_case.prio_mask_q[1])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T2,T10,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[2] & gen_normal_case.prio_mask_q[2])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T2,T10,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[3] & gen_normal_case.prio_mask_q[3])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T53,T54,T199 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       126
 EXPRESSION (req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T2,T3,T10 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       126
 EXPRESSION (req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T2,T3,T10 | 
 LINE       126
 EXPRESSION (req_i[2] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T2,T3,T10 | 
| 1 | 1 | 1 | Covered | T3,T10,T11 | 
 LINE       126
 EXPRESSION (req_i[3] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T3,T10,T11 | 
| 1 | 1 | 1 | Covered | T3,T10,T11 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[1])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T2,T3,T10 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T2,T3,T10 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[2])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T3,T10,T11 | 
| 0 | 1 | Covered | T2,T3,T10 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T3,T10,T11 | 
| 1 | 1 | Covered | T2,T3,T10 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[3])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T3,T10,T11 | 
| 0 | 1 | Covered | T3,T10,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T3,T10,T11 | 
| 1 | 1 | Covered | T3,T10,T11 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T2,T3,T10 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T2,T3,T10 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T3,T10,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T3,T10,T11 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T46,T47,T53 | 
| 1 | 0 | Covered | T46,T47,T53 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T2,T3,T10 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[1].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[1].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T3,T10,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T46,T47,T53 | 
| 1 | 0 | Covered | T2,T3,T10 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T12,T45,T46 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T3,T10,T11 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[1].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[1].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T2,T3,T10 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T2,T3,T10 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T12,T45,T27 | 
| 1 | 0 | Covered | T2,T3,T10 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T2,T3,T10 | 
| 1 | 0 | Covered | T1,T2,T3 | 
Branch Coverage for Module : 
prim_arbiter_tree ( parameter N=4,DW=2,EnDataPort=0,IdxW=2,gen_normal_case.gen_tree[0].gen_level[0].Pa=0,gen_normal_case.gen_tree[0].gen_level[0].C0=1,gen_normal_case.gen_tree[0].gen_level[0].C1=2,gen_normal_case.gen_tree[1].gen_level[0].Pa=1,gen_normal_case.gen_tree[1].gen_level[0].C0=3,gen_normal_case.gen_tree[1].gen_level[0].C1=4,gen_normal_case.gen_tree[1].gen_level[1].Pa=2,gen_normal_case.gen_tree[1].gen_level[1].C0=5,gen_normal_case.gen_tree[1].gen_level[1].C1=6,gen_normal_case.gen_tree[2].gen_level[0].Pa=3,gen_normal_case.gen_tree[2].gen_level[0].C0=7,gen_normal_case.gen_tree[2].gen_level[0].C1=8,gen_normal_case.gen_tree[2].gen_level[1].Pa=4,gen_normal_case.gen_tree[2].gen_level[1].C0=9,gen_normal_case.gen_tree[2].gen_level[1].C1=10,gen_normal_case.gen_tree[2].gen_level[2].Pa=5,gen_normal_case.gen_tree[2].gen_level[2].C0=11,gen_normal_case.gen_tree[2].gen_level[2].C1=12,gen_normal_case.gen_tree[2].gen_level[3].Pa=6,gen_normal_case.gen_tree[2].gen_level[3].C0=13,gen_normal_case.gen_tree[2].gen_level[3].C1=14 ) 
Branch Coverage for Module self-instances : 
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
22 | 
22 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| IF | 
191 | 
2 | 
2 | 
100.00 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
191              if (!rst_ni) begin
                 -1-  
192                prio_mask_q <= '0;
                   ==>
193              end else begin
194                prio_mask_q <= prio_mask_d;
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Branch Coverage for Module : 
prim_arbiter_tree ( parameter N=2,DW=16,EnDataPort=1,IdxW=1,gen_normal_case.gen_tree[0].gen_level[0].Pa=0,gen_normal_case.gen_tree[0].gen_level[0].C0=1,gen_normal_case.gen_tree[0].gen_level[0].C1=2,gen_normal_case.gen_tree[1].gen_level[0].Pa=1,gen_normal_case.gen_tree[1].gen_level[0].C0=3,gen_normal_case.gen_tree[1].gen_level[0].C1=4,gen_normal_case.gen_tree[1].gen_level[1].Pa=2,gen_normal_case.gen_tree[1].gen_level[1].C0=5,gen_normal_case.gen_tree[1].gen_level[1].C1=6 + N=2,DW=129,EnDataPort=1,IdxW=1,gen_normal_case.gen_tree[0].gen_level[0].Pa=0,gen_normal_case.gen_tree[0].gen_level[0].C0=1,gen_normal_case.gen_tree[0].gen_level[0].C1=2,gen_normal_case.gen_tree[1].gen_level[0].Pa=1,gen_normal_case.gen_tree[1].gen_level[0].C0=3,gen_normal_case.gen_tree[1].gen_level[0].C1=4,gen_normal_case.gen_tree[1].gen_level[1].Pa=2,gen_normal_case.gen_tree[1].gen_level[1].C0=5,gen_normal_case.gen_tree[1].gen_level[1].C1=6 ) 
Branch Coverage for Module self-instances : 
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
10 | 
10 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| IF | 
191 | 
2 | 
2 | 
100.00 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
191              if (!rst_ni) begin
                 -1-  
192                prio_mask_q <= '0;
                   ==>
193              end else begin
194                prio_mask_q <= prio_mask_d;
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Module : 
prim_arbiter_tree
Assertion Details
CheckHotOne_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
2147483647 | 
0 | 
0 | 
| T1 | 
7164 | 
6630 | 
0 | 
0 | 
| T2 | 
15048 | 
14712 | 
0 | 
0 | 
| T3 | 
87468 | 
87048 | 
0 | 
0 | 
| T4 | 
20958 | 
16578 | 
0 | 
0 | 
| T10 | 
2002338 | 
1928754 | 
0 | 
0 | 
| T11 | 
38370 | 
38040 | 
0 | 
0 | 
| T16 | 
434808 | 
434286 | 
0 | 
0 | 
| T17 | 
9072 | 
8724 | 
0 | 
0 | 
| T18 | 
522054 | 
521688 | 
0 | 
0 | 
| T19 | 
387876 | 
386886 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
6258 | 
6258 | 
0 | 
0 | 
| T1 | 
6 | 
6 | 
0 | 
0 | 
| T2 | 
6 | 
6 | 
0 | 
0 | 
| T3 | 
6 | 
6 | 
0 | 
0 | 
| T4 | 
6 | 
6 | 
0 | 
0 | 
| T10 | 
6 | 
6 | 
0 | 
0 | 
| T11 | 
6 | 
6 | 
0 | 
0 | 
| T16 | 
6 | 
6 | 
0 | 
0 | 
| T17 | 
6 | 
6 | 
0 | 
0 | 
| T18 | 
6 | 
6 | 
0 | 
0 | 
| T19 | 
6 | 
6 | 
0 | 
0 | 
GntImpliesReady_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
71334853 | 
0 | 
0 | 
| T1 | 
5970 | 
129 | 
0 | 
0 | 
| T2 | 
12540 | 
130 | 
0 | 
0 | 
| T3 | 
87468 | 
773 | 
0 | 
0 | 
| T4 | 
20958 | 
560 | 
0 | 
0 | 
| T10 | 
2002338 | 
33236 | 
0 | 
0 | 
| T11 | 
38370 | 
257 | 
0 | 
0 | 
| T12 | 
0 | 
10249 | 
0 | 
0 | 
| T16 | 
434808 | 
198 | 
0 | 
0 | 
| T17 | 
9072 | 
145 | 
0 | 
0 | 
| T18 | 
522054 | 
1090 | 
0 | 
0 | 
| T19 | 
387876 | 
162 | 
0 | 
0 | 
| T26 | 
0 | 
56 | 
0 | 
0 | 
| T28 | 
0 | 
35 | 
0 | 
0 | 
| T45 | 
0 | 
197 | 
0 | 
0 | 
| T58 | 
2208 | 
50 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
70 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
71334853 | 
0 | 
0 | 
| T1 | 
5970 | 
129 | 
0 | 
0 | 
| T2 | 
12540 | 
130 | 
0 | 
0 | 
| T3 | 
87468 | 
773 | 
0 | 
0 | 
| T4 | 
20958 | 
560 | 
0 | 
0 | 
| T10 | 
2002338 | 
33236 | 
0 | 
0 | 
| T11 | 
38370 | 
257 | 
0 | 
0 | 
| T12 | 
0 | 
10249 | 
0 | 
0 | 
| T16 | 
434808 | 
198 | 
0 | 
0 | 
| T17 | 
9072 | 
145 | 
0 | 
0 | 
| T18 | 
522054 | 
1090 | 
0 | 
0 | 
| T19 | 
387876 | 
162 | 
0 | 
0 | 
| T26 | 
0 | 
56 | 
0 | 
0 | 
| T28 | 
0 | 
35 | 
0 | 
0 | 
| T45 | 
0 | 
197 | 
0 | 
0 | 
| T58 | 
2208 | 
50 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
70 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
2147483647 | 
0 | 
0 | 
| T1 | 
7164 | 
6630 | 
0 | 
0 | 
| T2 | 
15048 | 
14712 | 
0 | 
0 | 
| T3 | 
87468 | 
87048 | 
0 | 
0 | 
| T4 | 
20958 | 
16578 | 
0 | 
0 | 
| T10 | 
2002338 | 
1928754 | 
0 | 
0 | 
| T11 | 
38370 | 
38040 | 
0 | 
0 | 
| T16 | 
434808 | 
434286 | 
0 | 
0 | 
| T17 | 
9072 | 
8724 | 
0 | 
0 | 
| T18 | 
522054 | 
521688 | 
0 | 
0 | 
| T19 | 
387876 | 
386886 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
2147483647 | 
0 | 
0 | 
| T1 | 
7164 | 
6630 | 
0 | 
0 | 
| T2 | 
15048 | 
14712 | 
0 | 
0 | 
| T3 | 
87468 | 
87048 | 
0 | 
0 | 
| T4 | 
20958 | 
16578 | 
0 | 
0 | 
| T10 | 
2002338 | 
1928754 | 
0 | 
0 | 
| T11 | 
38370 | 
38040 | 
0 | 
0 | 
| T16 | 
434808 | 
434286 | 
0 | 
0 | 
| T17 | 
9072 | 
8724 | 
0 | 
0 | 
| T18 | 
522054 | 
521688 | 
0 | 
0 | 
| T19 | 
387876 | 
386886 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
71334853 | 
0 | 
0 | 
| T1 | 
5970 | 
129 | 
0 | 
0 | 
| T2 | 
12540 | 
130 | 
0 | 
0 | 
| T3 | 
87468 | 
773 | 
0 | 
0 | 
| T4 | 
20958 | 
560 | 
0 | 
0 | 
| T10 | 
2002338 | 
33236 | 
0 | 
0 | 
| T11 | 
38370 | 
257 | 
0 | 
0 | 
| T12 | 
0 | 
10249 | 
0 | 
0 | 
| T16 | 
434808 | 
198 | 
0 | 
0 | 
| T17 | 
9072 | 
145 | 
0 | 
0 | 
| T18 | 
522054 | 
1090 | 
0 | 
0 | 
| T19 | 
387876 | 
162 | 
0 | 
0 | 
| T26 | 
0 | 
56 | 
0 | 
0 | 
| T28 | 
0 | 
35 | 
0 | 
0 | 
| T45 | 
0 | 
197 | 
0 | 
0 | 
| T58 | 
2208 | 
50 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
70 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
66511806 | 
0 | 
0 | 
| T1 | 
4776 | 
128 | 
0 | 
0 | 
| T2 | 
10032 | 
128 | 
0 | 
0 | 
| T3 | 
58312 | 
128 | 
0 | 
0 | 
| T4 | 
13972 | 
560 | 
0 | 
0 | 
| T10 | 
1334892 | 
32496 | 
0 | 
0 | 
| T11 | 
25580 | 
128 | 
0 | 
0 | 
| T16 | 
289872 | 
128 | 
0 | 
0 | 
| T17 | 
6048 | 
128 | 
0 | 
0 | 
| T18 | 
348036 | 
248 | 
0 | 
0 | 
| T19 | 
258584 | 
128 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
2001551197 | 
0 | 
0 | 
| T1 | 
7164 | 
5555 | 
0 | 
0 | 
| T2 | 
15048 | 
13139 | 
0 | 
0 | 
| T3 | 
87468 | 
59471 | 
0 | 
0 | 
| T4 | 
20958 | 
15318 | 
0 | 
0 | 
| T10 | 
2002338 | 
1724856 | 
0 | 
0 | 
| T11 | 
38370 | 
30412 | 
0 | 
0 | 
| T16 | 
434808 | 
430240 | 
0 | 
0 | 
| T17 | 
9072 | 
6425 | 
0 | 
0 | 
| T18 | 
522054 | 
375736 | 
0 | 
0 | 
| T19 | 
387876 | 
284768 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
71334853 | 
0 | 
0 | 
| T1 | 
5970 | 
129 | 
0 | 
0 | 
| T2 | 
12540 | 
130 | 
0 | 
0 | 
| T3 | 
87468 | 
773 | 
0 | 
0 | 
| T4 | 
20958 | 
560 | 
0 | 
0 | 
| T10 | 
2002338 | 
33236 | 
0 | 
0 | 
| T11 | 
38370 | 
257 | 
0 | 
0 | 
| T12 | 
0 | 
10249 | 
0 | 
0 | 
| T16 | 
434808 | 
198 | 
0 | 
0 | 
| T17 | 
9072 | 
145 | 
0 | 
0 | 
| T18 | 
522054 | 
1090 | 
0 | 
0 | 
| T19 | 
387876 | 
162 | 
0 | 
0 | 
| T26 | 
0 | 
56 | 
0 | 
0 | 
| T28 | 
0 | 
35 | 
0 | 
0 | 
| T45 | 
0 | 
197 | 
0 | 
0 | 
| T58 | 
2208 | 
50 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
70 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
71334853 | 
0 | 
0 | 
| T1 | 
5970 | 
129 | 
0 | 
0 | 
| T2 | 
12540 | 
130 | 
0 | 
0 | 
| T3 | 
87468 | 
773 | 
0 | 
0 | 
| T4 | 
20958 | 
560 | 
0 | 
0 | 
| T10 | 
2002338 | 
33236 | 
0 | 
0 | 
| T11 | 
38370 | 
257 | 
0 | 
0 | 
| T12 | 
0 | 
10249 | 
0 | 
0 | 
| T16 | 
434808 | 
198 | 
0 | 
0 | 
| T17 | 
9072 | 
145 | 
0 | 
0 | 
| T18 | 
522054 | 
1090 | 
0 | 
0 | 
| T19 | 
387876 | 
162 | 
0 | 
0 | 
| T26 | 
0 | 
56 | 
0 | 
0 | 
| T28 | 
0 | 
35 | 
0 | 
0 | 
| T45 | 
0 | 
197 | 
0 | 
0 | 
| T58 | 
2208 | 
50 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
70 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
348564128 | 
0 | 
0 | 
| T1 | 
5970 | 
1039 | 
0 | 
0 | 
| T2 | 
12540 | 
1533 | 
0 | 
0 | 
| T3 | 
87468 | 
27537 | 
0 | 
0 | 
| T4 | 
20958 | 
1120 | 
0 | 
0 | 
| T10 | 
2002338 | 
197514 | 
0 | 
0 | 
| T11 | 
38370 | 
7552 | 
0 | 
0 | 
| T12 | 
0 | 
50563 | 
0 | 
0 | 
| T16 | 
434808 | 
3978 | 
0 | 
0 | 
| T17 | 
9072 | 
2259 | 
0 | 
0 | 
| T18 | 
522054 | 
145568 | 
0 | 
0 | 
| T19 | 
387876 | 
102078 | 
0 | 
0 | 
| T26 | 
0 | 
138086 | 
0 | 
0 | 
| T28 | 
0 | 
6365 | 
0 | 
0 | 
| T45 | 
0 | 
54962 | 
0 | 
0 | 
| T58 | 
2208 | 
1587 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
1058 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
66510514 | 
0 | 
0 | 
| T1 | 
4776 | 
128 | 
0 | 
0 | 
| T2 | 
10032 | 
128 | 
0 | 
0 | 
| T3 | 
58312 | 
128 | 
0 | 
0 | 
| T4 | 
13972 | 
560 | 
0 | 
0 | 
| T10 | 
1334892 | 
32496 | 
0 | 
0 | 
| T11 | 
25580 | 
128 | 
0 | 
0 | 
| T16 | 
289872 | 
128 | 
0 | 
0 | 
| T17 | 
6048 | 
128 | 
0 | 
0 | 
| T18 | 
348036 | 
248 | 
0 | 
0 | 
| T19 | 
258584 | 
128 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
0 | 
0 | 
6240 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
2147483647 | 
0 | 
0 | 
| T1 | 
7164 | 
6630 | 
0 | 
0 | 
| T2 | 
15048 | 
14712 | 
0 | 
0 | 
| T3 | 
87468 | 
87048 | 
0 | 
0 | 
| T4 | 
20958 | 
16578 | 
0 | 
0 | 
| T10 | 
2002338 | 
1928754 | 
0 | 
0 | 
| T11 | 
38370 | 
38040 | 
0 | 
0 | 
| T16 | 
434808 | 
434286 | 
0 | 
0 | 
| T17 | 
9072 | 
8724 | 
0 | 
0 | 
| T18 | 
522054 | 
521688 | 
0 | 
0 | 
| T19 | 
387876 | 
386886 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1577003436 | 
66512182 | 
0 | 
0 | 
| T1 | 
4776 | 
128 | 
0 | 
0 | 
| T2 | 
10032 | 
128 | 
0 | 
0 | 
| T3 | 
58312 | 
128 | 
0 | 
0 | 
| T4 | 
13972 | 
560 | 
0 | 
0 | 
| T10 | 
1334892 | 
32496 | 
0 | 
0 | 
| T11 | 
25580 | 
128 | 
0 | 
0 | 
| T16 | 
289872 | 
128 | 
0 | 
0 | 
| T17 | 
6048 | 
128 | 
0 | 
0 | 
| T18 | 
348036 | 
248 | 
0 | 
0 | 
| T19 | 
258584 | 
128 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[0].u_core.u_rd.u_valid_random
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 52 | 48 | 92.31 | 
| CONT_ASSIGN | 62 | 0 | 0 |  | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 0 | 0 |  | 
| CONT_ASSIGN | 163 | 0 | 0 |  | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 174 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 182 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| ALWAYS | 191 | 3 | 3 | 100.00 | 
61                        logic unused_req_chk;
62         unreachable    assign unused_req_chk = req_chk_i;
63                      
64                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
65                      
66                        // this case is basically just a bypass
67                        if (N == 1) begin : gen_degenerate_case
68                      
69                          assign valid_o  = req_i[0];
70                          assign data_o   = data_i[0];
71                          assign gnt_o[0] = valid_o & ready_i;
72                          assign idx_o    = '0;
73                      
74                        end else begin : gen_normal_case
75                      
76                          // align to powers of 2 for simplicity
77                          // a full binary tree with N levels has 2**N + 2**N-1 nodes
78                          logic [2**(IdxW+1)-2:0]           req_tree;
79                          logic [2**(IdxW+1)-2:0]           prio_tree;
80                          logic [2**(IdxW+1)-2:0]           sel_tree;
81                          logic [2**(IdxW+1)-2:0]           mask_tree;
82                          logic [2**(IdxW+1)-2:0][IdxW-1:0] idx_tree;
83                          logic [2**(IdxW+1)-2:0][DW-1:0]   data_tree;
84                          logic [N-1:0]                     prio_mask_d, prio_mask_q;
85                      
86                          for (genvar level = 0; level < IdxW+1; level++) begin : gen_tree
87                            //
88                            // level+1   C0   C1   <- "Base1" points to the first node on "level+1",
89                            //            \  /         these nodes are the children of the nodes one level below
90                            // level       Pa      <- "Base0", points to the first node on "level",
91                            //                         these nodes are the parents of the nodes one level above
92                            //
93                            // hence we have the following indices for the Pa, C0, C1 nodes:
94                            // Pa = 2**level     - 1 + offset       = Base0 + offset
95                            // C0 = 2**(level+1) - 1 + 2*offset     = Base1 + 2*offset
96                            // C1 = 2**(level+1) - 1 + 2*offset + 1 = Base1 + 2*offset + 1
97                            //
98                            localparam int Base0 = (2**level)-1;
99                            localparam int Base1 = (2**(level+1))-1;
100                     
101                           for (genvar offset = 0; offset < 2**level; offset++) begin : gen_level
102                             localparam int Pa = Base0 + offset;
103                             localparam int C0 = Base1 + 2*offset;
104                             localparam int C1 = Base1 + 2*offset + 1;
105                     
106                             // this assigns the gated interrupt source signals, their
107                             // corresponding IDs and priorities to the tree leafs
108                             if (level == IdxW) begin : gen_leafs
109                               if (offset < N) begin : gen_assign
110                                 // forward path (requests and data)
111                                 // all requests inputs are assigned to the request tree
112        4/4                      assign req_tree[Pa]      = req_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
113                                 // we basically split the incoming request vector into two halves with the following
114                                 // priority assignment. the prio_mask_q register contains a prefix sum that has been
115                                 // computed using the last winning index, and hence masks out all requests at offsets
116                                 // lower or equal the previously granted index. hence, all higher indices are considered
117                                 // first in the arbitration tree nodes below, before considering the lower indices.
118        4/4                      assign prio_tree[Pa]     = req_i[offset] & prio_mask_q[offset];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
119                                 // input for the index muxes (used to compute the winner index)
120                                 assign idx_tree[Pa]      = offset;
121                                 // input for the data muxes
122        0/4     ==>              assign data_tree[Pa]     = data_i[offset];
123                     
124                                 // backward path (grants and prefix sum)
125                                 // grant if selected, ready and request asserted
126        4/4                      assign gnt_o[offset]       = req_i[offset] & sel_tree[Pa] & ready_i;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
127                                 // only update mask if there is a valid request
128        4/4                      assign prio_mask_d[offset] = (|req_i) ?
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
129                                                              mask_tree[Pa] | sel_tree[Pa] & ~ready_i :
130                                                              prio_mask_q[offset];
131                               end else begin : gen_tie_off
132                                 // forward path
133                                 assign req_tree[Pa]  = '0;
134                                 assign prio_tree[Pa] = '0;
135                                 assign idx_tree[Pa]  = '0;
136                                 assign data_tree[Pa] = '0;
137                                 logic unused_sigs;
138                                 assign unused_sigs = ^{mask_tree[Pa],
139                                                        sel_tree[Pa]};
140                               end
141                             // this creates the node assignments
142                             end else begin : gen_nodes
143                               // local helper variable
144                               logic sel;
145                     
146                               // forward path (requests and data)
147                               // each node looks at its two children, and selects the one with higher priority
148        3/3                    assign sel = ~req_tree[C0] | ~prio_tree[C0] & prio_tree[C1];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
149                               // propagate requests
150        3/3                    assign req_tree[Pa]  = req_tree[C0] | req_tree[C1];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
151        3/3                    assign prio_tree[Pa] = prio_tree[C1] | prio_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
152                               // data and index muxes
153                               // Note: these ternaries have triggered a synthesis bug in Vivado versions older
154                               // than 2020.2. If the problem resurfaces again, have a look at issue #1408.
155        3/3                    assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
156        3/3                    assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
157                     
158                               // backward path (grants and prefix sum)
159                               // this propagates the selction index back and computes a hot one mask
160        3/3                    assign sel_tree[C0] = sel_tree[Pa] & ~sel;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
161        3/3                    assign sel_tree[C1] = sel_tree[Pa] &  sel;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
162                               // this performs a prefix sum for masking the input requests in the next cycle
163        1/1(2 unreachable)            assign mask_tree[C0] = mask_tree[Pa];
           Tests:       T1 T2 T3 
164        3/3                    assign mask_tree[C1] = mask_tree[Pa] | sel_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
165                             end
166                           end : gen_level
167                         end : gen_tree
168                     
169                         // the results can be found at the tree root
170                         if (EnDataPort) begin : gen_data_port
171                           assign data_o      = data_tree[0];
172                         end else begin : gen_no_dataport
173                           logic [DW-1:0] unused_data;
174        1/1                assign unused_data = data_tree[0];
           Tests:       T1 T2 T3 
175                           assign data_o = '1;
176                         end
177                     
178                         // This index is unused.
179                         logic unused_prio_tree;
180        1/1              assign unused_prio_tree = prio_tree[0];
           Tests:       T1 T2 T3 
181                     
182        1/1              assign idx_o       = idx_tree[0];
           Tests:       T1 T2 T3 
183        1/1              assign valid_o     = req_tree[0];
           Tests:       T1 T2 T3 
184                     
185                         // the select tree computes a hot one signal that indicates which request is currently selected
186                         assign sel_tree[0] = 1'b1;
187                         // the mask tree is basically a prefix sum of the hot one select signal computed above
188                         assign mask_tree[0] = 1'b0;
189                     
190                         always_ff @(posedge clk_i or negedge rst_ni) begin : p_mask_reg
191        1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
192        1/1                  prio_mask_q <= '0;
           Tests:       T1 T2 T3 
193                           end else begin
194        1/1                  prio_mask_q <= prio_mask_d;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[0].u_core.u_rd.u_valid_random
 | Total | Covered | Percent | 
| Conditions | 130 | 127 | 97.69 | 
| Logical | 130 | 127 | 97.69 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       118
 EXPRESSION (req_i[0] & gen_normal_case.prio_mask_q[0])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T10,T11,T16 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[1] & gen_normal_case.prio_mask_q[1])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T2,T10,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[2] & gen_normal_case.prio_mask_q[2])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T2,T10,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[3] & gen_normal_case.prio_mask_q[3])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T53,T54,T199 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       126
 EXPRESSION (req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T2,T3,T10 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       126
 EXPRESSION (req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T2,T3,T10 | 
 LINE       126
 EXPRESSION (req_i[2] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T2,T3,T10 | 
| 1 | 1 | 1 | Covered | T3,T10,T11 | 
 LINE       126
 EXPRESSION (req_i[3] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T3,T10,T11 | 
| 1 | 1 | 1 | Covered | T3,T10,T11 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[1])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T2,T3,T10 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T2,T3,T10 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[2])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T3,T10,T11 | 
| 0 | 1 | Covered | T2,T3,T10 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T3,T10,T11 | 
| 1 | 1 | Covered | T2,T3,T10 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[3])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T3,T10,T11 | 
| 0 | 1 | Covered | T3,T10,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T3,T10,T11 | 
| 1 | 1 | Covered | T3,T10,T11 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T2,T3,T10 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T2,T3,T10 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T3,T10,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T3,T10,T11 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T46,T47,T53 | 
| 1 | 0 | Covered | T46,T47,T53 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T2,T3,T10 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[1].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[1].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T3,T10,T11 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T46,T47,T53 | 
| 1 | 0 | Covered | T2,T3,T10 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T12,T46,T47 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T3,T10,T11 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[1].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[1].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T2,T3,T10 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T2,T3,T10 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T12,T45,T27 | 
| 1 | 0 | Covered | T2,T3,T10 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T2,T3,T10 | 
| 1 | 0 | Covered | T1,T2,T3 | 
Branch Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[0].u_core.u_rd.u_valid_random
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
22 | 
22 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| IF | 
191 | 
2 | 
2 | 
100.00 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
191              if (!rst_ni) begin
                 -1-  
192                prio_mask_q <= '0;
                   ==>
193              end else begin
194                prio_mask_q <= prio_mask_d;
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[0].u_core.u_rd.u_valid_random
Assertion Details
CheckHotOne_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1043 | 
1043 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
GntImpliesReady_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2551299 | 
0 | 
0 | 
| T1 | 
1194 | 
1 | 
0 | 
0 | 
| T2 | 
2508 | 
2 | 
0 | 
0 | 
| T3 | 
14578 | 
316 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
740 | 
0 | 
0 | 
| T11 | 
6395 | 
90 | 
0 | 
0 | 
| T16 | 
72468 | 
70 | 
0 | 
0 | 
| T17 | 
1512 | 
5 | 
0 | 
0 | 
| T18 | 
87009 | 
426 | 
0 | 
0 | 
| T19 | 
64646 | 
14 | 
0 | 
0 | 
| T58 | 
0 | 
50 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2551299 | 
0 | 
0 | 
| T1 | 
1194 | 
1 | 
0 | 
0 | 
| T2 | 
2508 | 
2 | 
0 | 
0 | 
| T3 | 
14578 | 
316 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
740 | 
0 | 
0 | 
| T11 | 
6395 | 
90 | 
0 | 
0 | 
| T16 | 
72468 | 
70 | 
0 | 
0 | 
| T17 | 
1512 | 
5 | 
0 | 
0 | 
| T18 | 
87009 | 
426 | 
0 | 
0 | 
| T19 | 
64646 | 
14 | 
0 | 
0 | 
| T58 | 
0 | 
50 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2551299 | 
0 | 
0 | 
| T1 | 
1194 | 
1 | 
0 | 
0 | 
| T2 | 
2508 | 
2 | 
0 | 
0 | 
| T3 | 
14578 | 
316 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
740 | 
0 | 
0 | 
| T11 | 
6395 | 
90 | 
0 | 
0 | 
| T16 | 
72468 | 
70 | 
0 | 
0 | 
| T17 | 
1512 | 
5 | 
0 | 
0 | 
| T18 | 
87009 | 
426 | 
0 | 
0 | 
| T19 | 
64646 | 
14 | 
0 | 
0 | 
| T58 | 
0 | 
50 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
0 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
273236326 | 
0 | 
0 | 
| T1 | 
1194 | 
286 | 
0 | 
0 | 
| T2 | 
2508 | 
1135 | 
0 | 
0 | 
| T3 | 
14578 | 
381 | 
0 | 
0 | 
| T4 | 
3493 | 
2623 | 
0 | 
0 | 
| T10 | 
333723 | 
182553 | 
0 | 
0 | 
| T11 | 
6395 | 
2351 | 
0 | 
0 | 
| T16 | 
72468 | 
68591 | 
0 | 
0 | 
| T17 | 
1512 | 
378 | 
0 | 
0 | 
| T18 | 
87009 | 
15562 | 
0 | 
0 | 
| T19 | 
64646 | 
17173 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2551299 | 
0 | 
0 | 
| T1 | 
1194 | 
1 | 
0 | 
0 | 
| T2 | 
2508 | 
2 | 
0 | 
0 | 
| T3 | 
14578 | 
316 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
740 | 
0 | 
0 | 
| T11 | 
6395 | 
90 | 
0 | 
0 | 
| T16 | 
72468 | 
70 | 
0 | 
0 | 
| T17 | 
1512 | 
5 | 
0 | 
0 | 
| T18 | 
87009 | 
426 | 
0 | 
0 | 
| T19 | 
64646 | 
14 | 
0 | 
0 | 
| T58 | 
0 | 
50 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2551299 | 
0 | 
0 | 
| T1 | 
1194 | 
1 | 
0 | 
0 | 
| T2 | 
2508 | 
2 | 
0 | 
0 | 
| T3 | 
14578 | 
316 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
740 | 
0 | 
0 | 
| T11 | 
6395 | 
90 | 
0 | 
0 | 
| T16 | 
72468 | 
70 | 
0 | 
0 | 
| T17 | 
1512 | 
5 | 
0 | 
0 | 
| T18 | 
87009 | 
426 | 
0 | 
0 | 
| T19 | 
64646 | 
14 | 
0 | 
0 | 
| T58 | 
0 | 
50 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
114657282 | 
0 | 
0 | 
| T1 | 
1194 | 
783 | 
0 | 
0 | 
| T2 | 
2508 | 
1277 | 
0 | 
0 | 
| T3 | 
14578 | 
14091 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
132522 | 
0 | 
0 | 
| T11 | 
6395 | 
3929 | 
0 | 
0 | 
| T16 | 
72468 | 
3722 | 
0 | 
0 | 
| T17 | 
1512 | 
1040 | 
0 | 
0 | 
| T18 | 
87009 | 
71166 | 
0 | 
0 | 
| T19 | 
64646 | 
47272 | 
0 | 
0 | 
| T58 | 
0 | 
1587 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
0 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
0 | 
0 | 
1040 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[1].u_core.u_rd.u_valid_random
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 52 | 48 | 92.31 | 
| CONT_ASSIGN | 62 | 0 | 0 |  | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 122 | 1 | 0 | 0.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 0 | 0 |  | 
| CONT_ASSIGN | 163 | 0 | 0 |  | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 174 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 182 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| ALWAYS | 191 | 3 | 3 | 100.00 | 
61                        logic unused_req_chk;
62         unreachable    assign unused_req_chk = req_chk_i;
63                      
64                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
65                      
66                        // this case is basically just a bypass
67                        if (N == 1) begin : gen_degenerate_case
68                      
69                          assign valid_o  = req_i[0];
70                          assign data_o   = data_i[0];
71                          assign gnt_o[0] = valid_o & ready_i;
72                          assign idx_o    = '0;
73                      
74                        end else begin : gen_normal_case
75                      
76                          // align to powers of 2 for simplicity
77                          // a full binary tree with N levels has 2**N + 2**N-1 nodes
78                          logic [2**(IdxW+1)-2:0]           req_tree;
79                          logic [2**(IdxW+1)-2:0]           prio_tree;
80                          logic [2**(IdxW+1)-2:0]           sel_tree;
81                          logic [2**(IdxW+1)-2:0]           mask_tree;
82                          logic [2**(IdxW+1)-2:0][IdxW-1:0] idx_tree;
83                          logic [2**(IdxW+1)-2:0][DW-1:0]   data_tree;
84                          logic [N-1:0]                     prio_mask_d, prio_mask_q;
85                      
86                          for (genvar level = 0; level < IdxW+1; level++) begin : gen_tree
87                            //
88                            // level+1   C0   C1   <- "Base1" points to the first node on "level+1",
89                            //            \  /         these nodes are the children of the nodes one level below
90                            // level       Pa      <- "Base0", points to the first node on "level",
91                            //                         these nodes are the parents of the nodes one level above
92                            //
93                            // hence we have the following indices for the Pa, C0, C1 nodes:
94                            // Pa = 2**level     - 1 + offset       = Base0 + offset
95                            // C0 = 2**(level+1) - 1 + 2*offset     = Base1 + 2*offset
96                            // C1 = 2**(level+1) - 1 + 2*offset + 1 = Base1 + 2*offset + 1
97                            //
98                            localparam int Base0 = (2**level)-1;
99                            localparam int Base1 = (2**(level+1))-1;
100                     
101                           for (genvar offset = 0; offset < 2**level; offset++) begin : gen_level
102                             localparam int Pa = Base0 + offset;
103                             localparam int C0 = Base1 + 2*offset;
104                             localparam int C1 = Base1 + 2*offset + 1;
105                     
106                             // this assigns the gated interrupt source signals, their
107                             // corresponding IDs and priorities to the tree leafs
108                             if (level == IdxW) begin : gen_leafs
109                               if (offset < N) begin : gen_assign
110                                 // forward path (requests and data)
111                                 // all requests inputs are assigned to the request tree
112        4/4                      assign req_tree[Pa]      = req_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
113                                 // we basically split the incoming request vector into two halves with the following
114                                 // priority assignment. the prio_mask_q register contains a prefix sum that has been
115                                 // computed using the last winning index, and hence masks out all requests at offsets
116                                 // lower or equal the previously granted index. hence, all higher indices are considered
117                                 // first in the arbitration tree nodes below, before considering the lower indices.
118        4/4                      assign prio_tree[Pa]     = req_i[offset] & prio_mask_q[offset];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
119                                 // input for the index muxes (used to compute the winner index)
120                                 assign idx_tree[Pa]      = offset;
121                                 // input for the data muxes
122        0/4     ==>              assign data_tree[Pa]     = data_i[offset];
123                     
124                                 // backward path (grants and prefix sum)
125                                 // grant if selected, ready and request asserted
126        4/4                      assign gnt_o[offset]       = req_i[offset] & sel_tree[Pa] & ready_i;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
127                                 // only update mask if there is a valid request
128        4/4                      assign prio_mask_d[offset] = (|req_i) ?
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
129                                                              mask_tree[Pa] | sel_tree[Pa] & ~ready_i :
130                                                              prio_mask_q[offset];
131                               end else begin : gen_tie_off
132                                 // forward path
133                                 assign req_tree[Pa]  = '0;
134                                 assign prio_tree[Pa] = '0;
135                                 assign idx_tree[Pa]  = '0;
136                                 assign data_tree[Pa] = '0;
137                                 logic unused_sigs;
138                                 assign unused_sigs = ^{mask_tree[Pa],
139                                                        sel_tree[Pa]};
140                               end
141                             // this creates the node assignments
142                             end else begin : gen_nodes
143                               // local helper variable
144                               logic sel;
145                     
146                               // forward path (requests and data)
147                               // each node looks at its two children, and selects the one with higher priority
148        3/3                    assign sel = ~req_tree[C0] | ~prio_tree[C0] & prio_tree[C1];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
149                               // propagate requests
150        3/3                    assign req_tree[Pa]  = req_tree[C0] | req_tree[C1];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
151        3/3                    assign prio_tree[Pa] = prio_tree[C1] | prio_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
152                               // data and index muxes
153                               // Note: these ternaries have triggered a synthesis bug in Vivado versions older
154                               // than 2020.2. If the problem resurfaces again, have a look at issue #1408.
155        3/3                    assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
156        3/3                    assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
157                     
158                               // backward path (grants and prefix sum)
159                               // this propagates the selction index back and computes a hot one mask
160        3/3                    assign sel_tree[C0] = sel_tree[Pa] & ~sel;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
161        3/3                    assign sel_tree[C1] = sel_tree[Pa] &  sel;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
162                               // this performs a prefix sum for masking the input requests in the next cycle
163        1/1(2 unreachable)            assign mask_tree[C0] = mask_tree[Pa];
           Tests:       T1 T2 T3 
164        3/3                    assign mask_tree[C1] = mask_tree[Pa] | sel_tree[C0];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
165                             end
166                           end : gen_level
167                         end : gen_tree
168                     
169                         // the results can be found at the tree root
170                         if (EnDataPort) begin : gen_data_port
171                           assign data_o      = data_tree[0];
172                         end else begin : gen_no_dataport
173                           logic [DW-1:0] unused_data;
174        1/1                assign unused_data = data_tree[0];
           Tests:       T1 T2 T3 
175                           assign data_o = '1;
176                         end
177                     
178                         // This index is unused.
179                         logic unused_prio_tree;
180        1/1              assign unused_prio_tree = prio_tree[0];
           Tests:       T1 T2 T3 
181                     
182        1/1              assign idx_o       = idx_tree[0];
           Tests:       T1 T2 T3 
183        1/1              assign valid_o     = req_tree[0];
           Tests:       T1 T2 T3 
184                     
185                         // the select tree computes a hot one signal that indicates which request is currently selected
186                         assign sel_tree[0] = 1'b1;
187                         // the mask tree is basically a prefix sum of the hot one select signal computed above
188                         assign mask_tree[0] = 1'b0;
189                     
190                         always_ff @(posedge clk_i or negedge rst_ni) begin : p_mask_reg
191        1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
192        1/1                  prio_mask_q <= '0;
           Tests:       T1 T2 T3 
193                           end else begin
194        1/1                  prio_mask_q <= prio_mask_d;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[1].u_core.u_rd.u_valid_random
 | Total | Covered | Percent | 
| Conditions | 130 | 127 | 97.69 | 
| Logical | 130 | 127 | 97.69 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       118
 EXPRESSION (req_i[0] & gen_normal_case.prio_mask_q[0])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T11,T18,T12 | 
| 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       118
 EXPRESSION (req_i[1] & gen_normal_case.prio_mask_q[1])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T11,T18,T12 | 
| 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       118
 EXPRESSION (req_i[2] & gen_normal_case.prio_mask_q[2])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T11,T18,T12 | 
| 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       118
 EXPRESSION (req_i[3] & gen_normal_case.prio_mask_q[3])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T54,T199,T200 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       126
 EXPRESSION (req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | 1 | Covered | T3,T11,T17 | 
 LINE       126
 EXPRESSION (req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | 1 | Covered | T3,T11,T17 | 
 LINE       126
 EXPRESSION (req_i[2] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | 1 | Covered | T3,T11,T17 | 
 LINE       126
 EXPRESSION (req_i[3] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | 1 | Covered | T3,T11,T17 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T3,T11,T17 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T3,T11,T17 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Unreachable |  | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[1])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T3,T11,T17 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T3,T11,T17 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[2])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T3,T11,T17 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T3,T11,T17 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[2].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[3])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T3,T11,T17 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T3,T11,T17 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[3].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T3,T11,T17 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T3,T11,T17 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T3,T11,T17 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T46,T47,T53 | 
| 1 | 0 | Covered | T46,T47,T53 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[1].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[1].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T46,T47,T53 | 
| 1 | 0 | Covered | T3,T11,T17 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T12,T45,T46 | 
| 1 | 0 | Covered | T3,T11,T17 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T3,T11,T17 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T3,T11,T17 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[1].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
| -1- | Status | Tests | 
| 0 | Covered | T3,T11,T17 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T3,T11,T17 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T3,T11,T17 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[1].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
| -1- | Status | Tests | 
| 0 | Covered | T3,T11,T17 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | Covered | T3,T11,T17 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & gen_normal_case.gen_tree[1].gen_level[1].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T12,T45,T27 | 
| 1 | 0 | Covered | T3,T11,T17 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Unreachable |  | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Unreachable |  | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T3,T11,T17 | 
| 1 | 0 | Covered | T3,T11,T17 | 
Branch Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[1].u_core.u_rd.u_valid_random
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
22 | 
22 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| IF | 
191 | 
2 | 
2 | 
100.00 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T3,T11,T17 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T3,T11,T17 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T3,T11,T17 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T3,T11,T17 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T3,T11,T17 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T3,T11,T17 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T3,T11,T17 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T3,T11,T17 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T3,T11,T17 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T3,T11,T17 | 
| 0 | 
Covered | 
T1,T2,T3 | 
191              if (!rst_ni) begin
                 -1-  
192                prio_mask_q <= '0;
                   ==>
193              end else begin
194                prio_mask_q <= prio_mask_d;
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_eflash.gen_flash_cores[1].u_core.u_rd.u_valid_random
Assertion Details
CheckHotOne_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1043 | 
1043 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
GntImpliesReady_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2271372 | 
0 | 
0 | 
| T3 | 
14578 | 
329 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
0 | 
0 | 
0 | 
| T11 | 
6395 | 
39 | 
0 | 
0 | 
| T12 | 
0 | 
10249 | 
0 | 
0 | 
| T16 | 
72468 | 
0 | 
0 | 
0 | 
| T17 | 
1512 | 
12 | 
0 | 
0 | 
| T18 | 
87009 | 
416 | 
0 | 
0 | 
| T19 | 
64646 | 
20 | 
0 | 
0 | 
| T26 | 
0 | 
56 | 
0 | 
0 | 
| T28 | 
0 | 
35 | 
0 | 
0 | 
| T45 | 
0 | 
197 | 
0 | 
0 | 
| T58 | 
2208 | 
0 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
70 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2271372 | 
0 | 
0 | 
| T3 | 
14578 | 
329 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
0 | 
0 | 
0 | 
| T11 | 
6395 | 
39 | 
0 | 
0 | 
| T12 | 
0 | 
10249 | 
0 | 
0 | 
| T16 | 
72468 | 
0 | 
0 | 
0 | 
| T17 | 
1512 | 
12 | 
0 | 
0 | 
| T18 | 
87009 | 
416 | 
0 | 
0 | 
| T19 | 
64646 | 
20 | 
0 | 
0 | 
| T26 | 
0 | 
56 | 
0 | 
0 | 
| T28 | 
0 | 
35 | 
0 | 
0 | 
| T45 | 
0 | 
197 | 
0 | 
0 | 
| T58 | 
2208 | 
0 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
70 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2271372 | 
0 | 
0 | 
| T3 | 
14578 | 
329 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
0 | 
0 | 
0 | 
| T11 | 
6395 | 
39 | 
0 | 
0 | 
| T12 | 
0 | 
10249 | 
0 | 
0 | 
| T16 | 
72468 | 
0 | 
0 | 
0 | 
| T17 | 
1512 | 
12 | 
0 | 
0 | 
| T18 | 
87009 | 
416 | 
0 | 
0 | 
| T19 | 
64646 | 
20 | 
0 | 
0 | 
| T26 | 
0 | 
56 | 
0 | 
0 | 
| T28 | 
0 | 
35 | 
0 | 
0 | 
| T45 | 
0 | 
197 | 
0 | 
0 | 
| T58 | 
2208 | 
0 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
70 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
0 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
287823188 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
1314 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
2957 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
487 | 
0 | 
0 | 
| T18 | 
87009 | 
12878 | 
0 | 
0 | 
| T19 | 
64646 | 
9927 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2271372 | 
0 | 
0 | 
| T3 | 
14578 | 
329 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
0 | 
0 | 
0 | 
| T11 | 
6395 | 
39 | 
0 | 
0 | 
| T12 | 
0 | 
10249 | 
0 | 
0 | 
| T16 | 
72468 | 
0 | 
0 | 
0 | 
| T17 | 
1512 | 
12 | 
0 | 
0 | 
| T18 | 
87009 | 
416 | 
0 | 
0 | 
| T19 | 
64646 | 
20 | 
0 | 
0 | 
| T26 | 
0 | 
56 | 
0 | 
0 | 
| T28 | 
0 | 
35 | 
0 | 
0 | 
| T45 | 
0 | 
197 | 
0 | 
0 | 
| T58 | 
2208 | 
0 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
70 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
2271372 | 
0 | 
0 | 
| T3 | 
14578 | 
329 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
0 | 
0 | 
0 | 
| T11 | 
6395 | 
39 | 
0 | 
0 | 
| T12 | 
0 | 
10249 | 
0 | 
0 | 
| T16 | 
72468 | 
0 | 
0 | 
0 | 
| T17 | 
1512 | 
12 | 
0 | 
0 | 
| T18 | 
87009 | 
416 | 
0 | 
0 | 
| T19 | 
64646 | 
20 | 
0 | 
0 | 
| T26 | 
0 | 
56 | 
0 | 
0 | 
| T28 | 
0 | 
35 | 
0 | 
0 | 
| T45 | 
0 | 
197 | 
0 | 
0 | 
| T58 | 
2208 | 
0 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
70 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
100882357 | 
0 | 
0 | 
| T3 | 
14578 | 
13190 | 
0 | 
0 | 
| T4 | 
3493 | 
0 | 
0 | 
0 | 
| T10 | 
333723 | 
0 | 
0 | 
0 | 
| T11 | 
6395 | 
3367 | 
0 | 
0 | 
| T12 | 
0 | 
50563 | 
0 | 
0 | 
| T16 | 
72468 | 
0 | 
0 | 
0 | 
| T17 | 
1512 | 
963 | 
0 | 
0 | 
| T18 | 
87009 | 
73906 | 
0 | 
0 | 
| T19 | 
64646 | 
54550 | 
0 | 
0 | 
| T26 | 
0 | 
138086 | 
0 | 
0 | 
| T28 | 
0 | 
6365 | 
0 | 
0 | 
| T45 | 
0 | 
54962 | 
0 | 
0 | 
| T58 | 
2208 | 
0 | 
0 | 
0 | 
| T59 | 
3851 | 
0 | 
0 | 
0 | 
| T64 | 
0 | 
1058 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
0 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
0 | 
0 | 
1040 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_op.gen_input_bufs[0].gen_rr_arbiter.u_arb
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 25 | 25 | 100.00 | 
| CONT_ASSIGN | 62 | 0 | 0 |  | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 0 | 0 |  | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 171 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 182 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| ALWAYS | 191 | 3 | 3 | 100.00 | 
61                        logic unused_req_chk;
62         unreachable    assign unused_req_chk = req_chk_i;
63                      
64                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
65                      
66                        // this case is basically just a bypass
67                        if (N == 1) begin : gen_degenerate_case
68                      
69                          assign valid_o  = req_i[0];
70                          assign data_o   = data_i[0];
71                          assign gnt_o[0] = valid_o & ready_i;
72                          assign idx_o    = '0;
73                      
74                        end else begin : gen_normal_case
75                      
76                          // align to powers of 2 for simplicity
77                          // a full binary tree with N levels has 2**N + 2**N-1 nodes
78                          logic [2**(IdxW+1)-2:0]           req_tree;
79                          logic [2**(IdxW+1)-2:0]           prio_tree;
80                          logic [2**(IdxW+1)-2:0]           sel_tree;
81                          logic [2**(IdxW+1)-2:0]           mask_tree;
82                          logic [2**(IdxW+1)-2:0][IdxW-1:0] idx_tree;
83                          logic [2**(IdxW+1)-2:0][DW-1:0]   data_tree;
84                          logic [N-1:0]                     prio_mask_d, prio_mask_q;
85                      
86                          for (genvar level = 0; level < IdxW+1; level++) begin : gen_tree
87                            //
88                            // level+1   C0   C1   <- "Base1" points to the first node on "level+1",
89                            //            \  /         these nodes are the children of the nodes one level below
90                            // level       Pa      <- "Base0", points to the first node on "level",
91                            //                         these nodes are the parents of the nodes one level above
92                            //
93                            // hence we have the following indices for the Pa, C0, C1 nodes:
94                            // Pa = 2**level     - 1 + offset       = Base0 + offset
95                            // C0 = 2**(level+1) - 1 + 2*offset     = Base1 + 2*offset
96                            // C1 = 2**(level+1) - 1 + 2*offset + 1 = Base1 + 2*offset + 1
97                            //
98                            localparam int Base0 = (2**level)-1;
99                            localparam int Base1 = (2**(level+1))-1;
100                     
101                           for (genvar offset = 0; offset < 2**level; offset++) begin : gen_level
102                             localparam int Pa = Base0 + offset;
103                             localparam int C0 = Base1 + 2*offset;
104                             localparam int C1 = Base1 + 2*offset + 1;
105                     
106                             // this assigns the gated interrupt source signals, their
107                             // corresponding IDs and priorities to the tree leafs
108                             if (level == IdxW) begin : gen_leafs
109                               if (offset < N) begin : gen_assign
110                                 // forward path (requests and data)
111                                 // all requests inputs are assigned to the request tree
112        2/2                      assign req_tree[Pa]      = req_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
113                                 // we basically split the incoming request vector into two halves with the following
114                                 // priority assignment. the prio_mask_q register contains a prefix sum that has been
115                                 // computed using the last winning index, and hence masks out all requests at offsets
116                                 // lower or equal the previously granted index. hence, all higher indices are considered
117                                 // first in the arbitration tree nodes below, before considering the lower indices.
118        2/2                      assign prio_tree[Pa]     = req_i[offset] & prio_mask_q[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
119                                 // input for the index muxes (used to compute the winner index)
120                                 assign idx_tree[Pa]      = offset;
121                                 // input for the data muxes
122        2/2                      assign data_tree[Pa]     = data_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
123                     
124                                 // backward path (grants and prefix sum)
125                                 // grant if selected, ready and request asserted
126        2/2                      assign gnt_o[offset]       = req_i[offset] & sel_tree[Pa] & ready_i;
           Tests:       T1 T2 T3  | T1 T2 T3 
127                                 // only update mask if there is a valid request
128        2/2                      assign prio_mask_d[offset] = (|req_i) ?
           Tests:       T1 T2 T3  | T1 T2 T3 
129                                                              mask_tree[Pa] | sel_tree[Pa] & ~ready_i :
130                                                              prio_mask_q[offset];
131                               end else begin : gen_tie_off
132                                 // forward path
133                                 assign req_tree[Pa]  = '0;
134                                 assign prio_tree[Pa] = '0;
135                                 assign idx_tree[Pa]  = '0;
136                                 assign data_tree[Pa] = '0;
137                                 logic unused_sigs;
138                                 assign unused_sigs = ^{mask_tree[Pa],
139                                                        sel_tree[Pa]};
140                               end
141                             // this creates the node assignments
142                             end else begin : gen_nodes
143                               // local helper variable
144                               logic sel;
145                     
146                               // forward path (requests and data)
147                               // each node looks at its two children, and selects the one with higher priority
148        1/1                    assign sel = ~req_tree[C0] | ~prio_tree[C0] & prio_tree[C1];
           Tests:       T1 T2 T3 
149                               // propagate requests
150        1/1                    assign req_tree[Pa]  = req_tree[C0] | req_tree[C1];
           Tests:       T1 T2 T3 
151        1/1                    assign prio_tree[Pa] = prio_tree[C1] | prio_tree[C0];
           Tests:       T1 T2 T3 
152                               // data and index muxes
153                               // Note: these ternaries have triggered a synthesis bug in Vivado versions older
154                               // than 2020.2. If the problem resurfaces again, have a look at issue #1408.
155        1/1                    assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
           Tests:       T1 T2 T3 
156        1/1                    assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
           Tests:       T1 T2 T3 
157                     
158                               // backward path (grants and prefix sum)
159                               // this propagates the selction index back and computes a hot one mask
160        1/1                    assign sel_tree[C0] = sel_tree[Pa] & ~sel;
           Tests:       T1 T2 T3 
161        1/1                    assign sel_tree[C1] = sel_tree[Pa] &  sel;
           Tests:       T1 T2 T3 
162                               // this performs a prefix sum for masking the input requests in the next cycle
163        unreachable            assign mask_tree[C0] = mask_tree[Pa];
164        1/1                    assign mask_tree[C1] = mask_tree[Pa] | sel_tree[C0];
           Tests:       T1 T2 T3 
165                             end
166                           end : gen_level
167                         end : gen_tree
168                     
169                         // the results can be found at the tree root
170                         if (EnDataPort) begin : gen_data_port
171        1/1                assign data_o      = data_tree[0];
           Tests:       T1 T2 T3 
172                         end else begin : gen_no_dataport
173                           logic [DW-1:0] unused_data;
174                           assign unused_data = data_tree[0];
175                           assign data_o = '1;
176                         end
177                     
178                         // This index is unused.
179                         logic unused_prio_tree;
180        1/1              assign unused_prio_tree = prio_tree[0];
           Tests:       T1 T2 T3 
181                     
182        1/1              assign idx_o       = idx_tree[0];
           Tests:       T1 T2 T3 
183        1/1              assign valid_o     = req_tree[0];
           Tests:       T1 T2 T3 
184                     
185                         // the select tree computes a hot one signal that indicates which request is currently selected
186                         assign sel_tree[0] = 1'b1;
187                         // the mask tree is basically a prefix sum of the hot one select signal computed above
188                         assign mask_tree[0] = 1'b0;
189                     
190                         always_ff @(posedge clk_i or negedge rst_ni) begin : p_mask_reg
191        1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
192        1/1                  prio_mask_q <= '0;
           Tests:       T1 T2 T3 
193                           end else begin
194        1/1                  prio_mask_q <= prio_mask_d;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_op.gen_input_bufs[0].gen_rr_arbiter.u_arb
 | Total | Covered | Percent | 
| Conditions | 51 | 45 | 88.24 | 
| Logical | 51 | 45 | 88.24 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       118
 EXPRESSION (req_i[0] & gen_normal_case.prio_mask_q[0])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[1] & gen_normal_case.prio_mask_q[1])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T26,T45 | 
| 1 | 1 | Covered | T67,T26,T45 | 
 LINE       126
 EXPRESSION (req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Not Covered |  | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       126
 EXPRESSION (req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Covered | T99 | 
| 1 | 0 | 1 | Not Covered |  | 
| 1 | 1 | 0 | Covered | T67,T26,T45 | 
| 1 | 1 | 1 | Covered | T67,T26,T45 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T67,T26,T45 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[1])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T67,T26,T45 | 
| 0 | 1 | Covered | T67,T26,T45 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T26,T45 | 
| 1 | 1 | Covered | T67,T26,T45 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T67,T26,T45 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T67,T26,T45 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T26,T45 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
Branch Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_op.gen_input_bufs[0].gen_rr_arbiter.u_arb
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
10 | 
10 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| IF | 
191 | 
2 | 
2 | 
100.00 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
191              if (!rst_ni) begin
                 -1-  
192                prio_mask_q <= '0;
                   ==>
193              end else begin
194                prio_mask_q <= prio_mask_d;
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_op.gen_input_bufs[0].gen_rr_arbiter.u_arb
Assertion Details
CheckHotOne_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1043 | 
1043 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
GntImpliesReady_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777218 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777218 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777218 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250790 | 
15777218 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
361824595 | 
0 | 
0 | 
| T1 | 
1194 | 
1041 | 
0 | 
0 | 
| T2 | 
2508 | 
2388 | 
0 | 
0 | 
| T3 | 
14578 | 
14444 | 
0 | 
0 | 
| T4 | 
3493 | 
2483 | 
0 | 
0 | 
| T10 | 
333723 | 
305211 | 
0 | 
0 | 
| T11 | 
6395 | 
6276 | 
0 | 
0 | 
| T16 | 
72468 | 
72317 | 
0 | 
0 | 
| T17 | 
1512 | 
1390 | 
0 | 
0 | 
| T18 | 
87009 | 
86836 | 
0 | 
0 | 
| T19 | 
64646 | 
64417 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777218 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777218 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
31554444 | 
0 | 
0 | 
| T1 | 
1194 | 
64 | 
0 | 
0 | 
| T2 | 
2508 | 
64 | 
0 | 
0 | 
| T3 | 
14578 | 
64 | 
0 | 
0 | 
| T4 | 
3493 | 
280 | 
0 | 
0 | 
| T10 | 
333723 | 
16248 | 
0 | 
0 | 
| T11 | 
6395 | 
64 | 
0 | 
0 | 
| T16 | 
72468 | 
64 | 
0 | 
0 | 
| T17 | 
1512 | 
64 | 
0 | 
0 | 
| T18 | 
87009 | 
112 | 
0 | 
0 | 
| T19 | 
64646 | 
64 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394208270 | 
15777095 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
0 | 
0 | 
1040 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777218 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_calc.gen_input_bufs[1].gen_rr_arbiter.u_arb
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 23 | 23 | 100.00 | 
| CONT_ASSIGN | 62 | 0 | 0 |  | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 0 | 0 |  | 
| CONT_ASSIGN | 126 | 0 | 0 |  | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 0 | 0 |  | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 171 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 182 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| ALWAYS | 191 | 3 | 3 | 100.00 | 
61                        logic unused_req_chk;
62         unreachable    assign unused_req_chk = req_chk_i;
63                      
64                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
65                      
66                        // this case is basically just a bypass
67                        if (N == 1) begin : gen_degenerate_case
68                      
69                          assign valid_o  = req_i[0];
70                          assign data_o   = data_i[0];
71                          assign gnt_o[0] = valid_o & ready_i;
72                          assign idx_o    = '0;
73                      
74                        end else begin : gen_normal_case
75                      
76                          // align to powers of 2 for simplicity
77                          // a full binary tree with N levels has 2**N + 2**N-1 nodes
78                          logic [2**(IdxW+1)-2:0]           req_tree;
79                          logic [2**(IdxW+1)-2:0]           prio_tree;
80                          logic [2**(IdxW+1)-2:0]           sel_tree;
81                          logic [2**(IdxW+1)-2:0]           mask_tree;
82                          logic [2**(IdxW+1)-2:0][IdxW-1:0] idx_tree;
83                          logic [2**(IdxW+1)-2:0][DW-1:0]   data_tree;
84                          logic [N-1:0]                     prio_mask_d, prio_mask_q;
85                      
86                          for (genvar level = 0; level < IdxW+1; level++) begin : gen_tree
87                            //
88                            // level+1   C0   C1   <- "Base1" points to the first node on "level+1",
89                            //            \  /         these nodes are the children of the nodes one level below
90                            // level       Pa      <- "Base0", points to the first node on "level",
91                            //                         these nodes are the parents of the nodes one level above
92                            //
93                            // hence we have the following indices for the Pa, C0, C1 nodes:
94                            // Pa = 2**level     - 1 + offset       = Base0 + offset
95                            // C0 = 2**(level+1) - 1 + 2*offset     = Base1 + 2*offset
96                            // C1 = 2**(level+1) - 1 + 2*offset + 1 = Base1 + 2*offset + 1
97                            //
98                            localparam int Base0 = (2**level)-1;
99                            localparam int Base1 = (2**(level+1))-1;
100                     
101                           for (genvar offset = 0; offset < 2**level; offset++) begin : gen_level
102                             localparam int Pa = Base0 + offset;
103                             localparam int C0 = Base1 + 2*offset;
104                             localparam int C1 = Base1 + 2*offset + 1;
105                     
106                             // this assigns the gated interrupt source signals, their
107                             // corresponding IDs and priorities to the tree leafs
108                             if (level == IdxW) begin : gen_leafs
109                               if (offset < N) begin : gen_assign
110                                 // forward path (requests and data)
111                                 // all requests inputs are assigned to the request tree
112        2/2                      assign req_tree[Pa]      = req_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
113                                 // we basically split the incoming request vector into two halves with the following
114                                 // priority assignment. the prio_mask_q register contains a prefix sum that has been
115                                 // computed using the last winning index, and hence masks out all requests at offsets
116                                 // lower or equal the previously granted index. hence, all higher indices are considered
117                                 // first in the arbitration tree nodes below, before considering the lower indices.
118        2/2                      assign prio_tree[Pa]     = req_i[offset] & prio_mask_q[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
119                                 // input for the index muxes (used to compute the winner index)
120                                 assign idx_tree[Pa]      = offset;
121                                 // input for the data muxes
122        2/2                      assign data_tree[Pa]     = data_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
123                     
124                                 // backward path (grants and prefix sum)
125                                 // grant if selected, ready and request asserted
126        unreachable              assign gnt_o[offset]       = req_i[offset] & sel_tree[Pa] & ready_i;
127                                 // only update mask if there is a valid request
128        2/2                      assign prio_mask_d[offset] = (|req_i) ?
           Tests:       T1 T2 T3  | T1 T2 T3 
129                                                              mask_tree[Pa] | sel_tree[Pa] & ~ready_i :
130                                                              prio_mask_q[offset];
131                               end else begin : gen_tie_off
132                                 // forward path
133                                 assign req_tree[Pa]  = '0;
134                                 assign prio_tree[Pa] = '0;
135                                 assign idx_tree[Pa]  = '0;
136                                 assign data_tree[Pa] = '0;
137                                 logic unused_sigs;
138                                 assign unused_sigs = ^{mask_tree[Pa],
139                                                        sel_tree[Pa]};
140                               end
141                             // this creates the node assignments
142                             end else begin : gen_nodes
143                               // local helper variable
144                               logic sel;
145                     
146                               // forward path (requests and data)
147                               // each node looks at its two children, and selects the one with higher priority
148        1/1                    assign sel = ~req_tree[C0] | ~prio_tree[C0] & prio_tree[C1];
           Tests:       T1 T2 T3 
149                               // propagate requests
150        1/1                    assign req_tree[Pa]  = req_tree[C0] | req_tree[C1];
           Tests:       T1 T2 T3 
151        1/1                    assign prio_tree[Pa] = prio_tree[C1] | prio_tree[C0];
           Tests:       T1 T2 T3 
152                               // data and index muxes
153                               // Note: these ternaries have triggered a synthesis bug in Vivado versions older
154                               // than 2020.2. If the problem resurfaces again, have a look at issue #1408.
155        1/1                    assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
           Tests:       T1 T2 T3 
156        1/1                    assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
           Tests:       T1 T2 T3 
157                     
158                               // backward path (grants and prefix sum)
159                               // this propagates the selction index back and computes a hot one mask
160        1/1                    assign sel_tree[C0] = sel_tree[Pa] & ~sel;
           Tests:       T1 T2 T3 
161        1/1                    assign sel_tree[C1] = sel_tree[Pa] &  sel;
           Tests:       T1 T2 T3 
162                               // this performs a prefix sum for masking the input requests in the next cycle
163        unreachable            assign mask_tree[C0] = mask_tree[Pa];
164        1/1                    assign mask_tree[C1] = mask_tree[Pa] | sel_tree[C0];
           Tests:       T1 T2 T3 
165                             end
166                           end : gen_level
167                         end : gen_tree
168                     
169                         // the results can be found at the tree root
170                         if (EnDataPort) begin : gen_data_port
171        1/1                assign data_o      = data_tree[0];
           Tests:       T1 T2 T3 
172                         end else begin : gen_no_dataport
173                           logic [DW-1:0] unused_data;
174                           assign unused_data = data_tree[0];
175                           assign data_o = '1;
176                         end
177                     
178                         // This index is unused.
179                         logic unused_prio_tree;
180        1/1              assign unused_prio_tree = prio_tree[0];
           Tests:       T1 T2 T3 
181                     
182        1/1              assign idx_o       = idx_tree[0];
           Tests:       T1 T2 T3 
183        1/1              assign valid_o     = req_tree[0];
           Tests:       T1 T2 T3 
184                     
185                         // the select tree computes a hot one signal that indicates which request is currently selected
186                         assign sel_tree[0] = 1'b1;
187                         // the mask tree is basically a prefix sum of the hot one select signal computed above
188                         assign mask_tree[0] = 1'b0;
189                     
190                         always_ff @(posedge clk_i or negedge rst_ni) begin : p_mask_reg
191        1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
192        1/1                  prio_mask_q <= '0;
           Tests:       T1 T2 T3 
193                           end else begin
194        1/1                  prio_mask_q <= prio_mask_d;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_calc.gen_input_bufs[1].gen_rr_arbiter.u_arb
 | Total | Covered | Percent | 
| Conditions | 43 | 42 | 97.67 | 
| Logical | 43 | 42 | 97.67 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       118
 EXPRESSION (req_i[0] & gen_normal_case.prio_mask_q[0])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[1] & gen_normal_case.prio_mask_q[1])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T12,T26 | 
| 1 | 1 | Covered | T67,T12,T26 | 
 LINE       126
 EXPRESSION (req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Unreachable |  | 
| 1 | 0 | 1 | Unreachable | T12,T46,T47 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Unreachable | T1,T2,T3 | 
 LINE       126
 EXPRESSION (req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Unreachable |  | 
| 1 | 0 | 1 | Unreachable | T12,T46,T47 | 
| 1 | 1 | 0 | Covered | T67,T12,T26 | 
| 1 | 1 | 1 | Unreachable | T67,T12,T26 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T67,T12,T26 | 
| 1 | 0 | Unreachable | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[1])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T67,T12,T26 | 
| 0 | 1 | Covered | T67,T12,T26 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable | T67,T12,T26 | 
| 1 | 1 | Covered | T67,T12,T26 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T12,T46,T47 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T12,T46,T47 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T67,T12,T26 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T67,T12,T26 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T12,T26 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
Branch Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_calc.gen_input_bufs[1].gen_rr_arbiter.u_arb
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
10 | 
10 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| IF | 
191 | 
2 | 
2 | 
100.00 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
191              if (!rst_ni) begin
                 -1-  
192                prio_mask_q <= '0;
                   ==>
193              end else begin
194                prio_mask_q <= prio_mask_d;
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_calc.gen_input_bufs[1].gen_rr_arbiter.u_arb
Assertion Details
CheckHotOne_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1043 | 
1043 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
GntImpliesReady_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478899 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478899 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478899 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394212854 | 
17478685 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
358421262 | 
0 | 
0 | 
| T1 | 
1194 | 
1041 | 
0 | 
0 | 
| T2 | 
2508 | 
2388 | 
0 | 
0 | 
| T3 | 
14578 | 
14444 | 
0 | 
0 | 
| T4 | 
3493 | 
2483 | 
0 | 
0 | 
| T10 | 
333723 | 
305211 | 
0 | 
0 | 
| T11 | 
6395 | 
6276 | 
0 | 
0 | 
| T16 | 
72468 | 
72317 | 
0 | 
0 | 
| T17 | 
1512 | 
1390 | 
0 | 
0 | 
| T18 | 
87009 | 
86812 | 
0 | 
0 | 
| T19 | 
64646 | 
64417 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478899 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478899 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
34957811 | 
0 | 
0 | 
| T1 | 
1194 | 
64 | 
0 | 
0 | 
| T2 | 
2508 | 
64 | 
0 | 
0 | 
| T3 | 
14578 | 
64 | 
0 | 
0 | 
| T4 | 
3493 | 
280 | 
0 | 
0 | 
| T10 | 
333723 | 
16248 | 
0 | 
0 | 
| T11 | 
6395 | 
64 | 
0 | 
0 | 
| T16 | 
72468 | 
64 | 
0 | 
0 | 
| T17 | 
1512 | 
64 | 
0 | 
0 | 
| T18 | 
87009 | 
136 | 
0 | 
0 | 
| T19 | 
64646 | 
64 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394098396 | 
17478162 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
0 | 
0 | 
1040 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478899 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_op.gen_input_bufs[1].gen_rr_arbiter.u_arb
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 25 | 25 | 100.00 | 
| CONT_ASSIGN | 62 | 0 | 0 |  | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 0 | 0 |  | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 171 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 182 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| ALWAYS | 191 | 3 | 3 | 100.00 | 
61                        logic unused_req_chk;
62         unreachable    assign unused_req_chk = req_chk_i;
63                      
64                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
65                      
66                        // this case is basically just a bypass
67                        if (N == 1) begin : gen_degenerate_case
68                      
69                          assign valid_o  = req_i[0];
70                          assign data_o   = data_i[0];
71                          assign gnt_o[0] = valid_o & ready_i;
72                          assign idx_o    = '0;
73                      
74                        end else begin : gen_normal_case
75                      
76                          // align to powers of 2 for simplicity
77                          // a full binary tree with N levels has 2**N + 2**N-1 nodes
78                          logic [2**(IdxW+1)-2:0]           req_tree;
79                          logic [2**(IdxW+1)-2:0]           prio_tree;
80                          logic [2**(IdxW+1)-2:0]           sel_tree;
81                          logic [2**(IdxW+1)-2:0]           mask_tree;
82                          logic [2**(IdxW+1)-2:0][IdxW-1:0] idx_tree;
83                          logic [2**(IdxW+1)-2:0][DW-1:0]   data_tree;
84                          logic [N-1:0]                     prio_mask_d, prio_mask_q;
85                      
86                          for (genvar level = 0; level < IdxW+1; level++) begin : gen_tree
87                            //
88                            // level+1   C0   C1   <- "Base1" points to the first node on "level+1",
89                            //            \  /         these nodes are the children of the nodes one level below
90                            // level       Pa      <- "Base0", points to the first node on "level",
91                            //                         these nodes are the parents of the nodes one level above
92                            //
93                            // hence we have the following indices for the Pa, C0, C1 nodes:
94                            // Pa = 2**level     - 1 + offset       = Base0 + offset
95                            // C0 = 2**(level+1) - 1 + 2*offset     = Base1 + 2*offset
96                            // C1 = 2**(level+1) - 1 + 2*offset + 1 = Base1 + 2*offset + 1
97                            //
98                            localparam int Base0 = (2**level)-1;
99                            localparam int Base1 = (2**(level+1))-1;
100                     
101                           for (genvar offset = 0; offset < 2**level; offset++) begin : gen_level
102                             localparam int Pa = Base0 + offset;
103                             localparam int C0 = Base1 + 2*offset;
104                             localparam int C1 = Base1 + 2*offset + 1;
105                     
106                             // this assigns the gated interrupt source signals, their
107                             // corresponding IDs and priorities to the tree leafs
108                             if (level == IdxW) begin : gen_leafs
109                               if (offset < N) begin : gen_assign
110                                 // forward path (requests and data)
111                                 // all requests inputs are assigned to the request tree
112        2/2                      assign req_tree[Pa]      = req_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
113                                 // we basically split the incoming request vector into two halves with the following
114                                 // priority assignment. the prio_mask_q register contains a prefix sum that has been
115                                 // computed using the last winning index, and hence masks out all requests at offsets
116                                 // lower or equal the previously granted index. hence, all higher indices are considered
117                                 // first in the arbitration tree nodes below, before considering the lower indices.
118        2/2                      assign prio_tree[Pa]     = req_i[offset] & prio_mask_q[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
119                                 // input for the index muxes (used to compute the winner index)
120                                 assign idx_tree[Pa]      = offset;
121                                 // input for the data muxes
122        2/2                      assign data_tree[Pa]     = data_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
123                     
124                                 // backward path (grants and prefix sum)
125                                 // grant if selected, ready and request asserted
126        2/2                      assign gnt_o[offset]       = req_i[offset] & sel_tree[Pa] & ready_i;
           Tests:       T1 T2 T3  | T1 T2 T3 
127                                 // only update mask if there is a valid request
128        2/2                      assign prio_mask_d[offset] = (|req_i) ?
           Tests:       T1 T2 T3  | T1 T2 T3 
129                                                              mask_tree[Pa] | sel_tree[Pa] & ~ready_i :
130                                                              prio_mask_q[offset];
131                               end else begin : gen_tie_off
132                                 // forward path
133                                 assign req_tree[Pa]  = '0;
134                                 assign prio_tree[Pa] = '0;
135                                 assign idx_tree[Pa]  = '0;
136                                 assign data_tree[Pa] = '0;
137                                 logic unused_sigs;
138                                 assign unused_sigs = ^{mask_tree[Pa],
139                                                        sel_tree[Pa]};
140                               end
141                             // this creates the node assignments
142                             end else begin : gen_nodes
143                               // local helper variable
144                               logic sel;
145                     
146                               // forward path (requests and data)
147                               // each node looks at its two children, and selects the one with higher priority
148        1/1                    assign sel = ~req_tree[C0] | ~prio_tree[C0] & prio_tree[C1];
           Tests:       T1 T2 T3 
149                               // propagate requests
150        1/1                    assign req_tree[Pa]  = req_tree[C0] | req_tree[C1];
           Tests:       T1 T2 T3 
151        1/1                    assign prio_tree[Pa] = prio_tree[C1] | prio_tree[C0];
           Tests:       T1 T2 T3 
152                               // data and index muxes
153                               // Note: these ternaries have triggered a synthesis bug in Vivado versions older
154                               // than 2020.2. If the problem resurfaces again, have a look at issue #1408.
155        1/1                    assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
           Tests:       T1 T2 T3 
156        1/1                    assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
           Tests:       T1 T2 T3 
157                     
158                               // backward path (grants and prefix sum)
159                               // this propagates the selction index back and computes a hot one mask
160        1/1                    assign sel_tree[C0] = sel_tree[Pa] & ~sel;
           Tests:       T1 T2 T3 
161        1/1                    assign sel_tree[C1] = sel_tree[Pa] &  sel;
           Tests:       T1 T2 T3 
162                               // this performs a prefix sum for masking the input requests in the next cycle
163        unreachable            assign mask_tree[C0] = mask_tree[Pa];
164        1/1                    assign mask_tree[C1] = mask_tree[Pa] | sel_tree[C0];
           Tests:       T1 T2 T3 
165                             end
166                           end : gen_level
167                         end : gen_tree
168                     
169                         // the results can be found at the tree root
170                         if (EnDataPort) begin : gen_data_port
171        1/1                assign data_o      = data_tree[0];
           Tests:       T1 T2 T3 
172                         end else begin : gen_no_dataport
173                           logic [DW-1:0] unused_data;
174                           assign unused_data = data_tree[0];
175                           assign data_o = '1;
176                         end
177                     
178                         // This index is unused.
179                         logic unused_prio_tree;
180        1/1              assign unused_prio_tree = prio_tree[0];
           Tests:       T1 T2 T3 
181                     
182        1/1              assign idx_o       = idx_tree[0];
           Tests:       T1 T2 T3 
183        1/1              assign valid_o     = req_tree[0];
           Tests:       T1 T2 T3 
184                     
185                         // the select tree computes a hot one signal that indicates which request is currently selected
186                         assign sel_tree[0] = 1'b1;
187                         // the mask tree is basically a prefix sum of the hot one select signal computed above
188                         assign mask_tree[0] = 1'b0;
189                     
190                         always_ff @(posedge clk_i or negedge rst_ni) begin : p_mask_reg
191        1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
192        1/1                  prio_mask_q <= '0;
           Tests:       T1 T2 T3 
193                           end else begin
194        1/1                  prio_mask_q <= prio_mask_d;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_op.gen_input_bufs[1].gen_rr_arbiter.u_arb
 | Total | Covered | Percent | 
| Conditions | 51 | 50 | 98.04 | 
| Logical | 51 | 50 | 98.04 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       118
 EXPRESSION (req_i[0] & gen_normal_case.prio_mask_q[0])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T99 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[1] & gen_normal_case.prio_mask_q[1])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T26,T45 | 
| 1 | 1 | Covered | T67,T26,T45 | 
 LINE       126
 EXPRESSION (req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Not Covered |  | 
| 1 | 0 | 1 | Covered | T99 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       126
 EXPRESSION (req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Covered | T99 | 
| 1 | 0 | 1 | Covered | T99 | 
| 1 | 1 | 0 | Covered | T67,T26,T45 | 
| 1 | 1 | 1 | Covered | T67,T26,T45 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T67,T26,T45 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[1])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T67,T26,T45 | 
| 0 | 1 | Covered | T67,T26,T45 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T26,T45 | 
| 1 | 1 | Covered | T67,T26,T45 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T99 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T99 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T67,T26,T45 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T67,T26,T45 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T26,T45 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
Branch Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_op.gen_input_bufs[1].gen_rr_arbiter.u_arb
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
10 | 
10 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| IF | 
191 | 
2 | 
2 | 
100.00 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
191              if (!rst_ni) begin
                 -1-  
192                prio_mask_q <= '0;
                   ==>
193              end else begin
194                prio_mask_q <= prio_mask_d;
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_op.gen_input_bufs[1].gen_rr_arbiter.u_arb
Assertion Details
CheckHotOne_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1043 | 
1043 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
GntImpliesReady_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777251 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777251 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777251 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250790 | 
15777218 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
361824562 | 
0 | 
0 | 
| T1 | 
1194 | 
1041 | 
0 | 
0 | 
| T2 | 
2508 | 
2388 | 
0 | 
0 | 
| T3 | 
14578 | 
14444 | 
0 | 
0 | 
| T4 | 
3493 | 
2483 | 
0 | 
0 | 
| T10 | 
333723 | 
305211 | 
0 | 
0 | 
| T11 | 
6395 | 
6276 | 
0 | 
0 | 
| T16 | 
72468 | 
72317 | 
0 | 
0 | 
| T17 | 
1512 | 
1390 | 
0 | 
0 | 
| T18 | 
87009 | 
86836 | 
0 | 
0 | 
| T19 | 
64646 | 
64417 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777251 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777251 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
31554510 | 
0 | 
0 | 
| T1 | 
1194 | 
64 | 
0 | 
0 | 
| T2 | 
2508 | 
64 | 
0 | 
0 | 
| T3 | 
14578 | 
64 | 
0 | 
0 | 
| T4 | 
3493 | 
280 | 
0 | 
0 | 
| T10 | 
333723 | 
16248 | 
0 | 
0 | 
| T11 | 
6395 | 
64 | 
0 | 
0 | 
| T16 | 
72468 | 
64 | 
0 | 
0 | 
| T17 | 
1512 | 
64 | 
0 | 
0 | 
| T18 | 
87009 | 
112 | 
0 | 
0 | 
| T19 | 
64646 | 
64 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394208270 | 
15777095 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
0 | 
0 | 
1040 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
15777251 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
56 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_calc.gen_input_bufs[0].gen_rr_arbiter.u_arb
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 23 | 23 | 100.00 | 
| CONT_ASSIGN | 62 | 0 | 0 |  | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 112 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 118 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 122 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 126 | 0 | 0 |  | 
| CONT_ASSIGN | 126 | 0 | 0 |  | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 128 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 148 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 150 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 151 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 155 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 156 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 160 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 161 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 0 | 0 |  | 
| CONT_ASSIGN | 164 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 171 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 180 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 182 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 183 | 1 | 1 | 100.00 | 
| ALWAYS | 191 | 3 | 3 | 100.00 | 
61                        logic unused_req_chk;
62         unreachable    assign unused_req_chk = req_chk_i;
63                      
64                        `ASSERT_INIT(CheckNGreaterZero_A, N > 0)
65                      
66                        // this case is basically just a bypass
67                        if (N == 1) begin : gen_degenerate_case
68                      
69                          assign valid_o  = req_i[0];
70                          assign data_o   = data_i[0];
71                          assign gnt_o[0] = valid_o & ready_i;
72                          assign idx_o    = '0;
73                      
74                        end else begin : gen_normal_case
75                      
76                          // align to powers of 2 for simplicity
77                          // a full binary tree with N levels has 2**N + 2**N-1 nodes
78                          logic [2**(IdxW+1)-2:0]           req_tree;
79                          logic [2**(IdxW+1)-2:0]           prio_tree;
80                          logic [2**(IdxW+1)-2:0]           sel_tree;
81                          logic [2**(IdxW+1)-2:0]           mask_tree;
82                          logic [2**(IdxW+1)-2:0][IdxW-1:0] idx_tree;
83                          logic [2**(IdxW+1)-2:0][DW-1:0]   data_tree;
84                          logic [N-1:0]                     prio_mask_d, prio_mask_q;
85                      
86                          for (genvar level = 0; level < IdxW+1; level++) begin : gen_tree
87                            //
88                            // level+1   C0   C1   <- "Base1" points to the first node on "level+1",
89                            //            \  /         these nodes are the children of the nodes one level below
90                            // level       Pa      <- "Base0", points to the first node on "level",
91                            //                         these nodes are the parents of the nodes one level above
92                            //
93                            // hence we have the following indices for the Pa, C0, C1 nodes:
94                            // Pa = 2**level     - 1 + offset       = Base0 + offset
95                            // C0 = 2**(level+1) - 1 + 2*offset     = Base1 + 2*offset
96                            // C1 = 2**(level+1) - 1 + 2*offset + 1 = Base1 + 2*offset + 1
97                            //
98                            localparam int Base0 = (2**level)-1;
99                            localparam int Base1 = (2**(level+1))-1;
100                     
101                           for (genvar offset = 0; offset < 2**level; offset++) begin : gen_level
102                             localparam int Pa = Base0 + offset;
103                             localparam int C0 = Base1 + 2*offset;
104                             localparam int C1 = Base1 + 2*offset + 1;
105                     
106                             // this assigns the gated interrupt source signals, their
107                             // corresponding IDs and priorities to the tree leafs
108                             if (level == IdxW) begin : gen_leafs
109                               if (offset < N) begin : gen_assign
110                                 // forward path (requests and data)
111                                 // all requests inputs are assigned to the request tree
112        2/2                      assign req_tree[Pa]      = req_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
113                                 // we basically split the incoming request vector into two halves with the following
114                                 // priority assignment. the prio_mask_q register contains a prefix sum that has been
115                                 // computed using the last winning index, and hence masks out all requests at offsets
116                                 // lower or equal the previously granted index. hence, all higher indices are considered
117                                 // first in the arbitration tree nodes below, before considering the lower indices.
118        2/2                      assign prio_tree[Pa]     = req_i[offset] & prio_mask_q[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
119                                 // input for the index muxes (used to compute the winner index)
120                                 assign idx_tree[Pa]      = offset;
121                                 // input for the data muxes
122        2/2                      assign data_tree[Pa]     = data_i[offset];
           Tests:       T1 T2 T3  | T1 T2 T3 
123                     
124                                 // backward path (grants and prefix sum)
125                                 // grant if selected, ready and request asserted
126        unreachable              assign gnt_o[offset]       = req_i[offset] & sel_tree[Pa] & ready_i;
127                                 // only update mask if there is a valid request
128        2/2                      assign prio_mask_d[offset] = (|req_i) ?
           Tests:       T1 T2 T3  | T1 T2 T3 
129                                                              mask_tree[Pa] | sel_tree[Pa] & ~ready_i :
130                                                              prio_mask_q[offset];
131                               end else begin : gen_tie_off
132                                 // forward path
133                                 assign req_tree[Pa]  = '0;
134                                 assign prio_tree[Pa] = '0;
135                                 assign idx_tree[Pa]  = '0;
136                                 assign data_tree[Pa] = '0;
137                                 logic unused_sigs;
138                                 assign unused_sigs = ^{mask_tree[Pa],
139                                                        sel_tree[Pa]};
140                               end
141                             // this creates the node assignments
142                             end else begin : gen_nodes
143                               // local helper variable
144                               logic sel;
145                     
146                               // forward path (requests and data)
147                               // each node looks at its two children, and selects the one with higher priority
148        1/1                    assign sel = ~req_tree[C0] | ~prio_tree[C0] & prio_tree[C1];
           Tests:       T1 T2 T3 
149                               // propagate requests
150        1/1                    assign req_tree[Pa]  = req_tree[C0] | req_tree[C1];
           Tests:       T1 T2 T3 
151        1/1                    assign prio_tree[Pa] = prio_tree[C1] | prio_tree[C0];
           Tests:       T1 T2 T3 
152                               // data and index muxes
153                               // Note: these ternaries have triggered a synthesis bug in Vivado versions older
154                               // than 2020.2. If the problem resurfaces again, have a look at issue #1408.
155        1/1                    assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
           Tests:       T1 T2 T3 
156        1/1                    assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
           Tests:       T1 T2 T3 
157                     
158                               // backward path (grants and prefix sum)
159                               // this propagates the selction index back and computes a hot one mask
160        1/1                    assign sel_tree[C0] = sel_tree[Pa] & ~sel;
           Tests:       T1 T2 T3 
161        1/1                    assign sel_tree[C1] = sel_tree[Pa] &  sel;
           Tests:       T1 T2 T3 
162                               // this performs a prefix sum for masking the input requests in the next cycle
163        unreachable            assign mask_tree[C0] = mask_tree[Pa];
164        1/1                    assign mask_tree[C1] = mask_tree[Pa] | sel_tree[C0];
           Tests:       T1 T2 T3 
165                             end
166                           end : gen_level
167                         end : gen_tree
168                     
169                         // the results can be found at the tree root
170                         if (EnDataPort) begin : gen_data_port
171        1/1                assign data_o      = data_tree[0];
           Tests:       T1 T2 T3 
172                         end else begin : gen_no_dataport
173                           logic [DW-1:0] unused_data;
174                           assign unused_data = data_tree[0];
175                           assign data_o = '1;
176                         end
177                     
178                         // This index is unused.
179                         logic unused_prio_tree;
180        1/1              assign unused_prio_tree = prio_tree[0];
           Tests:       T1 T2 T3 
181                     
182        1/1              assign idx_o       = idx_tree[0];
           Tests:       T1 T2 T3 
183        1/1              assign valid_o     = req_tree[0];
           Tests:       T1 T2 T3 
184                     
185                         // the select tree computes a hot one signal that indicates which request is currently selected
186                         assign sel_tree[0] = 1'b1;
187                         // the mask tree is basically a prefix sum of the hot one select signal computed above
188                         assign mask_tree[0] = 1'b0;
189                     
190                         always_ff @(posedge clk_i or negedge rst_ni) begin : p_mask_reg
191        1/1                if (!rst_ni) begin
           Tests:       T1 T2 T3 
192        1/1                  prio_mask_q <= '0;
           Tests:       T1 T2 T3 
193                           end else begin
194        1/1                  prio_mask_q <= prio_mask_d;
           Tests:       T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_calc.gen_input_bufs[0].gen_rr_arbiter.u_arb
 | Total | Covered | Percent | 
| Conditions | 43 | 43 | 100.00 | 
| Logical | 43 | 43 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       118
 EXPRESSION (req_i[0] & gen_normal_case.prio_mask_q[0])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T198 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       118
 EXPRESSION (req_i[1] & gen_normal_case.prio_mask_q[1])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T12,T26 | 
| 1 | 1 | Covered | T67,T12,T26 | 
 LINE       126
 EXPRESSION (req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Unreachable |  | 
| 1 | 0 | 1 | Unreachable | T12,T46,T47 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Unreachable | T1,T2,T3 | 
 LINE       126
 EXPRESSION (req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ready_i)
             ----1---   ----------------------------------2----------------------------------   ---3---
| -1- | -2- | -3- | Status | Tests | 
| 0 | 1 | 1 | Unreachable | T97,T198 | 
| 1 | 0 | 1 | Unreachable | T12,T46,T47 | 
| 1 | 1 | 0 | Covered | T67,T12,T26 | 
| 1 | 1 | 1 | Unreachable | T67,T12,T26 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T67,T12,T26 | 
| 1 | 0 | Unreachable | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       128
 EXPRESSION 
 Number  Term
      1  ((|req_i)) ? (gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))) : gen_normal_case.prio_mask_q[1])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION 
 Number  Term
      1  gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] | 
      2  (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i))))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T67,T12,T26 | 
| 0 | 1 | Covered | T67,T12,T26 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       128
 SUB-EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[1].Pa] & ((~ready_i)))
                 ----------------------------------1----------------------------------   ------2-----
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable | T67,T12,T26 | 
| 1 | 1 | Covered | T67,T12,T26 | 
 LINE       148
 EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) | 
      2  (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1]))
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T12,T46,T47 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       148
 SUB-EXPRESSION 
 Number  Term
      1  ((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])) & 
      2  gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T12,T46,T47 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T67,T12,T26 | 
 LINE       150
 EXPRESSION (gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C1])
             ----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T67,T12,T26 | 
| 1 | 0 | Covered | T1,T2,T3 | 
 LINE       151
 EXPRESSION (gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   -----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T67,T12,T26 | 
 LINE       155
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       156
 EXPRESSION 
 Number  Term
      1  gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
| -1- | Status | Tests | 
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       160
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)))
             ----------------------------------1----------------------------------   -----------------------------2-----------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       161
 EXPRESSION (gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] & gen_normal_case.gen_tree[0].gen_level[0].gen_nodes.sel)
             ----------------------------------1----------------------------------   ---------------------------2--------------------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Unreachable |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       164
 EXPRESSION (gen_normal_case.mask_tree[gen_normal_case.gen_tree[0].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[0].gen_level[0].C0])
             -----------------------------------1----------------------------------   ----------------------------------2----------------------------------
| -1- | -2- | Status | Tests | 
| 0 | 0 | Covered | T1,T2,T3 | 
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Unreachable |  | 
Branch Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_calc.gen_input_bufs[0].gen_rr_arbiter.u_arb
 | Line No. | Total | Covered | Percent | 
| Branches | 
 | 
10 | 
10 | 
100.00 | 
| TERNARY | 
155 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
156 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| TERNARY | 
128 | 
2 | 
2 | 
100.00 | 
| IF | 
191 | 
2 | 
2 | 
100.00 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
191              if (!rst_ni) begin
                 -1-  
192                prio_mask_q <= '0;
                   ==>
193              end else begin
194                prio_mask_q <= prio_mask_d;
                   ==>
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_eflash.u_scramble.u_prim_arbiter_tree_calc.gen_input_bufs[0].gen_rr_arbiter.u_arb
Assertion Details
CheckHotOne_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1043 | 
1043 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T16 | 
1 | 
1 | 
0 | 
0 | 
| T17 | 
1 | 
1 | 
0 | 
0 | 
| T18 | 
1 | 
1 | 
0 | 
0 | 
| T19 | 
1 | 
1 | 
0 | 
0 | 
GntImpliesReady_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478814 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478814 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478814 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394212854 | 
17478685 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
358421264 | 
0 | 
0 | 
| T1 | 
1194 | 
1041 | 
0 | 
0 | 
| T2 | 
2508 | 
2388 | 
0 | 
0 | 
| T3 | 
14578 | 
14444 | 
0 | 
0 | 
| T4 | 
3493 | 
2483 | 
0 | 
0 | 
| T10 | 
333723 | 
305211 | 
0 | 
0 | 
| T11 | 
6395 | 
6276 | 
0 | 
0 | 
| T16 | 
72468 | 
72317 | 
0 | 
0 | 
| T17 | 
1512 | 
1390 | 
0 | 
0 | 
| T18 | 
87009 | 
86812 | 
0 | 
0 | 
| T19 | 
64646 | 
64417 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478814 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478814 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
34957724 | 
0 | 
0 | 
| T1 | 
1194 | 
64 | 
0 | 
0 | 
| T2 | 
2508 | 
64 | 
0 | 
0 | 
| T3 | 
14578 | 
64 | 
0 | 
0 | 
| T4 | 
3493 | 
280 | 
0 | 
0 | 
| T10 | 
333723 | 
16248 | 
0 | 
0 | 
| T11 | 
6395 | 
64 | 
0 | 
0 | 
| T16 | 
72468 | 
64 | 
0 | 
0 | 
| T17 | 
1512 | 
64 | 
0 | 
0 | 
| T18 | 
87009 | 
136 | 
0 | 
0 | 
| T19 | 
64646 | 
64 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394098396 | 
17478162 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
0 | 
0 | 
1040 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
393379073 | 
0 | 
0 | 
| T1 | 
1194 | 
1105 | 
0 | 
0 | 
| T2 | 
2508 | 
2452 | 
0 | 
0 | 
| T3 | 
14578 | 
14508 | 
0 | 
0 | 
| T4 | 
3493 | 
2763 | 
0 | 
0 | 
| T10 | 
333723 | 
321459 | 
0 | 
0 | 
| T11 | 
6395 | 
6340 | 
0 | 
0 | 
| T16 | 
72468 | 
72381 | 
0 | 
0 | 
| T17 | 
1512 | 
1454 | 
0 | 
0 | 
| T18 | 
87009 | 
86948 | 
0 | 
0 | 
| T19 | 
64646 | 
64481 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
394250859 | 
17478814 | 
0 | 
0 | 
| T1 | 
1194 | 
32 | 
0 | 
0 | 
| T2 | 
2508 | 
32 | 
0 | 
0 | 
| T3 | 
14578 | 
32 | 
0 | 
0 | 
| T4 | 
3493 | 
140 | 
0 | 
0 | 
| T10 | 
333723 | 
8124 | 
0 | 
0 | 
| T11 | 
6395 | 
32 | 
0 | 
0 | 
| T16 | 
72468 | 
32 | 
0 | 
0 | 
| T17 | 
1512 | 
32 | 
0 | 
0 | 
| T18 | 
87009 | 
68 | 
0 | 
0 | 
| T19 | 
64646 | 
32 | 
0 | 
0 |