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 | T94,T95 | 
| 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 | T66,T71,T13 | 
| 1 | 1 | Covered | T66,T71,T13 | 
 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 | T13,T49,T50 | 
| 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 | T94,T95 | 
| 1 | 0 | 1 | Unreachable | T13,T49,T50 | 
| 1 | 1 | 0 | Covered | T66,T71,T13 | 
| 1 | 1 | 1 | Unreachable | T66,T71,T13 | 
 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 | T66,T71,T13 | 
| 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 | T66,T71,T13 | 
| 0 | 1 | Covered | T66,T71,T13 | 
| 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 | T66,T71,T13 | 
| 1 | 1 | Covered | T66,T71,T13 | 
 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 | T13,T49,T50 | 
| 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 | T13,T49,T50 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T66,T71,T13 | 
 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 | T66,T71,T13 | 
| 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 | T66,T71,T13 | 
 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 | 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 | T66,T71,T49 | 
| 1 | 1 | Covered | T66,T71,T49 | 
 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 | Not Covered |  | 
| 1 | 0 | 1 | Not Covered |  | 
| 1 | 1 | 0 | Covered | T66,T71,T49 | 
| 1 | 1 | 1 | Covered | T66,T71,T49 | 
 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 | T66,T71,T49 | 
| 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 | T66,T71,T49 | 
| 0 | 1 | Covered | T66,T71,T49 | 
| 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 | T66,T71,T49 | 
| 1 | 1 | Covered | T66,T71,T49 | 
 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 | T96 | 
| 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 | T66,T71,T49 | 
 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 | T66,T71,T49 | 
| 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 | T66,T71,T49 | 
 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 | T9,T18,T19 | 
| 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,T9,T18 | 
| 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,T9,T18 | 
| 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 | T61,T62,T156 | 
| 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,T9 | 
| 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,T9 | 
 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,T9 | 
| 1 | 1 | 1 | Covered | T3,T9,T12 | 
 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,T9,T12 | 
| 1 | 1 | 1 | Covered | T3,T9,T12 | 
 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,T9 | 
| 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,T9 | 
| 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,T9,T12 | 
| 0 | 1 | Covered | T2,T3,T9 | 
| 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,T9,T12 | 
| 1 | 1 | Covered | T2,T3,T9 | 
 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,T9,T12 | 
| 0 | 1 | Covered | T3,T9,T12 | 
| 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,T9,T12 | 
| 1 | 1 | Covered | T3,T9,T12 | 
 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,T9 | 
| 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,T9 | 
 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,T9,T12 | 
| 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,T9,T12 | 
 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 | T49,T50,T61 | 
| 1 | 0 | Covered | T49,T50,T61 | 
 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,T9 | 
 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,T9,T12 | 
| 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 | T49,T50,T61 | 
| 1 | 0 | Covered | T2,T3,T9 | 
 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 | T13,T49,T50 | 
| 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,T9,T12 | 
 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,T9 | 
| 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,T9 | 
 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 | T13,T49,T50 | 
| 1 | 0 | Covered | T2,T3,T9 | 
| 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,T9 | 
| 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 | 
6006 | 
5700 | 
0 | 
0 | 
| T2 | 
10488 | 
10068 | 
0 | 
0 | 
| T3 | 
9330 | 
8916 | 
0 | 
0 | 
| T4 | 
21714 | 
17574 | 
0 | 
0 | 
| T9 | 
750024 | 
723138 | 
0 | 
0 | 
| T10 | 
24228 | 
23634 | 
0 | 
0 | 
| T12 | 
50304 | 
49812 | 
0 | 
0 | 
| T17 | 
10548 | 
10026 | 
0 | 
0 | 
| T18 | 
29100 | 
28584 | 
0 | 
0 | 
| T19 | 
14280 | 
13848 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
6348 | 
6348 | 
0 | 
0 | 
| T1 | 
6 | 
6 | 
0 | 
0 | 
| T2 | 
6 | 
6 | 
0 | 
0 | 
| T3 | 
6 | 
6 | 
0 | 
0 | 
| T4 | 
6 | 
6 | 
0 | 
0 | 
| T9 | 
6 | 
6 | 
0 | 
0 | 
| T10 | 
6 | 
6 | 
0 | 
0 | 
| T12 | 
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 | 
69355722 | 
0 | 
0 | 
| T1 | 
5005 | 
129 | 
0 | 
0 | 
| T2 | 
8740 | 
130 | 
0 | 
0 | 
| T3 | 
7775 | 
141 | 
0 | 
0 | 
| T4 | 
21714 | 
648 | 
0 | 
0 | 
| T9 | 
625020 | 
12600 | 
0 | 
0 | 
| T10 | 
24228 | 
128 | 
0 | 
0 | 
| T11 | 
95004 | 
34 | 
0 | 
0 | 
| T12 | 
50304 | 
509 | 
0 | 
0 | 
| T13 | 
0 | 
19341 | 
0 | 
0 | 
| T17 | 
10548 | 
129 | 
0 | 
0 | 
| T18 | 
29100 | 
194 | 
0 | 
0 | 
| T19 | 
14280 | 
178 | 
0 | 
0 | 
| T32 | 
88093 | 
860 | 
0 | 
0 | 
| T48 | 
0 | 
428 | 
0 | 
0 | 
| T49 | 
0 | 
9803 | 
0 | 
0 | 
| T66 | 
2074 | 
69 | 
0 | 
0 | 
| T70 | 
0 | 
754 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
69355722 | 
0 | 
0 | 
| T1 | 
5005 | 
129 | 
0 | 
0 | 
| T2 | 
8740 | 
130 | 
0 | 
0 | 
| T3 | 
7775 | 
141 | 
0 | 
0 | 
| T4 | 
21714 | 
648 | 
0 | 
0 | 
| T9 | 
625020 | 
12600 | 
0 | 
0 | 
| T10 | 
24228 | 
128 | 
0 | 
0 | 
| T11 | 
95004 | 
34 | 
0 | 
0 | 
| T12 | 
50304 | 
509 | 
0 | 
0 | 
| T13 | 
0 | 
19341 | 
0 | 
0 | 
| T17 | 
10548 | 
129 | 
0 | 
0 | 
| T18 | 
29100 | 
194 | 
0 | 
0 | 
| T19 | 
14280 | 
178 | 
0 | 
0 | 
| T32 | 
88093 | 
860 | 
0 | 
0 | 
| T48 | 
0 | 
428 | 
0 | 
0 | 
| T49 | 
0 | 
9803 | 
0 | 
0 | 
| T66 | 
2074 | 
69 | 
0 | 
0 | 
| T70 | 
0 | 
754 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
2147483647 | 
0 | 
0 | 
| T1 | 
6006 | 
5700 | 
0 | 
0 | 
| T2 | 
10488 | 
10068 | 
0 | 
0 | 
| T3 | 
9330 | 
8916 | 
0 | 
0 | 
| T4 | 
21714 | 
17574 | 
0 | 
0 | 
| T9 | 
750024 | 
723138 | 
0 | 
0 | 
| T10 | 
24228 | 
23634 | 
0 | 
0 | 
| T12 | 
50304 | 
49812 | 
0 | 
0 | 
| T17 | 
10548 | 
10026 | 
0 | 
0 | 
| T18 | 
29100 | 
28584 | 
0 | 
0 | 
| T19 | 
14280 | 
13848 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
2147483647 | 
0 | 
0 | 
| T1 | 
6006 | 
5700 | 
0 | 
0 | 
| T2 | 
10488 | 
10068 | 
0 | 
0 | 
| T3 | 
9330 | 
8916 | 
0 | 
0 | 
| T4 | 
21714 | 
17574 | 
0 | 
0 | 
| T9 | 
750024 | 
723138 | 
0 | 
0 | 
| T10 | 
24228 | 
23634 | 
0 | 
0 | 
| T12 | 
50304 | 
49812 | 
0 | 
0 | 
| T17 | 
10548 | 
10026 | 
0 | 
0 | 
| T18 | 
29100 | 
28584 | 
0 | 
0 | 
| T19 | 
14280 | 
13848 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
69355722 | 
0 | 
0 | 
| T1 | 
5005 | 
129 | 
0 | 
0 | 
| T2 | 
8740 | 
130 | 
0 | 
0 | 
| T3 | 
7775 | 
141 | 
0 | 
0 | 
| T4 | 
21714 | 
648 | 
0 | 
0 | 
| T9 | 
625020 | 
12600 | 
0 | 
0 | 
| T10 | 
24228 | 
128 | 
0 | 
0 | 
| T11 | 
95004 | 
34 | 
0 | 
0 | 
| T12 | 
50304 | 
509 | 
0 | 
0 | 
| T13 | 
0 | 
19341 | 
0 | 
0 | 
| T17 | 
10548 | 
129 | 
0 | 
0 | 
| T18 | 
29100 | 
194 | 
0 | 
0 | 
| T19 | 
14280 | 
178 | 
0 | 
0 | 
| T32 | 
88093 | 
860 | 
0 | 
0 | 
| T48 | 
0 | 
428 | 
0 | 
0 | 
| T49 | 
0 | 
9803 | 
0 | 
0 | 
| T66 | 
2074 | 
69 | 
0 | 
0 | 
| T70 | 
0 | 
754 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
64384290 | 
0 | 
0 | 
| T1 | 
4004 | 
128 | 
0 | 
0 | 
| T2 | 
6992 | 
128 | 
0 | 
0 | 
| T3 | 
6220 | 
128 | 
0 | 
0 | 
| T4 | 
14476 | 
648 | 
0 | 
0 | 
| T9 | 
500016 | 
12288 | 
0 | 
0 | 
| T10 | 
16152 | 
128 | 
0 | 
0 | 
| T12 | 
33536 | 
128 | 
0 | 
0 | 
| T17 | 
7032 | 
128 | 
0 | 
0 | 
| T18 | 
19400 | 
128 | 
0 | 
0 | 
| T19 | 
9520 | 
128 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
1864244616 | 
0 | 
0 | 
| T1 | 
6006 | 
4785 | 
0 | 
0 | 
| T2 | 
10488 | 
9021 | 
0 | 
0 | 
| T3 | 
9330 | 
7831 | 
0 | 
0 | 
| T4 | 
21714 | 
16116 | 
0 | 
0 | 
| T9 | 
750024 | 
642988 | 
0 | 
0 | 
| T10 | 
24228 | 
23346 | 
0 | 
0 | 
| T12 | 
50304 | 
33988 | 
0 | 
0 | 
| T17 | 
10548 | 
8269 | 
0 | 
0 | 
| T18 | 
29100 | 
26492 | 
0 | 
0 | 
| T19 | 
14280 | 
11809 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
69355722 | 
0 | 
0 | 
| T1 | 
5005 | 
129 | 
0 | 
0 | 
| T2 | 
8740 | 
130 | 
0 | 
0 | 
| T3 | 
7775 | 
141 | 
0 | 
0 | 
| T4 | 
21714 | 
648 | 
0 | 
0 | 
| T9 | 
625020 | 
12600 | 
0 | 
0 | 
| T10 | 
24228 | 
128 | 
0 | 
0 | 
| T11 | 
95004 | 
34 | 
0 | 
0 | 
| T12 | 
50304 | 
509 | 
0 | 
0 | 
| T13 | 
0 | 
19341 | 
0 | 
0 | 
| T17 | 
10548 | 
129 | 
0 | 
0 | 
| T18 | 
29100 | 
194 | 
0 | 
0 | 
| T19 | 
14280 | 
178 | 
0 | 
0 | 
| T32 | 
88093 | 
860 | 
0 | 
0 | 
| T48 | 
0 | 
428 | 
0 | 
0 | 
| T49 | 
0 | 
9803 | 
0 | 
0 | 
| T66 | 
2074 | 
69 | 
0 | 
0 | 
| T70 | 
0 | 
754 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
69355722 | 
0 | 
0 | 
| T1 | 
5005 | 
129 | 
0 | 
0 | 
| T2 | 
8740 | 
130 | 
0 | 
0 | 
| T3 | 
7775 | 
141 | 
0 | 
0 | 
| T4 | 
21714 | 
648 | 
0 | 
0 | 
| T9 | 
625020 | 
12600 | 
0 | 
0 | 
| T10 | 
24228 | 
128 | 
0 | 
0 | 
| T11 | 
95004 | 
34 | 
0 | 
0 | 
| T12 | 
50304 | 
509 | 
0 | 
0 | 
| T13 | 
0 | 
19341 | 
0 | 
0 | 
| T17 | 
10548 | 
129 | 
0 | 
0 | 
| T18 | 
29100 | 
194 | 
0 | 
0 | 
| T19 | 
14280 | 
178 | 
0 | 
0 | 
| T32 | 
88093 | 
860 | 
0 | 
0 | 
| T48 | 
0 | 
428 | 
0 | 
0 | 
| T49 | 
0 | 
9803 | 
0 | 
0 | 
| T66 | 
2074 | 
69 | 
0 | 
0 | 
| T70 | 
0 | 
754 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
317276988 | 
0 | 
0 | 
| T1 | 
5005 | 
879 | 
0 | 
0 | 
| T2 | 
8740 | 
1007 | 
0 | 
0 | 
| T3 | 
7775 | 
1045 | 
0 | 
0 | 
| T4 | 
21714 | 
1296 | 
0 | 
0 | 
| T9 | 
625020 | 
77750 | 
0 | 
0 | 
| T10 | 
24228 | 
256 | 
0 | 
0 | 
| T11 | 
95004 | 
154770 | 
0 | 
0 | 
| T12 | 
50304 | 
15784 | 
0 | 
0 | 
| T13 | 
0 | 
100115 | 
0 | 
0 | 
| T17 | 
10548 | 
1717 | 
0 | 
0 | 
| T18 | 
29100 | 
2024 | 
0 | 
0 | 
| T19 | 
14280 | 
2003 | 
0 | 
0 | 
| T32 | 
88093 | 
145342 | 
0 | 
0 | 
| T48 | 
0 | 
27583 | 
0 | 
0 | 
| T49 | 
0 | 
64553 | 
0 | 
0 | 
| T66 | 
2074 | 
1526 | 
0 | 
0 | 
| T70 | 
0 | 
62757 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
64383932 | 
0 | 
0 | 
| T1 | 
4004 | 
128 | 
0 | 
0 | 
| T2 | 
6992 | 
128 | 
0 | 
0 | 
| T3 | 
6220 | 
128 | 
0 | 
0 | 
| T4 | 
14476 | 
648 | 
0 | 
0 | 
| T9 | 
500016 | 
12288 | 
0 | 
0 | 
| T10 | 
16152 | 
128 | 
0 | 
0 | 
| T12 | 
33536 | 
128 | 
0 | 
0 | 
| T17 | 
7032 | 
128 | 
0 | 
0 | 
| T18 | 
19400 | 
128 | 
0 | 
0 | 
| T19 | 
9520 | 
128 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
0 | 
0 | 
6318 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
2147483647 | 
0 | 
0 | 
| T1 | 
6006 | 
5700 | 
0 | 
0 | 
| T2 | 
10488 | 
10068 | 
0 | 
0 | 
| T3 | 
9330 | 
8916 | 
0 | 
0 | 
| T4 | 
21714 | 
17574 | 
0 | 
0 | 
| T9 | 
750024 | 
723138 | 
0 | 
0 | 
| T10 | 
24228 | 
23634 | 
0 | 
0 | 
| T12 | 
50304 | 
49812 | 
0 | 
0 | 
| T17 | 
10548 | 
10026 | 
0 | 
0 | 
| T18 | 
29100 | 
28584 | 
0 | 
0 | 
| T19 | 
14280 | 
13848 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1463678040 | 
64384777 | 
0 | 
0 | 
| T1 | 
4004 | 
128 | 
0 | 
0 | 
| T2 | 
6992 | 
128 | 
0 | 
0 | 
| T3 | 
6220 | 
128 | 
0 | 
0 | 
| T4 | 
14476 | 
648 | 
0 | 
0 | 
| T9 | 
500016 | 
12288 | 
0 | 
0 | 
| T10 | 
16152 | 
128 | 
0 | 
0 | 
| T12 | 
33536 | 
128 | 
0 | 
0 | 
| T17 | 
7032 | 
128 | 
0 | 
0 | 
| T18 | 
19400 | 
128 | 
0 | 
0 | 
| T19 | 
9520 | 
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 | T9,T19,T32 | 
| 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,T9,T19 | 
| 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,T9,T19 | 
| 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 | T61,T62,T156 | 
| 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,T9 | 
| 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,T9 | 
 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,T9 | 
| 1 | 1 | 1 | Covered | T3,T9,T12 | 
 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,T9,T12 | 
| 1 | 1 | 1 | Covered | T3,T9,T12 | 
 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,T9 | 
| 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,T9 | 
| 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,T9,T12 | 
| 0 | 1 | Covered | T2,T3,T9 | 
| 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,T9,T12 | 
| 1 | 1 | Covered | T2,T3,T9 | 
 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,T9,T12 | 
| 0 | 1 | Covered | T3,T9,T12 | 
| 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,T9,T12 | 
| 1 | 1 | Covered | T3,T9,T12 | 
 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,T9 | 
| 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,T9 | 
 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,T9,T12 | 
| 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,T9,T12 | 
 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 | T49,T50,T61 | 
| 1 | 0 | Covered | T49,T50,T61 | 
 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,T9 | 
 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,T9,T12 | 
| 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 | T49,T50,T61 | 
| 1 | 0 | Covered | T2,T3,T9 | 
 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 | T13,T49,T50 | 
| 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,T9,T12 | 
 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,T9 | 
| 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,T9 | 
 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 | T13,T49,T50 | 
| 1 | 0 | Covered | T2,T3,T9 | 
| 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,T9 | 
| 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 | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1058 | 
1058 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
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 | 
365919510 | 
2492720 | 
0 | 
0 | 
| T1 | 
1001 | 
1 | 
0 | 
0 | 
| T2 | 
1748 | 
2 | 
0 | 
0 | 
| T3 | 
1555 | 
13 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T9 | 
125004 | 
312 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
0 | 
17 | 
0 | 
0 | 
| T12 | 
8384 | 
164 | 
0 | 
0 | 
| T13 | 
0 | 
9513 | 
0 | 
0 | 
| T17 | 
1758 | 
0 | 
0 | 
0 | 
| T18 | 
4850 | 
0 | 
0 | 
0 | 
| T19 | 
2380 | 
50 | 
0 | 
0 | 
| T32 | 
0 | 
370 | 
0 | 
0 | 
| T48 | 
0 | 
150 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
2492720 | 
0 | 
0 | 
| T1 | 
1001 | 
1 | 
0 | 
0 | 
| T2 | 
1748 | 
2 | 
0 | 
0 | 
| T3 | 
1555 | 
13 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T9 | 
125004 | 
312 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
0 | 
17 | 
0 | 
0 | 
| T12 | 
8384 | 
164 | 
0 | 
0 | 
| T13 | 
0 | 
9513 | 
0 | 
0 | 
| T17 | 
1758 | 
0 | 
0 | 
0 | 
| T18 | 
4850 | 
0 | 
0 | 
0 | 
| T19 | 
2380 | 
50 | 
0 | 
0 | 
| T32 | 
0 | 
370 | 
0 | 
0 | 
| T48 | 
0 | 
150 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
2492720 | 
0 | 
0 | 
| T1 | 
1001 | 
1 | 
0 | 
0 | 
| T2 | 
1748 | 
2 | 
0 | 
0 | 
| T3 | 
1555 | 
13 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T9 | 
125004 | 
312 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
0 | 
17 | 
0 | 
0 | 
| T12 | 
8384 | 
164 | 
0 | 
0 | 
| T13 | 
0 | 
9513 | 
0 | 
0 | 
| T17 | 
1758 | 
0 | 
0 | 
0 | 
| T18 | 
4850 | 
0 | 
0 | 
0 | 
| T19 | 
2380 | 
50 | 
0 | 
0 | 
| T32 | 
0 | 
370 | 
0 | 
0 | 
| T48 | 
0 | 
150 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
0 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
257600005 | 
0 | 
0 | 
| T1 | 
1001 | 
291 | 
0 | 
0 | 
| T2 | 
1748 | 
887 | 
0 | 
0 | 
| T3 | 
1555 | 
657 | 
0 | 
0 | 
| T4 | 
3619 | 
2767 | 
0 | 
0 | 
| T9 | 
125004 | 
64949 | 
0 | 
0 | 
| T10 | 
4038 | 
3907 | 
0 | 
0 | 
| T12 | 
8384 | 
379 | 
0 | 
0 | 
| T17 | 
1758 | 
986 | 
0 | 
0 | 
| T18 | 
4850 | 
4732 | 
0 | 
0 | 
| T19 | 
2380 | 
525 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
2492720 | 
0 | 
0 | 
| T1 | 
1001 | 
1 | 
0 | 
0 | 
| T2 | 
1748 | 
2 | 
0 | 
0 | 
| T3 | 
1555 | 
13 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T9 | 
125004 | 
312 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
0 | 
17 | 
0 | 
0 | 
| T12 | 
8384 | 
164 | 
0 | 
0 | 
| T13 | 
0 | 
9513 | 
0 | 
0 | 
| T17 | 
1758 | 
0 | 
0 | 
0 | 
| T18 | 
4850 | 
0 | 
0 | 
0 | 
| T19 | 
2380 | 
50 | 
0 | 
0 | 
| T32 | 
0 | 
370 | 
0 | 
0 | 
| T48 | 
0 | 
150 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
2492720 | 
0 | 
0 | 
| T1 | 
1001 | 
1 | 
0 | 
0 | 
| T2 | 
1748 | 
2 | 
0 | 
0 | 
| T3 | 
1555 | 
13 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T9 | 
125004 | 
312 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
0 | 
17 | 
0 | 
0 | 
| T12 | 
8384 | 
164 | 
0 | 
0 | 
| T13 | 
0 | 
9513 | 
0 | 
0 | 
| T17 | 
1758 | 
0 | 
0 | 
0 | 
| T18 | 
4850 | 
0 | 
0 | 
0 | 
| T19 | 
2380 | 
50 | 
0 | 
0 | 
| T32 | 
0 | 
370 | 
0 | 
0 | 
| T48 | 
0 | 
150 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
102479973 | 
0 | 
0 | 
| T1 | 
1001 | 
623 | 
0 | 
0 | 
| T2 | 
1748 | 
751 | 
0 | 
0 | 
| T3 | 
1555 | 
789 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T9 | 
125004 | 
53174 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
0 | 
84597 | 
0 | 
0 | 
| T12 | 
8384 | 
7887 | 
0 | 
0 | 
| T13 | 
0 | 
50054 | 
0 | 
0 | 
| T17 | 
1758 | 
649 | 
0 | 
0 | 
| T18 | 
4850 | 
0 | 
0 | 
0 | 
| T19 | 
2380 | 
1747 | 
0 | 
0 | 
| T32 | 
0 | 
72140 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
0 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
0 | 
0 | 
1053 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
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 | T18,T32,T13 | 
| 1 | 0 | Covered | T17,T12,T18 | 
| 1 | 1 | Covered | T17,T12,T18 | 
 LINE       118
 EXPRESSION (req_i[1] & gen_normal_case.prio_mask_q[1])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T18,T32,T13 | 
| 1 | 0 | Covered | T17,T12,T18 | 
| 1 | 1 | Covered | T17,T12,T18 | 
 LINE       118
 EXPRESSION (req_i[2] & gen_normal_case.prio_mask_q[2])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T18,T32,T13 | 
| 1 | 0 | Covered | T17,T12,T18 | 
| 1 | 1 | Covered | T17,T12,T18 | 
 LINE       118
 EXPRESSION (req_i[3] & gen_normal_case.prio_mask_q[3])
             ----1---   ---------------2--------------
| -1- | -2- | Status | Tests | 
| 0 | 1 | Covered | T17,T12,T18 | 
| 1 | 0 | Covered | T61,T62,T156 | 
| 1 | 1 | Covered | T17,T12,T18 | 
 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 | T12,T18,T32 | 
| 1 | 1 | 0 | Covered | T17,T12,T18 | 
| 1 | 1 | 1 | Covered | T17,T12,T18 | 
 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 | T17,T12,T18 | 
| 1 | 1 | 0 | Covered | T17,T12,T18 | 
| 1 | 1 | 1 | Covered | T12,T18,T32 | 
 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 | T17,T12,T18 | 
| 1 | 1 | 0 | Covered | T12,T18,T32 | 
| 1 | 1 | 1 | Covered | T12,T18,T32 | 
 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 | T17,T12,T18 | 
| 1 | 0 | 1 | Covered | T17,T12,T18 | 
| 1 | 1 | 0 | Covered | T12,T18,T32 | 
| 1 | 1 | 1 | Covered | T12,T18,T32 | 
 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 | T17,T12,T18 | 
 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 | T17,T12,T18 | 
| 0 | 1 | Covered | T17,T12,T18 | 
| 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 | T17,T12,T18 | 
| 1 | 0 | Covered | T17,T12,T18 | 
| 1 | 1 | Covered | T17,T12,T18 | 
 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 | T17,T12,T18 | 
 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 | T12,T18,T32 | 
| 0 | 1 | Covered | T17,T12,T18 | 
| 1 | 0 | Covered | T17,T12,T18 | 
 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 | T17,T12,T18 | 
| 1 | 0 | Covered | T12,T18,T32 | 
| 1 | 1 | Covered | T17,T12,T18 | 
 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 | T17,T12,T18 | 
 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 | T12,T18,T32 | 
| 0 | 1 | Covered | T12,T18,T32 | 
| 1 | 0 | Covered | T17,T12,T18 | 
 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 | T17,T12,T18 | 
| 1 | 0 | Covered | T12,T18,T32 | 
| 1 | 1 | Covered | T12,T18,T32 | 
 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 | T17,T12,T18 | 
 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 | T12,T18,T32 | 
| 0 | 1 | Covered | T12,T18,T32 | 
| 1 | 0 | Covered | T17,T12,T18 | 
 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 | T17,T12,T18 | 
| 1 | 0 | Covered | T12,T18,T32 | 
| 1 | 1 | Covered | T12,T18,T32 | 
 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 | T17,T12,T18 | 
| 0 | 1 | Covered | T12,T18,T32 | 
| 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 | T17,T12,T18 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T12,T18,T32 | 
 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 | T17,T12,T18 | 
| 0 | 1 | Covered | T17,T12,T18 | 
| 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 | T17,T12,T18 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T17,T12,T18 | 
 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 | T17,T12,T18 | 
| 0 | 1 | Covered | T12,T18,T32 | 
| 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 | T17,T12,T18 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T12,T18,T32 | 
 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 | T49,T50,T61 | 
| 1 | 0 | Covered | T49,T50,T61 | 
 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 | T17,T12,T18 | 
| 1 | 0 | Covered | T12,T18,T32 | 
 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 | T12,T18,T32 | 
| 1 | 0 | Covered | T17,T12,T18 | 
 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 | T49,T50,T61 | 
| 1 | 0 | Covered | T12,T18,T32 | 
 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 | T13,T49,T50 | 
| 1 | 0 | Covered | T17,T12,T18 | 
 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 | T17,T12,T18 | 
| 1 | 0 | Covered | T12,T18,T32 | 
 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 | T17,T12,T18 | 
| 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 | T17,T12,T18 | 
| 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 | T17,T12,T18 | 
| 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 | T17,T12,T18 | 
| 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 | T17,T12,T18 | 
| 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 | T17,T12,T18 | 
| 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 | T17,T12,T18 | 
 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 | T12,T18,T32 | 
| 1 | 0 | Covered | T17,T12,T18 | 
| 1 | 1 | Covered | T17,T12,T18 | 
 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 | T17,T12,T18 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T12,T18,T32 | 
 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 | T17,T12,T18 | 
| 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 | T17,T12,T18 | 
| 1 | 1 | Covered | T17,T12,T18 | 
 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 | T13,T49,T50 | 
| 1 | 0 | Covered | T12,T18,T32 | 
| 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 | T17,T12,T18 | 
| 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 | T17,T12,T18 | 
| 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 | T12,T18,T32 | 
| 1 | 0 | Covered | T17,T12,T18 | 
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 | 
T17,T12,T18 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T17,T12,T18 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T17,T12,T18 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T17,T12,T18 | 
155                  assign idx_tree[Pa]  = (sel) ? idx_tree[C1]  : idx_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T17,T12,T18 | 
156                  assign data_tree[Pa] = (sel) ? data_tree[C1] : data_tree[C0];
                                                  -1-  
                                                  ==>  
                                                  ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T1,T2,T3 | 
| 0 | 
Covered | 
T17,T12,T18 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T17,T12,T18 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T17,T12,T18 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T17,T12,T18 | 
| 0 | 
Covered | 
T1,T2,T3 | 
128                    assign prio_mask_d[offset] = (|req_i) ?
                                                             -1-  
                                                             ==>  
                                                             ==>  
Branches:
| -1- | Status | Tests | 
| 1 | 
Covered | 
T17,T12,T18 | 
| 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 | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1058 | 
1058 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
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 | 
365919510 | 
2478225 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
95004 | 
17 | 
0 | 
0 | 
| T12 | 
8384 | 
217 | 
0 | 
0 | 
| T13 | 
0 | 
9828 | 
0 | 
0 | 
| T17 | 
1758 | 
1 | 
0 | 
0 | 
| T18 | 
4850 | 
66 | 
0 | 
0 | 
| T19 | 
2380 | 
0 | 
0 | 
0 | 
| T32 | 
88093 | 
490 | 
0 | 
0 | 
| T48 | 
0 | 
278 | 
0 | 
0 | 
| T49 | 
0 | 
9803 | 
0 | 
0 | 
| T66 | 
2074 | 
69 | 
0 | 
0 | 
| T70 | 
0 | 
754 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
2478225 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
95004 | 
17 | 
0 | 
0 | 
| T12 | 
8384 | 
217 | 
0 | 
0 | 
| T13 | 
0 | 
9828 | 
0 | 
0 | 
| T17 | 
1758 | 
1 | 
0 | 
0 | 
| T18 | 
4850 | 
66 | 
0 | 
0 | 
| T19 | 
2380 | 
0 | 
0 | 
0 | 
| T32 | 
88093 | 
490 | 
0 | 
0 | 
| T48 | 
0 | 
278 | 
0 | 
0 | 
| T49 | 
0 | 
9803 | 
0 | 
0 | 
| T66 | 
2074 | 
69 | 
0 | 
0 | 
| T70 | 
0 | 
754 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
2478225 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
95004 | 
17 | 
0 | 
0 | 
| T12 | 
8384 | 
217 | 
0 | 
0 | 
| T13 | 
0 | 
9828 | 
0 | 
0 | 
| T17 | 
1758 | 
1 | 
0 | 
0 | 
| T18 | 
4850 | 
66 | 
0 | 
0 | 
| T19 | 
2380 | 
0 | 
0 | 
0 | 
| T32 | 
88093 | 
490 | 
0 | 
0 | 
| T48 | 
0 | 
278 | 
0 | 
0 | 
| T49 | 
0 | 
9803 | 
0 | 
0 | 
| T66 | 
2074 | 
69 | 
0 | 
0 | 
| T70 | 
0 | 
754 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
0 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
274717527 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
657 | 
0 | 
0 | 
| T17 | 
1758 | 
855 | 
0 | 
0 | 
| T18 | 
4850 | 
2960 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
2478225 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
95004 | 
17 | 
0 | 
0 | 
| T12 | 
8384 | 
217 | 
0 | 
0 | 
| T13 | 
0 | 
9828 | 
0 | 
0 | 
| T17 | 
1758 | 
1 | 
0 | 
0 | 
| T18 | 
4850 | 
66 | 
0 | 
0 | 
| T19 | 
2380 | 
0 | 
0 | 
0 | 
| T32 | 
88093 | 
490 | 
0 | 
0 | 
| T48 | 
0 | 
278 | 
0 | 
0 | 
| T49 | 
0 | 
9803 | 
0 | 
0 | 
| T66 | 
2074 | 
69 | 
0 | 
0 | 
| T70 | 
0 | 
754 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
2478225 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
95004 | 
17 | 
0 | 
0 | 
| T12 | 
8384 | 
217 | 
0 | 
0 | 
| T13 | 
0 | 
9828 | 
0 | 
0 | 
| T17 | 
1758 | 
1 | 
0 | 
0 | 
| T18 | 
4850 | 
66 | 
0 | 
0 | 
| T19 | 
2380 | 
0 | 
0 | 
0 | 
| T32 | 
88093 | 
490 | 
0 | 
0 | 
| T48 | 
0 | 
278 | 
0 | 
0 | 
| T49 | 
0 | 
9803 | 
0 | 
0 | 
| T66 | 
2074 | 
69 | 
0 | 
0 | 
| T70 | 
0 | 
754 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
86027338 | 
0 | 
0 | 
| T4 | 
3619 | 
0 | 
0 | 
0 | 
| T10 | 
4038 | 
0 | 
0 | 
0 | 
| T11 | 
95004 | 
70173 | 
0 | 
0 | 
| T12 | 
8384 | 
7641 | 
0 | 
0 | 
| T13 | 
0 | 
50061 | 
0 | 
0 | 
| T17 | 
1758 | 
812 | 
0 | 
0 | 
| T18 | 
4850 | 
1768 | 
0 | 
0 | 
| T19 | 
2380 | 
0 | 
0 | 
0 | 
| T32 | 
88093 | 
73202 | 
0 | 
0 | 
| T48 | 
0 | 
27583 | 
0 | 
0 | 
| T49 | 
0 | 
64553 | 
0 | 
0 | 
| T66 | 
2074 | 
1526 | 
0 | 
0 | 
| T70 | 
0 | 
62757 | 
0 | 
0 | 
| T71 | 
151611 | 
0 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
0 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
0 | 
0 | 
1053 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
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 | 44 | 86.27 | 
| Logical | 51 | 44 | 86.27 | 
| 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 | T66,T71,T49 | 
| 1 | 1 | Covered | T66,T71,T49 | 
 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 | Not Covered |  | 
| 1 | 0 | 1 | Not Covered |  | 
| 1 | 1 | 0 | Covered | T66,T71,T49 | 
| 1 | 1 | 1 | Covered | T66,T71,T49 | 
 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 | T66,T71,T49 | 
| 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 | T66,T71,T49 | 
| 0 | 1 | Covered | T66,T71,T49 | 
| 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 | T66,T71,T49 | 
| 1 | 1 | Covered | T66,T71,T49 | 
 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 | T66,T71,T49 | 
 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 | T66,T71,T49 | 
| 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 | T66,T71,T49 | 
 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 | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1058 | 
1058 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
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 | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919420 | 
15463264 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
334247674 | 
0 | 
0 | 
| T1 | 
1001 | 
886 | 
0 | 
0 | 
| T2 | 
1748 | 
1614 | 
0 | 
0 | 
| T3 | 
1555 | 
1422 | 
0 | 
0 | 
| T4 | 
3619 | 
2605 | 
0 | 
0 | 
| T9 | 
125004 | 
114379 | 
0 | 
0 | 
| T10 | 
4038 | 
3875 | 
0 | 
0 | 
| T12 | 
8384 | 
8238 | 
0 | 
0 | 
| T17 | 
1758 | 
1607 | 
0 | 
0 | 
| T18 | 
4850 | 
4700 | 
0 | 
0 | 
| T19 | 
2380 | 
2244 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
30926536 | 
0 | 
0 | 
| T1 | 
1001 | 
64 | 
0 | 
0 | 
| T2 | 
1748 | 
64 | 
0 | 
0 | 
| T3 | 
1555 | 
64 | 
0 | 
0 | 
| T4 | 
3619 | 
324 | 
0 | 
0 | 
| T9 | 
125004 | 
6144 | 
0 | 
0 | 
| T10 | 
4038 | 
64 | 
0 | 
0 | 
| T12 | 
8384 | 
64 | 
0 | 
0 | 
| T17 | 
1758 | 
64 | 
0 | 
0 | 
| T18 | 
4850 | 
64 | 
0 | 
0 | 
| T19 | 
2380 | 
64 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365897337 | 
15463192 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
0 | 
0 | 
1053 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
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 | T66,T71,T49 | 
| 1 | 1 | Covered | T66,T71,T49 | 
 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 | Not Covered |  | 
| 1 | 0 | 1 | Not Covered |  | 
| 1 | 1 | 0 | Covered | T66,T71,T49 | 
| 1 | 1 | 1 | Covered | T66,T71,T49 | 
 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 | T66,T71,T49 | 
| 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 | T66,T71,T49 | 
| 0 | 1 | Covered | T66,T71,T49 | 
| 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 | T66,T71,T49 | 
| 1 | 1 | Covered | T66,T71,T49 | 
 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 | T96 | 
| 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 | T66,T71,T49 | 
 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 | T66,T71,T49 | 
| 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 | T66,T71,T49 | 
 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 | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1058 | 
1058 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
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 | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919420 | 
15463264 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
334247587 | 
0 | 
0 | 
| T1 | 
1001 | 
886 | 
0 | 
0 | 
| T2 | 
1748 | 
1614 | 
0 | 
0 | 
| T3 | 
1555 | 
1422 | 
0 | 
0 | 
| T4 | 
3619 | 
2605 | 
0 | 
0 | 
| T9 | 
125004 | 
114379 | 
0 | 
0 | 
| T10 | 
4038 | 
3875 | 
0 | 
0 | 
| T12 | 
8384 | 
8238 | 
0 | 
0 | 
| T17 | 
1758 | 
1607 | 
0 | 
0 | 
| T18 | 
4850 | 
4700 | 
0 | 
0 | 
| T19 | 
2380 | 
2244 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
30926623 | 
0 | 
0 | 
| T1 | 
1001 | 
64 | 
0 | 
0 | 
| T2 | 
1748 | 
64 | 
0 | 
0 | 
| T3 | 
1555 | 
64 | 
0 | 
0 | 
| T4 | 
3619 | 
324 | 
0 | 
0 | 
| T9 | 
125004 | 
6144 | 
0 | 
0 | 
| T10 | 
4038 | 
64 | 
0 | 
0 | 
| T12 | 
8384 | 
64 | 
0 | 
0 | 
| T17 | 
1758 | 
64 | 
0 | 
0 | 
| T18 | 
4850 | 
64 | 
0 | 
0 | 
| T19 | 
2380 | 
64 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365897337 | 
15463192 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
0 | 
0 | 
1053 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
15463265 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
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 | T66,T71,T13 | 
| 1 | 1 | Covered | T66,T71,T13 | 
 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 | T13,T49,T50 | 
| 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 | T13,T49,T50 | 
| 1 | 1 | 0 | Covered | T66,T71,T13 | 
| 1 | 1 | 1 | Unreachable | T66,T71,T13 | 
 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 | T66,T71,T13 | 
| 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 | T66,T71,T13 | 
| 0 | 1 | Covered | T66,T71,T13 | 
| 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 | T66,T71,T13 | 
| 1 | 1 | Covered | T66,T71,T13 | 
 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 | T13,T49,T50 | 
| 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 | T13,T49,T50 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T66,T71,T13 | 
 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 | T66,T71,T13 | 
| 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 | T66,T71,T13 | 
 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 | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1058 | 
1058 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
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 | 
365919510 | 
16729163 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
16729163 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
16729163 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365887274 | 
16728881 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
331715873 | 
0 | 
0 | 
| T1 | 
1001 | 
886 | 
0 | 
0 | 
| T2 | 
1748 | 
1614 | 
0 | 
0 | 
| T3 | 
1555 | 
1422 | 
0 | 
0 | 
| T4 | 
3619 | 
2605 | 
0 | 
0 | 
| T9 | 
125004 | 
114379 | 
0 | 
0 | 
| T10 | 
4038 | 
3875 | 
0 | 
0 | 
| T12 | 
8384 | 
8238 | 
0 | 
0 | 
| T17 | 
1758 | 
1607 | 
0 | 
0 | 
| T18 | 
4850 | 
4700 | 
0 | 
0 | 
| T19 | 
2380 | 
2244 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
16729163 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
16729163 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
33458337 | 
0 | 
0 | 
| T1 | 
1001 | 
64 | 
0 | 
0 | 
| T2 | 
1748 | 
64 | 
0 | 
0 | 
| T3 | 
1555 | 
64 | 
0 | 
0 | 
| T4 | 
3619 | 
324 | 
0 | 
0 | 
| T9 | 
125004 | 
6144 | 
0 | 
0 | 
| T10 | 
4038 | 
64 | 
0 | 
0 | 
| T12 | 
8384 | 
64 | 
0 | 
0 | 
| T17 | 
1758 | 
64 | 
0 | 
0 | 
| T18 | 
4850 | 
64 | 
0 | 
0 | 
| T19 | 
2380 | 
64 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365803623 | 
16728774 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
0 | 
0 | 
1053 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
16729163 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
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 | T94,T95 | 
| 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 | T66,T71,T13 | 
| 1 | 1 | Covered | T66,T71,T13 | 
 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 | T13,T49,T50 | 
| 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 | T94,T95 | 
| 1 | 0 | 1 | Unreachable | T13,T49,T50 | 
| 1 | 1 | 0 | Covered | T66,T71,T13 | 
| 1 | 1 | 1 | Unreachable | T66,T71,T13 | 
 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 | T66,T71,T13 | 
| 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 | T66,T71,T13 | 
| 0 | 1 | Covered | T66,T71,T13 | 
| 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 | T66,T71,T13 | 
| 1 | 1 | Covered | T66,T71,T13 | 
 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 | T13,T49,T50 | 
| 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 | T13,T49,T50 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T66,T71,T13 | 
 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 | T66,T71,T13 | 
| 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 | T66,T71,T13 | 
 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 | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
CheckNGreaterZero_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1058 | 
1058 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T4 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
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 | 
365919510 | 
16729084 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
GntImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
16729084 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
GrantKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IdxKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
IndexIsCorrect_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
16729084 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
LockArbDecision_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365887274 | 
16728881 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
NoReadyValidNoGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
331715950 | 
0 | 
0 | 
| T1 | 
1001 | 
886 | 
0 | 
0 | 
| T2 | 
1748 | 
1614 | 
0 | 
0 | 
| T3 | 
1555 | 
1422 | 
0 | 
0 | 
| T4 | 
3619 | 
2605 | 
0 | 
0 | 
| T9 | 
125004 | 
114379 | 
0 | 
0 | 
| T10 | 
4038 | 
3875 | 
0 | 
0 | 
| T12 | 
8384 | 
8238 | 
0 | 
0 | 
| T17 | 
1758 | 
1607 | 
0 | 
0 | 
| T18 | 
4850 | 
4700 | 
0 | 
0 | 
| T19 | 
2380 | 
2244 | 
0 | 
0 | 
ReadyAndValidImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
16729084 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
ReqAndReadyImplyGrant_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
16729084 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
ReqImpliesValid_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
33458181 | 
0 | 
0 | 
| T1 | 
1001 | 
64 | 
0 | 
0 | 
| T2 | 
1748 | 
64 | 
0 | 
0 | 
| T3 | 
1555 | 
64 | 
0 | 
0 | 
| T4 | 
3619 | 
324 | 
0 | 
0 | 
| T9 | 
125004 | 
6144 | 
0 | 
0 | 
| T10 | 
4038 | 
64 | 
0 | 
0 | 
| T12 | 
8384 | 
64 | 
0 | 
0 | 
| T17 | 
1758 | 
64 | 
0 | 
0 | 
| T18 | 
4850 | 
64 | 
0 | 
0 | 
| T19 | 
2380 | 
64 | 
0 | 
0 | 
ReqStaysHighUntilGranted0_M
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365803623 | 
16728774 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 | 
RoundRobin_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
0 | 
0 | 
1053 | 
ValidKnown_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
365174210 | 
0 | 
0 | 
| T1 | 
1001 | 
950 | 
0 | 
0 | 
| T2 | 
1748 | 
1678 | 
0 | 
0 | 
| T3 | 
1555 | 
1486 | 
0 | 
0 | 
| T4 | 
3619 | 
2929 | 
0 | 
0 | 
| T9 | 
125004 | 
120523 | 
0 | 
0 | 
| T10 | 
4038 | 
3939 | 
0 | 
0 | 
| T12 | 
8384 | 
8302 | 
0 | 
0 | 
| T17 | 
1758 | 
1671 | 
0 | 
0 | 
| T18 | 
4850 | 
4764 | 
0 | 
0 | 
| T19 | 
2380 | 
2308 | 
0 | 
0 | 
gen_data_port_assertion.DataFlow_A
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
365919510 | 
16729084 | 
0 | 
0 | 
| T1 | 
1001 | 
32 | 
0 | 
0 | 
| T2 | 
1748 | 
32 | 
0 | 
0 | 
| T3 | 
1555 | 
32 | 
0 | 
0 | 
| T4 | 
3619 | 
162 | 
0 | 
0 | 
| T9 | 
125004 | 
3072 | 
0 | 
0 | 
| T10 | 
4038 | 
32 | 
0 | 
0 | 
| T12 | 
8384 | 
32 | 
0 | 
0 | 
| T17 | 
1758 | 
32 | 
0 | 
0 | 
| T18 | 
4850 | 
32 | 
0 | 
0 | 
| T19 | 
2380 | 
32 | 
0 | 
0 |