Line Coverage for Module : 
tlul_socket_m1 ( parameter M=3,HReqPass=7,HRspPass=7,HReqDepth=0,HRspDepth=0,DReqPass=1,DRspPass=0,DReqDepth=1,DRspDepth=1,IDW=8,STIDW=2 + M=3,HReqPass=7,HRspPass=7,HReqDepth=0,HRspDepth=0,DReqPass=0,DRspPass=0,DReqDepth=1,DRspDepth=1,IDW=8,STIDW=2 + M=3,HReqPass=7,HRspPass=7,HReqDepth=0,HRspDepth=0,DReqPass=1,DRspPass=1,DReqDepth=0,DRspDepth=0,IDW=8,STIDW=2 ) 
Line Coverage for Module self-instances : 
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 25 | 25 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         3/3              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        3/3              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        3/3              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        3/3              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        3/3              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        3/3              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        3/3              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
Line Coverage for Module : 
tlul_socket_m1 ( parameter M=2,HReqPass=3,HRspPass=3,HReqDepth=0,HRspDepth=0,DReqPass=0,DRspPass=0,DReqDepth=1,DRspDepth=1,IDW=8,STIDW=1 + M=2,HReqPass=3,HRspPass=3,HReqDepth=0,HRspDepth=0,DReqPass=1,DRspPass=1,DReqDepth=0,DRspDepth=0,IDW=8,STIDW=1 ) 
Line Coverage for Module self-instances : 
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Module : 
tlul_socket_m1 ( parameter M=3,HReqPass=7,HRspPass=7,HReqDepth=0,HRspDepth=0,DReqPass=1,DRspPass=0,DReqDepth=1,DRspDepth=1,IDW=8,STIDW=2 + M=3,HReqPass=7,HRspPass=7,HReqDepth=0,HRspDepth=0,DReqPass=0,DRspPass=0,DReqDepth=1,DRspDepth=1,IDW=8,STIDW=2 + M=3,HReqPass=7,HRspPass=7,HReqDepth=0,HRspDepth=0,DReqPass=1,DRspPass=1,DReqDepth=0,DRspDepth=0,IDW=8,STIDW=2 ) 
Cond Coverage for Module self-instances : 
 | Total | Covered | Percent | 
| Conditions | 33 | 33 | 100.00 | 
| Logical | 33 | 33 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T3,T8,T12 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 2))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T3,T8,T12 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 2)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T9 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T3,T8,T12 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[2].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 2) & drsp_fifo_o.d_valid)
             -----------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,T8,T12 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 2)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Cond Coverage for Module : 
tlul_socket_m1 ( parameter M=2,HReqPass=3,HRspPass=3,HReqDepth=0,HRspDepth=0,DReqPass=0,DRspPass=0,DReqDepth=1,DRspDepth=1,IDW=8,STIDW=1 + M=2,HReqPass=3,HRspPass=3,HReqDepth=0,HRspDepth=0,DReqPass=1,DRspPass=1,DReqDepth=0,DRspDepth=0,IDW=8,STIDW=1 ) 
Cond Coverage for Module self-instances : 
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Module : 
tlul_socket_m1
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
19360755 | 
0 | 
0 | 
| T1 | 
257370 | 
689 | 
0 | 
0 | 
| T2 | 
50952 | 
331 | 
0 | 
0 | 
| T3 | 
420336 | 
2566 | 
0 | 
0 | 
| T7 | 
458832 | 
2773 | 
0 | 
0 | 
| T8 | 
105648 | 
1928 | 
0 | 
0 | 
| T9 | 
111768 | 
1196 | 
0 | 
0 | 
| T10 | 
239208 | 
573 | 
0 | 
0 | 
| T11 | 
59928 | 
413 | 
0 | 
0 | 
| T12 | 
1021560 | 
3580 | 
0 | 
0 | 
| T13 | 
842256 | 
3289 | 
0 | 
0 | 
| T25 | 
274309 | 
10 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
11523431 | 
0 | 
0 | 
| T1 | 
268560 | 
220 | 
0 | 
0 | 
| T2 | 
50952 | 
195 | 
0 | 
0 | 
| T3 | 
420336 | 
1003 | 
0 | 
0 | 
| T7 | 
458832 | 
1157 | 
0 | 
0 | 
| T8 | 
105648 | 
998 | 
0 | 
0 | 
| T9 | 
111768 | 
607 | 
0 | 
0 | 
| T10 | 
239208 | 
267 | 
0 | 
0 | 
| T11 | 
59928 | 
180 | 
0 | 
0 | 
| T12 | 
1021560 | 
1751 | 
0 | 
0 | 
| T13 | 
842256 | 
1209 | 
0 | 
0 | 
gen_host_fifo[2].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
1043501080 | 
3009557 | 
0 | 
0 | 
| T1 | 
44760 | 
108 | 
0 | 
0 | 
| T2 | 
8492 | 
29 | 
0 | 
0 | 
| T3 | 
70056 | 
301 | 
0 | 
0 | 
| T7 | 
76472 | 
400 | 
0 | 
0 | 
| T8 | 
17608 | 
172 | 
0 | 
0 | 
| T9 | 
18628 | 
114 | 
0 | 
0 | 
| T10 | 
39868 | 
98 | 
0 | 
0 | 
| T11 | 
9988 | 
23 | 
0 | 
0 | 
| T12 | 
170260 | 
650 | 
0 | 
0 | 
| T13 | 
140376 | 
480 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
21600 | 
21600 | 
0 | 
0 | 
| T1 | 
24 | 
24 | 
0 | 
0 | 
| T2 | 
24 | 
24 | 
0 | 
0 | 
| T3 | 
24 | 
24 | 
0 | 
0 | 
| T7 | 
24 | 
24 | 
0 | 
0 | 
| T8 | 
24 | 
24 | 
0 | 
0 | 
| T9 | 
24 | 
24 | 
0 | 
0 | 
| T10 | 
24 | 
24 | 
0 | 
0 | 
| T11 | 
24 | 
24 | 
0 | 
0 | 
| T12 | 
24 | 
24 | 
0 | 
0 | 
| T13 | 
24 | 
24 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
2147483647 | 
98672956 | 
0 | 
0 | 
| T1 | 
268560 | 
1749 | 
0 | 
0 | 
| T2 | 
50952 | 
494 | 
0 | 
0 | 
| T3 | 
420336 | 
6551 | 
0 | 
0 | 
| T7 | 
458832 | 
10320 | 
0 | 
0 | 
| T8 | 
105648 | 
2672 | 
0 | 
0 | 
| T9 | 
111768 | 
1863 | 
0 | 
0 | 
| T10 | 
239208 | 
2234 | 
0 | 
0 | 
| T11 | 
59928 | 
528 | 
0 | 
0 | 
| T12 | 
1021560 | 
14634 | 
0 | 
0 | 
| T13 | 
842256 | 
5393 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_28
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 25 | 25 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         3/3              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        3/3              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        3/3              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        3/3              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        3/3              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        3/3              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        3/3              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_28
 | Total | Covered | Percent | 
| Conditions | 33 | 29 | 87.88 | 
| Logical | 33 | 29 | 87.88 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 2))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 2)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[2].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 2) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T7,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 2)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_28
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
1480002 | 
0 | 
0 | 
| T1 | 
11190 | 
73 | 
0 | 
0 | 
| T2 | 
2123 | 
42 | 
0 | 
0 | 
| T3 | 
17514 | 
247 | 
0 | 
0 | 
| T7 | 
19118 | 
306 | 
0 | 
0 | 
| T8 | 
4402 | 
224 | 
0 | 
0 | 
| T9 | 
4657 | 
150 | 
0 | 
0 | 
| T10 | 
9967 | 
57 | 
0 | 
0 | 
| T11 | 
2497 | 
45 | 
0 | 
0 | 
| T12 | 
42565 | 
313 | 
0 | 
0 | 
| T13 | 
35094 | 
265 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
413763 | 
0 | 
0 | 
| T1 | 
11190 | 
8 | 
0 | 
0 | 
| T2 | 
2123 | 
4 | 
0 | 
0 | 
| T3 | 
17514 | 
50 | 
0 | 
0 | 
| T7 | 
19118 | 
70 | 
0 | 
0 | 
| T8 | 
4402 | 
36 | 
0 | 
0 | 
| T9 | 
4657 | 
26 | 
0 | 
0 | 
| T10 | 
9967 | 
5 | 
0 | 
0 | 
| T11 | 
2497 | 
9 | 
0 | 
0 | 
| T12 | 
42565 | 
35 | 
0 | 
0 | 
| T13 | 
35094 | 
24 | 
0 | 
0 | 
gen_host_fifo[2].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
525154 | 
0 | 
0 | 
| T1 | 
11190 | 
5 | 
0 | 
0 | 
| T2 | 
2123 | 
7 | 
0 | 
0 | 
| T3 | 
17514 | 
56 | 
0 | 
0 | 
| T7 | 
19118 | 
63 | 
0 | 
0 | 
| T8 | 
4402 | 
35 | 
0 | 
0 | 
| T9 | 
4657 | 
24 | 
0 | 
0 | 
| T10 | 
9967 | 
7 | 
0 | 
0 | 
| T11 | 
2497 | 
8 | 
0 | 
0 | 
| T12 | 
42565 | 
64 | 
0 | 
0 | 
| T13 | 
35094 | 
43 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
12895639 | 
0 | 
0 | 
| T1 | 
11190 | 
335 | 
0 | 
0 | 
| T2 | 
2123 | 
53 | 
0 | 
0 | 
| T3 | 
17514 | 
1021 | 
0 | 
0 | 
| T7 | 
19118 | 
1722 | 
0 | 
0 | 
| T8 | 
4402 | 
286 | 
0 | 
0 | 
| T9 | 
4657 | 
197 | 
0 | 
0 | 
| T10 | 
9967 | 
369 | 
0 | 
0 | 
| T11 | 
2497 | 
62 | 
0 | 
0 | 
| T12 | 
42565 | 
2139 | 
0 | 
0 | 
| T13 | 
35094 | 
838 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_29
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 25 | 25 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         3/3              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        3/3              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        3/3              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        3/3              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        3/3              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        3/3              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        3/3              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_29
 | Total | Covered | Percent | 
| Conditions | 33 | 29 | 87.88 | 
| Logical | 33 | 29 | 87.88 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 2))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 2)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T8,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[2].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 2) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T7,T12,T13 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 2)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_29
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
1633183 | 
0 | 
0 | 
| T1 | 
11190 | 
53 | 
0 | 
0 | 
| T2 | 
2123 | 
56 | 
0 | 
0 | 
| T3 | 
17514 | 
227 | 
0 | 
0 | 
| T7 | 
19118 | 
263 | 
0 | 
0 | 
| T8 | 
4402 | 
308 | 
0 | 
0 | 
| T9 | 
4657 | 
183 | 
0 | 
0 | 
| T10 | 
9967 | 
28 | 
0 | 
0 | 
| T11 | 
2497 | 
84 | 
0 | 
0 | 
| T12 | 
42565 | 
332 | 
0 | 
0 | 
| T13 | 
35094 | 
245 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
475293 | 
0 | 
0 | 
| T1 | 
11190 | 
2 | 
0 | 
0 | 
| T2 | 
2123 | 
6 | 
0 | 
0 | 
| T3 | 
17514 | 
14 | 
0 | 
0 | 
| T7 | 
19118 | 
42 | 
0 | 
0 | 
| T8 | 
4402 | 
46 | 
0 | 
0 | 
| T9 | 
4657 | 
25 | 
0 | 
0 | 
| T10 | 
9967 | 
9 | 
0 | 
0 | 
| T11 | 
2497 | 
13 | 
0 | 
0 | 
| T12 | 
42565 | 
39 | 
0 | 
0 | 
| T13 | 
35094 | 
45 | 
0 | 
0 | 
gen_host_fifo[2].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
564481 | 
0 | 
0 | 
| T1 | 
11190 | 
19 | 
0 | 
0 | 
| T2 | 
2123 | 
5 | 
0 | 
0 | 
| T3 | 
17514 | 
64 | 
0 | 
0 | 
| T7 | 
19118 | 
61 | 
0 | 
0 | 
| T8 | 
4402 | 
51 | 
0 | 
0 | 
| T9 | 
4657 | 
35 | 
0 | 
0 | 
| T10 | 
9967 | 
4 | 
0 | 
0 | 
| T11 | 
2497 | 
5 | 
0 | 
0 | 
| T12 | 
42565 | 
93 | 
0 | 
0 | 
| T13 | 
35094 | 
36 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
12558818 | 
0 | 
0 | 
| T1 | 
11190 | 
259 | 
0 | 
0 | 
| T2 | 
2123 | 
57 | 
0 | 
0 | 
| T3 | 
17514 | 
980 | 
0 | 
0 | 
| T7 | 
19118 | 
1570 | 
0 | 
0 | 
| T8 | 
4402 | 
315 | 
0 | 
0 | 
| T9 | 
4657 | 
226 | 
0 | 
0 | 
| T10 | 
9967 | 
299 | 
0 | 
0 | 
| T11 | 
2497 | 
77 | 
0 | 
0 | 
| T12 | 
42565 | 
1999 | 
0 | 
0 | 
| T13 | 
35094 | 
539 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_31
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 25 | 25 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         3/3              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        3/3              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        3/3              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        3/3              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        3/3              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        3/3              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        3/3              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_31
 | Total | Covered | Percent | 
| Conditions | 33 | 29 | 87.88 | 
| Logical | 33 | 29 | 87.88 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 2))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 2)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[2].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 2) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T7,T10 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 2)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_31
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
1616376 | 
0 | 
0 | 
| T1 | 
11190 | 
69 | 
0 | 
0 | 
| T2 | 
2123 | 
64 | 
0 | 
0 | 
| T3 | 
17514 | 
239 | 
0 | 
0 | 
| T7 | 
19118 | 
318 | 
0 | 
0 | 
| T8 | 
4402 | 
328 | 
0 | 
0 | 
| T9 | 
4657 | 
153 | 
0 | 
0 | 
| T10 | 
9967 | 
32 | 
0 | 
0 | 
| T11 | 
2497 | 
68 | 
0 | 
0 | 
| T12 | 
42565 | 
405 | 
0 | 
0 | 
| T13 | 
35094 | 
333 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
459365 | 
0 | 
0 | 
| T1 | 
11190 | 
2 | 
0 | 
0 | 
| T2 | 
2123 | 
1 | 
0 | 
0 | 
| T3 | 
17514 | 
50 | 
0 | 
0 | 
| T7 | 
19118 | 
42 | 
0 | 
0 | 
| T8 | 
4402 | 
44 | 
0 | 
0 | 
| T9 | 
4657 | 
25 | 
0 | 
0 | 
| T10 | 
9967 | 
4 | 
0 | 
0 | 
| T11 | 
2497 | 
6 | 
0 | 
0 | 
| T12 | 
42565 | 
89 | 
0 | 
0 | 
| T13 | 
35094 | 
34 | 
0 | 
0 | 
gen_host_fifo[2].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
550676 | 
0 | 
0 | 
| T1 | 
11190 | 
5 | 
0 | 
0 | 
| T2 | 
2123 | 
9 | 
0 | 
0 | 
| T3 | 
17514 | 
23 | 
0 | 
0 | 
| T7 | 
19118 | 
48 | 
0 | 
0 | 
| T8 | 
4402 | 
49 | 
0 | 
0 | 
| T9 | 
4657 | 
26 | 
0 | 
0 | 
| T10 | 
9967 | 
11 | 
0 | 
0 | 
| T11 | 
2497 | 
4 | 
0 | 
0 | 
| T12 | 
42565 | 
104 | 
0 | 
0 | 
| T13 | 
35094 | 
34 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
11410971 | 
0 | 
0 | 
| T1 | 
11190 | 
339 | 
0 | 
0 | 
| T2 | 
2123 | 
60 | 
0 | 
0 | 
| T3 | 
17514 | 
1027 | 
0 | 
0 | 
| T7 | 
19118 | 
1570 | 
0 | 
0 | 
| T8 | 
4402 | 
325 | 
0 | 
0 | 
| T9 | 
4657 | 
196 | 
0 | 
0 | 
| T10 | 
9967 | 
294 | 
0 | 
0 | 
| T11 | 
2497 | 
59 | 
0 | 
0 | 
| T12 | 
42565 | 
2170 | 
0 | 
0 | 
| T13 | 
35094 | 
693 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_33
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_33
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T7,T10 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_33
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
247915 | 
0 | 
0 | 
| T1 | 
11190 | 
6 | 
0 | 
0 | 
| T2 | 
2123 | 
2 | 
0 | 
0 | 
| T3 | 
17514 | 
14 | 
0 | 
0 | 
| T7 | 
19118 | 
24 | 
0 | 
0 | 
| T8 | 
4402 | 
54 | 
0 | 
0 | 
| T9 | 
4657 | 
31 | 
0 | 
0 | 
| T10 | 
9967 | 
6 | 
0 | 
0 | 
| T11 | 
2497 | 
6 | 
0 | 
0 | 
| T12 | 
42565 | 
33 | 
0 | 
0 | 
| T13 | 
35094 | 
41 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
310920 | 
0 | 
0 | 
| T1 | 
11190 | 
7 | 
0 | 
0 | 
| T2 | 
2123 | 
13 | 
0 | 
0 | 
| T3 | 
17514 | 
11 | 
0 | 
0 | 
| T7 | 
19118 | 
41 | 
0 | 
0 | 
| T8 | 
4402 | 
31 | 
0 | 
0 | 
| T9 | 
4657 | 
24 | 
0 | 
0 | 
| T10 | 
9967 | 
5 | 
0 | 
0 | 
| T11 | 
2497 | 
6 | 
0 | 
0 | 
| T12 | 
42565 | 
82 | 
0 | 
0 | 
| T13 | 
35094 | 
20 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2487664 | 
0 | 
0 | 
| T1 | 
11190 | 
33 | 
0 | 
0 | 
| T2 | 
2123 | 
15 | 
0 | 
0 | 
| T3 | 
17514 | 
88 | 
0 | 
0 | 
| T7 | 
19118 | 
250 | 
0 | 
0 | 
| T8 | 
4402 | 
80 | 
0 | 
0 | 
| T9 | 
4657 | 
55 | 
0 | 
0 | 
| T10 | 
9967 | 
55 | 
0 | 
0 | 
| T11 | 
2497 | 
12 | 
0 | 
0 | 
| T12 | 
42565 | 
285 | 
0 | 
0 | 
| T13 | 
35094 | 
112 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_34
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_34
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T7,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T7,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_34
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
300123 | 
0 | 
0 | 
| T1 | 
11190 | 
2 | 
0 | 
0 | 
| T2 | 
2123 | 
3 | 
0 | 
0 | 
| T3 | 
17514 | 
14 | 
0 | 
0 | 
| T7 | 
19118 | 
29 | 
0 | 
0 | 
| T8 | 
4402 | 
32 | 
0 | 
0 | 
| T9 | 
4657 | 
24 | 
0 | 
0 | 
| T10 | 
9967 | 
0 | 
0 | 
0 | 
| T11 | 
2497 | 
6 | 
0 | 
0 | 
| T12 | 
42565 | 
51 | 
0 | 
0 | 
| T13 | 
35094 | 
33 | 
0 | 
0 | 
| T25 | 
0 | 
4 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
360371 | 
0 | 
0 | 
| T1 | 
11190 | 
11 | 
0 | 
0 | 
| T2 | 
2123 | 
15 | 
0 | 
0 | 
| T3 | 
17514 | 
38 | 
0 | 
0 | 
| T7 | 
19118 | 
47 | 
0 | 
0 | 
| T8 | 
4402 | 
31 | 
0 | 
0 | 
| T9 | 
4657 | 
25 | 
0 | 
0 | 
| T10 | 
9967 | 
13 | 
0 | 
0 | 
| T11 | 
2497 | 
11 | 
0 | 
0 | 
| T12 | 
42565 | 
45 | 
0 | 
0 | 
| T13 | 
35094 | 
53 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2354636 | 
0 | 
0 | 
| T1 | 
11190 | 
25 | 
0 | 
0 | 
| T2 | 
2123 | 
18 | 
0 | 
0 | 
| T3 | 
17514 | 
134 | 
0 | 
0 | 
| T7 | 
19118 | 
290 | 
0 | 
0 | 
| T8 | 
4402 | 
62 | 
0 | 
0 | 
| T9 | 
4657 | 
49 | 
0 | 
0 | 
| T10 | 
9967 | 
7 | 
0 | 
0 | 
| T11 | 
2497 | 
16 | 
0 | 
0 | 
| T12 | 
42565 | 
413 | 
0 | 
0 | 
| T13 | 
35094 | 
113 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_36
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_36
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T2,T3,T8 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T25,T27,T28 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_36
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
790758 | 
0 | 
0 | 
| T1 | 
11190 | 
12 | 
0 | 
0 | 
| T2 | 
2123 | 
5 | 
0 | 
0 | 
| T3 | 
17514 | 
11 | 
0 | 
0 | 
| T7 | 
19118 | 
49 | 
0 | 
0 | 
| T8 | 
4402 | 
57 | 
0 | 
0 | 
| T9 | 
4657 | 
36 | 
0 | 
0 | 
| T10 | 
9967 | 
3 | 
0 | 
0 | 
| T11 | 
2497 | 
37 | 
0 | 
0 | 
| T12 | 
42565 | 
108 | 
0 | 
0 | 
| T13 | 
35094 | 
34 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
943204 | 
0 | 
0 | 
| T1 | 
11190 | 
10 | 
0 | 
0 | 
| T2 | 
2123 | 
21 | 
0 | 
0 | 
| T3 | 
17514 | 
19 | 
0 | 
0 | 
| T7 | 
19118 | 
69 | 
0 | 
0 | 
| T8 | 
4402 | 
77 | 
0 | 
0 | 
| T9 | 
4657 | 
25 | 
0 | 
0 | 
| T10 | 
9967 | 
22 | 
0 | 
0 | 
| T11 | 
2497 | 
5 | 
0 | 
0 | 
| T12 | 
42565 | 
136 | 
0 | 
0 | 
| T13 | 
35094 | 
58 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
3228155 | 
0 | 
0 | 
| T1 | 
11190 | 
24 | 
0 | 
0 | 
| T2 | 
2123 | 
12 | 
0 | 
0 | 
| T3 | 
17514 | 
102 | 
0 | 
0 | 
| T7 | 
19118 | 
173 | 
0 | 
0 | 
| T8 | 
4402 | 
59 | 
0 | 
0 | 
| T9 | 
4657 | 
51 | 
0 | 
0 | 
| T10 | 
9967 | 
29 | 
0 | 
0 | 
| T11 | 
2497 | 
18 | 
0 | 
0 | 
| T12 | 
42565 | 
311 | 
0 | 
0 | 
| T13 | 
35094 | 
106 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_38
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_38
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T7,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_38
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
673679 | 
0 | 
0 | 
| T1 | 
11190 | 
6 | 
0 | 
0 | 
| T2 | 
2123 | 
16 | 
0 | 
0 | 
| T3 | 
17514 | 
244 | 
0 | 
0 | 
| T7 | 
19118 | 
54 | 
0 | 
0 | 
| T8 | 
4402 | 
67 | 
0 | 
0 | 
| T9 | 
4657 | 
27 | 
0 | 
0 | 
| T10 | 
9967 | 
8 | 
0 | 
0 | 
| T11 | 
2497 | 
14 | 
0 | 
0 | 
| T12 | 
42565 | 
42 | 
0 | 
0 | 
| T13 | 
35094 | 
65 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
804605 | 
0 | 
0 | 
| T1 | 
11190 | 
6 | 
0 | 
0 | 
| T2 | 
2123 | 
4 | 
0 | 
0 | 
| T3 | 
17514 | 
233 | 
0 | 
0 | 
| T7 | 
19118 | 
47 | 
0 | 
0 | 
| T8 | 
4402 | 
61 | 
0 | 
0 | 
| T9 | 
4657 | 
36 | 
0 | 
0 | 
| T10 | 
9967 | 
11 | 
0 | 
0 | 
| T11 | 
2497 | 
5 | 
0 | 
0 | 
| T12 | 
42565 | 
48 | 
0 | 
0 | 
| T13 | 
35094 | 
50 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
3163492 | 
0 | 
0 | 
| T1 | 
11190 | 
25 | 
0 | 
0 | 
| T2 | 
2123 | 
10 | 
0 | 
0 | 
| T3 | 
17514 | 
102 | 
0 | 
0 | 
| T7 | 
19118 | 
151 | 
0 | 
0 | 
| T8 | 
4402 | 
78 | 
0 | 
0 | 
| T9 | 
4657 | 
63 | 
0 | 
0 | 
| T10 | 
9967 | 
84 | 
0 | 
0 | 
| T11 | 
2497 | 
14 | 
0 | 
0 | 
| T12 | 
42565 | 
204 | 
0 | 
0 | 
| T13 | 
35094 | 
124 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_40
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_40
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T7 | 
| 1 | 0 | 1 | Covered | T2,T3,T8 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T7,T12,T25 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_40
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
597984 | 
0 | 
0 | 
| T1 | 
11190 | 
7 | 
0 | 
0 | 
| T2 | 
2123 | 
5 | 
0 | 
0 | 
| T3 | 
17514 | 
16 | 
0 | 
0 | 
| T7 | 
19118 | 
15 | 
0 | 
0 | 
| T8 | 
4402 | 
51 | 
0 | 
0 | 
| T9 | 
4657 | 
29 | 
0 | 
0 | 
| T10 | 
9967 | 
3 | 
0 | 
0 | 
| T11 | 
2497 | 
10 | 
0 | 
0 | 
| T12 | 
42565 | 
27 | 
0 | 
0 | 
| T13 | 
35094 | 
28 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
687154 | 
0 | 
0 | 
| T1 | 
11190 | 
4 | 
0 | 
0 | 
| T2 | 
2123 | 
15 | 
0 | 
0 | 
| T3 | 
17514 | 
46 | 
0 | 
0 | 
| T7 | 
19118 | 
33 | 
0 | 
0 | 
| T8 | 
4402 | 
41 | 
0 | 
0 | 
| T9 | 
4657 | 
26 | 
0 | 
0 | 
| T10 | 
9967 | 
36 | 
0 | 
0 | 
| T11 | 
2497 | 
12 | 
0 | 
0 | 
| T12 | 
42565 | 
59 | 
0 | 
0 | 
| T13 | 
35094 | 
43 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2091652 | 
0 | 
0 | 
| T1 | 
11190 | 
17 | 
0 | 
0 | 
| T2 | 
2123 | 
17 | 
0 | 
0 | 
| T3 | 
17514 | 
86 | 
0 | 
0 | 
| T7 | 
19118 | 
147 | 
0 | 
0 | 
| T8 | 
4402 | 
70 | 
0 | 
0 | 
| T9 | 
4657 | 
46 | 
0 | 
0 | 
| T10 | 
9967 | 
34 | 
0 | 
0 | 
| T11 | 
2497 | 
15 | 
0 | 
0 | 
| T12 | 
42565 | 
189 | 
0 | 
0 | 
| T13 | 
35094 | 
80 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_42
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T2 T3 T8  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_42
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T2,T3,T8 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T2,T3,T8 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T7,T10 | 
| 1 | 0 | 1 | Covered | T2,T3,T8 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T2,T3,T8 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T7,T10 | 
| 1 | 0 | 1 | Covered | T2,T3,T8 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_42
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
679068 | 
0 | 
0 | 
| T2 | 
2123 | 
2 | 
0 | 
0 | 
| T3 | 
17514 | 
33 | 
0 | 
0 | 
| T7 | 
19118 | 
25 | 
0 | 
0 | 
| T8 | 
4402 | 
42 | 
0 | 
0 | 
| T9 | 
4657 | 
21 | 
0 | 
0 | 
| T10 | 
9967 | 
24 | 
0 | 
0 | 
| T11 | 
2497 | 
6 | 
0 | 
0 | 
| T12 | 
42565 | 
70 | 
0 | 
0 | 
| T13 | 
35094 | 
193 | 
0 | 
0 | 
| T25 | 
274309 | 
6 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
737366 | 
0 | 
0 | 
| T1 | 
11190 | 
5 | 
0 | 
0 | 
| T2 | 
2123 | 
8 | 
0 | 
0 | 
| T3 | 
17514 | 
61 | 
0 | 
0 | 
| T7 | 
19118 | 
29 | 
0 | 
0 | 
| T8 | 
4402 | 
46 | 
0 | 
0 | 
| T9 | 
4657 | 
21 | 
0 | 
0 | 
| T10 | 
9967 | 
3 | 
0 | 
0 | 
| T11 | 
2497 | 
5 | 
0 | 
0 | 
| T12 | 
42565 | 
70 | 
0 | 
0 | 
| T13 | 
35094 | 
96 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2716360 | 
0 | 
0 | 
| T1 | 
11190 | 
5 | 
0 | 
0 | 
| T2 | 
2123 | 
10 | 
0 | 
0 | 
| T3 | 
17514 | 
93 | 
0 | 
0 | 
| T7 | 
19118 | 
228 | 
0 | 
0 | 
| T8 | 
4402 | 
70 | 
0 | 
0 | 
| T9 | 
4657 | 
42 | 
0 | 
0 | 
| T10 | 
9967 | 
107 | 
0 | 
0 | 
| T11 | 
2497 | 
11 | 
0 | 
0 | 
| T12 | 
42565 | 
365 | 
0 | 
0 | 
| T13 | 
35094 | 
155 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_43
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_43
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T7,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_43
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
249452 | 
0 | 
0 | 
| T1 | 
11190 | 
9 | 
0 | 
0 | 
| T2 | 
2123 | 
9 | 
0 | 
0 | 
| T3 | 
17514 | 
33 | 
0 | 
0 | 
| T7 | 
19118 | 
20 | 
0 | 
0 | 
| T8 | 
4402 | 
36 | 
0 | 
0 | 
| T9 | 
4657 | 
33 | 
0 | 
0 | 
| T10 | 
9967 | 
2 | 
0 | 
0 | 
| T11 | 
2497 | 
11 | 
0 | 
0 | 
| T12 | 
42565 | 
40 | 
0 | 
0 | 
| T13 | 
35094 | 
37 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
316075 | 
0 | 
0 | 
| T1 | 
11190 | 
9 | 
0 | 
0 | 
| T2 | 
2123 | 
10 | 
0 | 
0 | 
| T3 | 
17514 | 
18 | 
0 | 
0 | 
| T7 | 
19118 | 
41 | 
0 | 
0 | 
| T8 | 
4402 | 
35 | 
0 | 
0 | 
| T9 | 
4657 | 
26 | 
0 | 
0 | 
| T10 | 
9967 | 
6 | 
0 | 
0 | 
| T11 | 
2497 | 
9 | 
0 | 
0 | 
| T12 | 
42565 | 
67 | 
0 | 
0 | 
| T13 | 
35094 | 
56 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2183483 | 
0 | 
0 | 
| T1 | 
11190 | 
46 | 
0 | 
0 | 
| T2 | 
2123 | 
18 | 
0 | 
0 | 
| T3 | 
17514 | 
135 | 
0 | 
0 | 
| T7 | 
19118 | 
174 | 
0 | 
0 | 
| T8 | 
4402 | 
67 | 
0 | 
0 | 
| T9 | 
4657 | 
59 | 
0 | 
0 | 
| T10 | 
9967 | 
17 | 
0 | 
0 | 
| T11 | 
2497 | 
19 | 
0 | 
0 | 
| T12 | 
42565 | 
330 | 
0 | 
0 | 
| T13 | 
35094 | 
121 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_44
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_44
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T7,T12,T13 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_44
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
286493 | 
0 | 
0 | 
| T1 | 
11190 | 
5 | 
0 | 
0 | 
| T2 | 
2123 | 
4 | 
0 | 
0 | 
| T3 | 
17514 | 
28 | 
0 | 
0 | 
| T7 | 
19118 | 
18 | 
0 | 
0 | 
| T8 | 
4402 | 
45 | 
0 | 
0 | 
| T9 | 
4657 | 
25 | 
0 | 
0 | 
| T10 | 
9967 | 
10 | 
0 | 
0 | 
| T11 | 
2497 | 
2 | 
0 | 
0 | 
| T12 | 
42565 | 
30 | 
0 | 
0 | 
| T13 | 
35094 | 
25 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
356343 | 
0 | 
0 | 
| T1 | 
11190 | 
5 | 
0 | 
0 | 
| T2 | 
2123 | 
3 | 
0 | 
0 | 
| T3 | 
17514 | 
13 | 
0 | 
0 | 
| T7 | 
19118 | 
66 | 
0 | 
0 | 
| T8 | 
4402 | 
48 | 
0 | 
0 | 
| T9 | 
4657 | 
22 | 
0 | 
0 | 
| T10 | 
9967 | 
17 | 
0 | 
0 | 
| T11 | 
2497 | 
5 | 
0 | 
0 | 
| T12 | 
42565 | 
46 | 
0 | 
0 | 
| T13 | 
35094 | 
35 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2195237 | 
0 | 
0 | 
| T1 | 
11190 | 
23 | 
0 | 
0 | 
| T2 | 
2123 | 
7 | 
0 | 
0 | 
| T3 | 
17514 | 
173 | 
0 | 
0 | 
| T7 | 
19118 | 
193 | 
0 | 
0 | 
| T8 | 
4402 | 
86 | 
0 | 
0 | 
| T9 | 
4657 | 
47 | 
0 | 
0 | 
| T10 | 
9967 | 
23 | 
0 | 
0 | 
| T11 | 
2497 | 
7 | 
0 | 
0 | 
| T12 | 
42565 | 
238 | 
0 | 
0 | 
| T13 | 
35094 | 
89 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_45
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_45
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T7,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_45
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
291246 | 
0 | 
0 | 
| T1 | 
11190 | 
6 | 
0 | 
0 | 
| T2 | 
2123 | 
6 | 
0 | 
0 | 
| T3 | 
17514 | 
18 | 
0 | 
0 | 
| T7 | 
19118 | 
39 | 
0 | 
0 | 
| T8 | 
4402 | 
36 | 
0 | 
0 | 
| T9 | 
4657 | 
30 | 
0 | 
0 | 
| T10 | 
9967 | 
4 | 
0 | 
0 | 
| T11 | 
2497 | 
9 | 
0 | 
0 | 
| T12 | 
42565 | 
54 | 
0 | 
0 | 
| T13 | 
35094 | 
32 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
364357 | 
0 | 
0 | 
| T1 | 
11190 | 
4 | 
0 | 
0 | 
| T2 | 
2123 | 
4 | 
0 | 
0 | 
| T3 | 
17514 | 
16 | 
0 | 
0 | 
| T7 | 
19118 | 
33 | 
0 | 
0 | 
| T8 | 
4402 | 
47 | 
0 | 
0 | 
| T9 | 
4657 | 
25 | 
0 | 
0 | 
| T10 | 
9967 | 
13 | 
0 | 
0 | 
| T11 | 
2497 | 
12 | 
0 | 
0 | 
| T12 | 
42565 | 
57 | 
0 | 
0 | 
| T13 | 
35094 | 
31 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2674224 | 
0 | 
0 | 
| T1 | 
11190 | 
33 | 
0 | 
0 | 
| T2 | 
2123 | 
9 | 
0 | 
0 | 
| T3 | 
17514 | 
123 | 
0 | 
0 | 
| T7 | 
19118 | 
230 | 
0 | 
0 | 
| T8 | 
4402 | 
78 | 
0 | 
0 | 
| T9 | 
4657 | 
55 | 
0 | 
0 | 
| T10 | 
9967 | 
43 | 
0 | 
0 | 
| T11 | 
2497 | 
20 | 
0 | 
0 | 
| T12 | 
42565 | 
420 | 
0 | 
0 | 
| T13 | 
35094 | 
86 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_46
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_46
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T7,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_46
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
264515 | 
0 | 
0 | 
| T1 | 
11190 | 
4 | 
0 | 
0 | 
| T2 | 
2123 | 
6 | 
0 | 
0 | 
| T3 | 
17514 | 
25 | 
0 | 
0 | 
| T7 | 
19118 | 
41 | 
0 | 
0 | 
| T8 | 
4402 | 
52 | 
0 | 
0 | 
| T9 | 
4657 | 
35 | 
0 | 
0 | 
| T10 | 
9967 | 
4 | 
0 | 
0 | 
| T11 | 
2497 | 
3 | 
0 | 
0 | 
| T12 | 
42565 | 
33 | 
0 | 
0 | 
| T13 | 
35094 | 
39 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
328286 | 
0 | 
0 | 
| T1 | 
11190 | 
3 | 
0 | 
0 | 
| T2 | 
2123 | 
6 | 
0 | 
0 | 
| T3 | 
17514 | 
31 | 
0 | 
0 | 
| T7 | 
19118 | 
27 | 
0 | 
0 | 
| T8 | 
4402 | 
37 | 
0 | 
0 | 
| T9 | 
4657 | 
22 | 
0 | 
0 | 
| T10 | 
9967 | 
6 | 
0 | 
0 | 
| T11 | 
2497 | 
10 | 
0 | 
0 | 
| T12 | 
42565 | 
79 | 
0 | 
0 | 
| T13 | 
35094 | 
30 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
1879014 | 
0 | 
0 | 
| T1 | 
11190 | 
13 | 
0 | 
0 | 
| T2 | 
2123 | 
11 | 
0 | 
0 | 
| T3 | 
17514 | 
161 | 
0 | 
0 | 
| T7 | 
19118 | 
216 | 
0 | 
0 | 
| T8 | 
4402 | 
82 | 
0 | 
0 | 
| T9 | 
4657 | 
56 | 
0 | 
0 | 
| T10 | 
9967 | 
44 | 
0 | 
0 | 
| T11 | 
2497 | 
13 | 
0 | 
0 | 
| T12 | 
42565 | 
336 | 
0 | 
0 | 
| T13 | 
35094 | 
135 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_47
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_47
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T7,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_47
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
292334 | 
0 | 
0 | 
| T1 | 
11190 | 
7 | 
0 | 
0 | 
| T2 | 
2123 | 
3 | 
0 | 
0 | 
| T3 | 
17514 | 
28 | 
0 | 
0 | 
| T7 | 
19118 | 
43 | 
0 | 
0 | 
| T8 | 
4402 | 
44 | 
0 | 
0 | 
| T9 | 
4657 | 
25 | 
0 | 
0 | 
| T10 | 
9967 | 
6 | 
0 | 
0 | 
| T11 | 
2497 | 
4 | 
0 | 
0 | 
| T12 | 
42565 | 
32 | 
0 | 
0 | 
| T13 | 
35094 | 
51 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
366674 | 
0 | 
0 | 
| T1 | 
11190 | 
6 | 
0 | 
0 | 
| T2 | 
2123 | 
11 | 
0 | 
0 | 
| T3 | 
17514 | 
54 | 
0 | 
0 | 
| T7 | 
19118 | 
53 | 
0 | 
0 | 
| T8 | 
4402 | 
29 | 
0 | 
0 | 
| T9 | 
4657 | 
22 | 
0 | 
0 | 
| T10 | 
9967 | 
4 | 
0 | 
0 | 
| T11 | 
2497 | 
13 | 
0 | 
0 | 
| T12 | 
42565 | 
49 | 
0 | 
0 | 
| T13 | 
35094 | 
30 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2530191 | 
0 | 
0 | 
| T1 | 
11190 | 
19 | 
0 | 
0 | 
| T2 | 
2123 | 
14 | 
0 | 
0 | 
| T3 | 
17514 | 
160 | 
0 | 
0 | 
| T7 | 
19118 | 
206 | 
0 | 
0 | 
| T8 | 
4402 | 
69 | 
0 | 
0 | 
| T9 | 
4657 | 
47 | 
0 | 
0 | 
| T10 | 
9967 | 
37 | 
0 | 
0 | 
| T11 | 
2497 | 
17 | 
0 | 
0 | 
| T12 | 
42565 | 
265 | 
0 | 
0 | 
| T13 | 
35094 | 
165 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_48
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_48
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T2,T3,T8 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T7,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_48
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
299986 | 
0 | 
0 | 
| T1 | 
11190 | 
5 | 
0 | 
0 | 
| T2 | 
2123 | 
7 | 
0 | 
0 | 
| T3 | 
17514 | 
19 | 
0 | 
0 | 
| T7 | 
19118 | 
49 | 
0 | 
0 | 
| T8 | 
4402 | 
38 | 
0 | 
0 | 
| T9 | 
4657 | 
31 | 
0 | 
0 | 
| T10 | 
9967 | 
6 | 
0 | 
0 | 
| T11 | 
2497 | 
8 | 
0 | 
0 | 
| T12 | 
42565 | 
38 | 
0 | 
0 | 
| T13 | 
35094 | 
30 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
368679 | 
0 | 
0 | 
| T1 | 
11190 | 
6 | 
0 | 
0 | 
| T2 | 
2123 | 
14 | 
0 | 
0 | 
| T3 | 
17514 | 
25 | 
0 | 
0 | 
| T7 | 
19118 | 
38 | 
0 | 
0 | 
| T8 | 
4402 | 
40 | 
0 | 
0 | 
| T9 | 
4657 | 
30 | 
0 | 
0 | 
| T10 | 
9967 | 
6 | 
0 | 
0 | 
| T11 | 
2497 | 
5 | 
0 | 
0 | 
| T12 | 
42565 | 
69 | 
0 | 
0 | 
| T13 | 
35094 | 
40 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2228747 | 
0 | 
0 | 
| T1 | 
11190 | 
24 | 
0 | 
0 | 
| T2 | 
2123 | 
20 | 
0 | 
0 | 
| T3 | 
17514 | 
176 | 
0 | 
0 | 
| T7 | 
19118 | 
234 | 
0 | 
0 | 
| T8 | 
4402 | 
76 | 
0 | 
0 | 
| T9 | 
4657 | 
59 | 
0 | 
0 | 
| T10 | 
9967 | 
75 | 
0 | 
0 | 
| T11 | 
2497 | 
13 | 
0 | 
0 | 
| T12 | 
42565 | 
310 | 
0 | 
0 | 
| T13 | 
35094 | 
119 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_49
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_49
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T8,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T7,T10,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_49
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
317337 | 
0 | 
0 | 
| T1 | 
11190 | 
1 | 
0 | 
0 | 
| T2 | 
2123 | 
11 | 
0 | 
0 | 
| T3 | 
17514 | 
23 | 
0 | 
0 | 
| T7 | 
19118 | 
21 | 
0 | 
0 | 
| T8 | 
4402 | 
48 | 
0 | 
0 | 
| T9 | 
4657 | 
24 | 
0 | 
0 | 
| T10 | 
9967 | 
3 | 
0 | 
0 | 
| T11 | 
2497 | 
5 | 
0 | 
0 | 
| T12 | 
42565 | 
52 | 
0 | 
0 | 
| T13 | 
35094 | 
43 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
389548 | 
0 | 
0 | 
| T1 | 
11190 | 
7 | 
0 | 
0 | 
| T2 | 
2123 | 
8 | 
0 | 
0 | 
| T3 | 
17514 | 
11 | 
0 | 
0 | 
| T7 | 
19118 | 
26 | 
0 | 
0 | 
| T8 | 
4402 | 
36 | 
0 | 
0 | 
| T9 | 
4657 | 
24 | 
0 | 
0 | 
| T10 | 
9967 | 
13 | 
0 | 
0 | 
| T11 | 
2497 | 
7 | 
0 | 
0 | 
| T12 | 
42565 | 
50 | 
0 | 
0 | 
| T13 | 
35094 | 
32 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2697880 | 
0 | 
0 | 
| T1 | 
11190 | 
8 | 
0 | 
0 | 
| T2 | 
2123 | 
18 | 
0 | 
0 | 
| T3 | 
17514 | 
126 | 
0 | 
0 | 
| T7 | 
19118 | 
142 | 
0 | 
0 | 
| T8 | 
4402 | 
79 | 
0 | 
0 | 
| T9 | 
4657 | 
48 | 
0 | 
0 | 
| T10 | 
9967 | 
29 | 
0 | 
0 | 
| T11 | 
2497 | 
12 | 
0 | 
0 | 
| T12 | 
42565 | 
298 | 
0 | 
0 | 
| T13 | 
35094 | 
158 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_50
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_50
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T8,T7 | 
| 1 | 0 | 1 | Covered | T2,T3,T8 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T7,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_50
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
278024 | 
0 | 
0 | 
| T1 | 
11190 | 
4 | 
0 | 
0 | 
| T2 | 
2123 | 
7 | 
0 | 
0 | 
| T3 | 
17514 | 
23 | 
0 | 
0 | 
| T7 | 
19118 | 
30 | 
0 | 
0 | 
| T8 | 
4402 | 
51 | 
0 | 
0 | 
| T9 | 
4657 | 
33 | 
0 | 
0 | 
| T10 | 
9967 | 
3 | 
0 | 
0 | 
| T11 | 
2497 | 
12 | 
0 | 
0 | 
| T12 | 
42565 | 
40 | 
0 | 
0 | 
| T13 | 
35094 | 
39 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
339386 | 
0 | 
0 | 
| T1 | 
11190 | 
3 | 
0 | 
0 | 
| T2 | 
2123 | 
9 | 
0 | 
0 | 
| T3 | 
17514 | 
21 | 
0 | 
0 | 
| T7 | 
19118 | 
38 | 
0 | 
0 | 
| T8 | 
4402 | 
49 | 
0 | 
0 | 
| T9 | 
4657 | 
25 | 
0 | 
0 | 
| T10 | 
9967 | 
2 | 
0 | 
0 | 
| T11 | 
2497 | 
5 | 
0 | 
0 | 
| T12 | 
42565 | 
66 | 
0 | 
0 | 
| T13 | 
35094 | 
31 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2422791 | 
0 | 
0 | 
| T1 | 
11190 | 
7 | 
0 | 
0 | 
| T2 | 
2123 | 
15 | 
0 | 
0 | 
| T3 | 
17514 | 
171 | 
0 | 
0 | 
| T7 | 
19118 | 
205 | 
0 | 
0 | 
| T8 | 
4402 | 
94 | 
0 | 
0 | 
| T9 | 
4657 | 
58 | 
0 | 
0 | 
| T10 | 
9967 | 
14 | 
0 | 
0 | 
| T11 | 
2497 | 
16 | 
0 | 
0 | 
| T12 | 
42565 | 
359 | 
0 | 
0 | 
| T13 | 
35094 | 
154 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_51
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_51
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_51
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
269814 | 
0 | 
0 | 
| T1 | 
11190 | 
2 | 
0 | 
0 | 
| T2 | 
2123 | 
11 | 
0 | 
0 | 
| T3 | 
17514 | 
31 | 
0 | 
0 | 
| T7 | 
19118 | 
25 | 
0 | 
0 | 
| T8 | 
4402 | 
32 | 
0 | 
0 | 
| T9 | 
4657 | 
29 | 
0 | 
0 | 
| T10 | 
9967 | 
5 | 
0 | 
0 | 
| T11 | 
2497 | 
3 | 
0 | 
0 | 
| T12 | 
42565 | 
78 | 
0 | 
0 | 
| T13 | 
35094 | 
66 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
335402 | 
0 | 
0 | 
| T1 | 
11190 | 
27 | 
0 | 
0 | 
| T2 | 
2123 | 
3 | 
0 | 
0 | 
| T3 | 
17514 | 
42 | 
0 | 
0 | 
| T7 | 
19118 | 
27 | 
0 | 
0 | 
| T8 | 
4402 | 
36 | 
0 | 
0 | 
| T9 | 
4657 | 
17 | 
0 | 
0 | 
| T10 | 
9967 | 
8 | 
0 | 
0 | 
| T11 | 
2497 | 
8 | 
0 | 
0 | 
| T12 | 
42565 | 
115 | 
0 | 
0 | 
| T13 | 
35094 | 
88 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2647601 | 
0 | 
0 | 
| T1 | 
11190 | 
12 | 
0 | 
0 | 
| T2 | 
2123 | 
12 | 
0 | 
0 | 
| T3 | 
17514 | 
185 | 
0 | 
0 | 
| T7 | 
19118 | 
211 | 
0 | 
0 | 
| T8 | 
4402 | 
65 | 
0 | 
0 | 
| T9 | 
4657 | 
46 | 
0 | 
0 | 
| T10 | 
9967 | 
61 | 
0 | 
0 | 
| T11 | 
2497 | 
11 | 
0 | 
0 | 
| T12 | 
42565 | 
464 | 
0 | 
0 | 
| T13 | 
35094 | 
193 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_52
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_52
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T2,T3,T8 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T7,T12,T14 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_52
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
271066 | 
0 | 
0 | 
| T1 | 
11190 | 
6 | 
0 | 
0 | 
| T2 | 
2123 | 
5 | 
0 | 
0 | 
| T3 | 
17514 | 
44 | 
0 | 
0 | 
| T7 | 
19118 | 
19 | 
0 | 
0 | 
| T8 | 
4402 | 
36 | 
0 | 
0 | 
| T9 | 
4657 | 
27 | 
0 | 
0 | 
| T10 | 
9967 | 
21 | 
0 | 
0 | 
| T11 | 
2497 | 
5 | 
0 | 
0 | 
| T12 | 
42565 | 
28 | 
0 | 
0 | 
| T13 | 
35094 | 
42 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
345274 | 
0 | 
0 | 
| T1 | 
11190 | 
3 | 
0 | 
0 | 
| T2 | 
2123 | 
10 | 
0 | 
0 | 
| T3 | 
17514 | 
15 | 
0 | 
0 | 
| T7 | 
19118 | 
21 | 
0 | 
0 | 
| T8 | 
4402 | 
39 | 
0 | 
0 | 
| T9 | 
4657 | 
28 | 
0 | 
0 | 
| T10 | 
9967 | 
3 | 
0 | 
0 | 
| T11 | 
2497 | 
7 | 
0 | 
0 | 
| T12 | 
42565 | 
44 | 
0 | 
0 | 
| T13 | 
35094 | 
64 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2454230 | 
0 | 
0 | 
| T1 | 
11190 | 
29 | 
0 | 
0 | 
| T2 | 
2123 | 
14 | 
0 | 
0 | 
| T3 | 
17514 | 
131 | 
0 | 
0 | 
| T7 | 
19118 | 
127 | 
0 | 
0 | 
| T8 | 
4402 | 
70 | 
0 | 
0 | 
| T9 | 
4657 | 
53 | 
0 | 
0 | 
| T10 | 
9967 | 
85 | 
0 | 
0 | 
| T11 | 
2497 | 
11 | 
0 | 
0 | 
| T12 | 
42565 | 
221 | 
0 | 
0 | 
| T13 | 
35094 | 
84 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_53
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_53
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_53
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
316592 | 
0 | 
0 | 
| T1 | 
11190 | 
5 | 
0 | 
0 | 
| T2 | 
2123 | 
4 | 
0 | 
0 | 
| T3 | 
17514 | 
12 | 
0 | 
0 | 
| T7 | 
19118 | 
24 | 
0 | 
0 | 
| T8 | 
4402 | 
21 | 
0 | 
0 | 
| T9 | 
4657 | 
29 | 
0 | 
0 | 
| T10 | 
9967 | 
4 | 
0 | 
0 | 
| T11 | 
2497 | 
9 | 
0 | 
0 | 
| T12 | 
42565 | 
58 | 
0 | 
0 | 
| T13 | 
35094 | 
43 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
395584 | 
0 | 
0 | 
| T1 | 
11190 | 
31 | 
0 | 
0 | 
| T2 | 
2123 | 
11 | 
0 | 
0 | 
| T3 | 
17514 | 
24 | 
0 | 
0 | 
| T7 | 
19118 | 
39 | 
0 | 
0 | 
| T8 | 
4402 | 
42 | 
0 | 
0 | 
| T9 | 
4657 | 
24 | 
0 | 
0 | 
| T10 | 
9967 | 
8 | 
0 | 
0 | 
| T11 | 
2497 | 
3 | 
0 | 
0 | 
| T12 | 
42565 | 
38 | 
0 | 
0 | 
| T13 | 
35094 | 
29 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2183632 | 
0 | 
0 | 
| T1 | 
11190 | 
19 | 
0 | 
0 | 
| T2 | 
2123 | 
15 | 
0 | 
0 | 
| T3 | 
17514 | 
136 | 
0 | 
0 | 
| T7 | 
19118 | 
167 | 
0 | 
0 | 
| T8 | 
4402 | 
63 | 
0 | 
0 | 
| T9 | 
4657 | 
53 | 
0 | 
0 | 
| T10 | 
9967 | 
37 | 
0 | 
0 | 
| T11 | 
2497 | 
11 | 
0 | 
0 | 
| T12 | 
42565 | 
412 | 
0 | 
0 | 
| T13 | 
35094 | 
119 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_54
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_54
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T3,T8,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T7,T12 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_54
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
281860 | 
0 | 
0 | 
| T1 | 
11190 | 
3 | 
0 | 
0 | 
| T2 | 
2123 | 
3 | 
0 | 
0 | 
| T3 | 
17514 | 
12 | 
0 | 
0 | 
| T7 | 
19118 | 
51 | 
0 | 
0 | 
| T8 | 
4402 | 
46 | 
0 | 
0 | 
| T9 | 
4657 | 
22 | 
0 | 
0 | 
| T10 | 
9967 | 
6 | 
0 | 
0 | 
| T11 | 
2497 | 
3 | 
0 | 
0 | 
| T12 | 
42565 | 
38 | 
0 | 
0 | 
| T13 | 
35094 | 
45 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
348108 | 
0 | 
0 | 
| T1 | 
11190 | 
9 | 
0 | 
0 | 
| T2 | 
2123 | 
9 | 
0 | 
0 | 
| T3 | 
17514 | 
18 | 
0 | 
0 | 
| T7 | 
19118 | 
22 | 
0 | 
0 | 
| T8 | 
4402 | 
37 | 
0 | 
0 | 
| T9 | 
4657 | 
30 | 
0 | 
0 | 
| T10 | 
9967 | 
7 | 
0 | 
0 | 
| T11 | 
2497 | 
6 | 
0 | 
0 | 
| T12 | 
42565 | 
59 | 
0 | 
0 | 
| T13 | 
35094 | 
38 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2952910 | 
0 | 
0 | 
| T1 | 
11190 | 
24 | 
0 | 
0 | 
| T2 | 
2123 | 
12 | 
0 | 
0 | 
| T3 | 
17514 | 
95 | 
0 | 
0 | 
| T7 | 
19118 | 
231 | 
0 | 
0 | 
| T8 | 
4402 | 
78 | 
0 | 
0 | 
| T9 | 
4657 | 
52 | 
0 | 
0 | 
| T10 | 
9967 | 
61 | 
0 | 
0 | 
| T11 | 
2497 | 
9 | 
0 | 
0 | 
| T12 | 
42565 | 
361 | 
0 | 
0 | 
| T13 | 
35094 | 
100 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_55
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_55
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T7 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T7,T10 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_55
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
263834 | 
0 | 
0 | 
| T1 | 
11190 | 
13 | 
0 | 
0 | 
| T2 | 
2123 | 
4 | 
0 | 
0 | 
| T3 | 
17514 | 
19 | 
0 | 
0 | 
| T7 | 
19118 | 
26 | 
0 | 
0 | 
| T8 | 
4402 | 
28 | 
0 | 
0 | 
| T9 | 
4657 | 
26 | 
0 | 
0 | 
| T10 | 
9967 | 
2 | 
0 | 
0 | 
| T11 | 
2497 | 
9 | 
0 | 
0 | 
| T12 | 
42565 | 
52 | 
0 | 
0 | 
| T13 | 
35094 | 
34 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
325259 | 
0 | 
0 | 
| T1 | 
11190 | 
8 | 
0 | 
0 | 
| T2 | 
2123 | 
4 | 
0 | 
0 | 
| T3 | 
17514 | 
30 | 
0 | 
0 | 
| T7 | 
19118 | 
52 | 
0 | 
0 | 
| T8 | 
4402 | 
36 | 
0 | 
0 | 
| T9 | 
4657 | 
27 | 
0 | 
0 | 
| T10 | 
9967 | 
16 | 
0 | 
0 | 
| T11 | 
2497 | 
7 | 
0 | 
0 | 
| T12 | 
42565 | 
41 | 
0 | 
0 | 
| T13 | 
35094 | 
20 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
2567106 | 
0 | 
0 | 
| T1 | 
11190 | 
48 | 
0 | 
0 | 
| T2 | 
2123 | 
8 | 
0 | 
0 | 
| T3 | 
17514 | 
143 | 
0 | 
0 | 
| T7 | 
19118 | 
250 | 
0 | 
0 | 
| T8 | 
4402 | 
63 | 
0 | 
0 | 
| T9 | 
4657 | 
53 | 
0 | 
0 | 
| T10 | 
9967 | 
29 | 
0 | 
0 | 
| T11 | 
2497 | 
15 | 
0 | 
0 | 
| T12 | 
42565 | 
344 | 
0 | 
0 | 
| T13 | 
35094 | 
79 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_56
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 18 | 18 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         2/2              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        2/2              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        2/2              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        2/2              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        2/2              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        2/2              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        2/2              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_56
 | Total | Covered | Percent | 
| Conditions | 22 | 20 | 90.91 | 
| Logical | 22 | 20 | 90.91 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------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       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Not Covered |  | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T7,T12,T13 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Not Covered |  | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_56
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
305076 | 
0 | 
0 | 
| T1 | 
11190 | 
2 | 
0 | 
0 | 
| T2 | 
2123 | 
6 | 
0 | 
0 | 
| T3 | 
17514 | 
28 | 
0 | 
0 | 
| T7 | 
19118 | 
27 | 
0 | 
0 | 
| T8 | 
4402 | 
34 | 
0 | 
0 | 
| T9 | 
4657 | 
25 | 
0 | 
0 | 
| T10 | 
9967 | 
4 | 
0 | 
0 | 
| T11 | 
2497 | 
10 | 
0 | 
0 | 
| T12 | 
42565 | 
42 | 
0 | 
0 | 
| T13 | 
35094 | 
42 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
384681 | 
0 | 
0 | 
| T1 | 
11190 | 
4 | 
0 | 
0 | 
| T2 | 
2123 | 
5 | 
0 | 
0 | 
| T3 | 
17514 | 
33 | 
0 | 
0 | 
| T7 | 
19118 | 
40 | 
0 | 
0 | 
| T8 | 
4402 | 
38 | 
0 | 
0 | 
| T9 | 
4657 | 
28 | 
0 | 
0 | 
| T10 | 
9967 | 
28 | 
0 | 
0 | 
| T11 | 
2497 | 
5 | 
0 | 
0 | 
| T12 | 
42565 | 
86 | 
0 | 
0 | 
| T13 | 
35094 | 
35 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
1972496 | 
0 | 
0 | 
| T1 | 
11190 | 
14 | 
0 | 
0 | 
| T2 | 
2123 | 
10 | 
0 | 
0 | 
| T3 | 
17514 | 
126 | 
0 | 
0 | 
| T7 | 
19118 | 
214 | 
0 | 
0 | 
| T8 | 
4402 | 
67 | 
0 | 
0 | 
| T9 | 
4657 | 
51 | 
0 | 
0 | 
| T10 | 
9967 | 
45 | 
0 | 
0 | 
| T11 | 
2497 | 
14 | 
0 | 
0 | 
| T12 | 
42565 | 
337 | 
0 | 
0 | 
| T13 | 
35094 | 
170 | 
0 | 
0 | 
 
Line Coverage for Instance : tb.dut.u_sm1_30
 | Line No. | Total | Covered | Percent | 
| TOTAL |  | 25 | 25 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 96 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 105 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 108 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 163 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 166 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 212 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 213 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 231 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 236 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 238 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
| CONT_ASSIGN | 242 | 1 | 1 | 100.00 | 
95                          assign reqid_sub = i;   // can cause conversion error?
96         3/3              assign shifted_id = {
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
97                            tl_h_i[i].a_source[0+:(IDW-STIDW)],
98                            reqid_sub
99                          };
100                     
101                       `ASSERT(idInRange, tl_h_i[i].a_valid |-> tl_h_i[i].a_source[IDW-1 -:STIDW] == '0)
102                     
103                         // assign not connected bits to nc_* signal to make lint happy
104                         logic [IDW-1 : IDW-STIDW] unused_tl_h_source;
105        3/3              assign unused_tl_h_source = tl_h_i[i].a_source[IDW-1 -: STIDW];
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
106                     
107                         // Put shifted ID
108        3/3              assign hreq_fifo_i = '{
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
109                           a_valid:    tl_h_i[i].a_valid,
110                           a_opcode:   tl_h_i[i].a_opcode,
111                           a_param:    tl_h_i[i].a_param,
112                           a_size:     tl_h_i[i].a_size,
113                           a_source:   shifted_id,
114                           a_address:  tl_h_i[i].a_address,
115                           a_mask:     tl_h_i[i].a_mask,
116                           a_data:     tl_h_i[i].a_data,
117                           a_user:     tl_h_i[i].a_user,
118                           d_ready:    tl_h_i[i].d_ready
119                         };
120                     
121                         tlul_fifo_sync #(
122                           .ReqPass    (HReqPass[i]),
123                           .RspPass    (HRspPass[i]),
124                           .ReqDepth   (HReqDepth[i*4+:4]),
125                           .RspDepth   (HRspDepth[i*4+:4]),
126                           .SpareReqW  (1)
127                         ) u_hostfifo (
128                           .clk_i,
129                           .rst_ni,
130                           .tl_h_i      (hreq_fifo_i),
131                           .tl_h_o      (tl_h_o[i]),
132                           .tl_d_o      (hreq_fifo_o[i]),
133                           .tl_d_i      (hrsp_fifo_i[i]),
134                           .spare_req_i (1'b0),
135                           .spare_req_o (),
136                           .spare_rsp_i (1'b0),
137                           .spare_rsp_o ()
138                         );
139                       end
140                     
141                       // Device Req/Rsp FIFO
142                       tlul_fifo_sync #(
143                         .ReqPass    (DReqPass),
144                         .RspPass    (DRspPass),
145                         .ReqDepth   (DReqDepth),
146                         .RspDepth   (DRspDepth),
147                         .SpareReqW  (1)
148                       ) u_devicefifo (
149                         .clk_i,
150                         .rst_ni,
151                         .tl_h_i      (dreq_fifo_i),
152                         .tl_h_o      (drsp_fifo_o),
153                         .tl_d_o      (tl_d_o),
154                         .tl_d_i      (tl_d_i),
155                         .spare_req_i (1'b0),
156                         .spare_req_o (),
157                         .spare_rsp_i (1'b0),
158                         .spare_rsp_o ()
159                       );
160                     
161                       // Request Arbiter
162                       for (genvar i = 0 ; i < M ; i++) begin : gen_arbreqgnt
163        3/3              assign hrequest[i] = hreq_fifo_o[i].a_valid;
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
164                       end
165                     
166        1/1            assign arb_ready = drsp_fifo_o.a_ready;
           Tests:       T1 T2 T3 
167                     
168                       if (tlul_pkg::ArbiterImpl == "PPC") begin : gen_arb_ppc
169                         prim_arbiter_ppc #(
170                           .N          (M),
171                           .DW         ($bits(tlul_pkg::tl_h2d_t))
172                         ) u_reqarb (
173                           .clk_i,
174                           .rst_ni,
175                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
176                           .req_i     ( hrequest    ),
177                           .data_i    ( hreq_fifo_o ),
178                           .gnt_o     ( hgrant      ),
179                           .idx_o     (             ),
180                           .valid_o   ( arb_valid   ),
181                           .data_o    ( arb_data    ),
182                           .ready_i   ( arb_ready   )
183                         );
184                       end else if (tlul_pkg::ArbiterImpl == "BINTREE") begin : gen_tree_arb
185                         prim_arbiter_tree #(
186                           .N          (M),
187                           .DW         ($bits(tlul_pkg::tl_h2d_t))
188                         ) u_reqarb (
189                           .clk_i,
190                           .rst_ni,
191                           .req_chk_i ( 1'b0        ), // TL-UL allows dropping valid without ready. See #3354.
192                           .req_i     ( hrequest    ),
193                           .data_i    ( hreq_fifo_o ),
194                           .gnt_o     ( hgrant      ),
195                           .idx_o     (             ),
196                           .valid_o   ( arb_valid   ),
197                           .data_o    ( arb_data    ),
198                           .ready_i   ( arb_ready   )
199                         );
200                       end else begin : gen_unknown
201                         `ASSERT_INIT(UnknownArbImpl_A, 0)
202                       end
203                     
204                       logic [  M-1:0] hfifo_rspvalid;
205                       logic [  M-1:0] dfifo_rspready;
206                       logic [IDW-1:0] hfifo_rspid;
207                       logic dfifo_rspready_merged;
208                     
209                       // arb_data --> dreq_fifo_i
210                       //   dreq_fifo_i.hd_rspready <= dfifo_rspready
211                     
212        1/1            assign dfifo_rspready_merged = |dfifo_rspready;
           Tests:       T1 T2 T3 
213        1/1            assign dreq_fifo_i = '{
           Tests:       T1 T2 T3 
214                         a_valid:   arb_valid,
215                         a_opcode:  arb_data.a_opcode,
216                         a_param:   arb_data.a_param,
217                         a_size:    arb_data.a_size,
218                         a_source:  arb_data.a_source,
219                         a_address: arb_data.a_address,
220                         a_mask:    arb_data.a_mask,
221                         a_data:    arb_data.a_data,
222                         a_user:    arb_data.a_user,
223                     
224                         d_ready:   dfifo_rspready_merged
225                       };
226                     
227                       // Response ID steering
228                       // drsp_fifo_o --> hrsp_fifo_i[i]
229                     
230                       // Response ID shifting before put into host fifo
231        1/1            assign hfifo_rspid = {
           Tests:       T1 T2 T3 
232                         {STIDW{1'b0}},
233                         drsp_fifo_o.d_source[IDW-1:STIDW]
234                       };
235                       for (genvar i = 0 ; i < M ; i++) begin : gen_idrouting
236        3/3              assign hfifo_rspvalid[i] = drsp_fifo_o.d_valid &
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
237                                                    (drsp_fifo_o.d_source[0+:STIDW] == i);
238        3/3              assign dfifo_rspready[i] = hreq_fifo_o[i].d_ready                &
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
239                                                    (drsp_fifo_o.d_source[0+:STIDW] == i) &
240                                                   drsp_fifo_o.d_valid;
241                     
242        3/3              assign hrsp_fifo_i[i] = '{
           Tests:       T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
Cond Coverage for Instance : tb.dut.u_sm1_30
 | Total | Covered | Percent | 
| Conditions | 33 | 33 | 100.00 | 
| Logical | 33 | 33 | 100.00 | 
| Non-Logical | 0 | 0 |  | 
| Event | 0 | 0 |  | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 0))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T3,T8,T12 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 1))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T3,T8,T12 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       236
 EXPRESSION (drsp_fifo_o.d_valid & (drsp_fifo_o.d_source[0+:STIDW] == 2))
             ---------1---------   ------------------2------------------
| -1- | -2- | Status | Tests |                       
| 0 | 1 | Covered | T3,T8,T12 | 
| 1 | 0 | Covered | T1,T2,T3 | 
| 1 | 1 | Covered | T1,T2,T3 | 
 LINE       236
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 2)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[0].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 0) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T9 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T3,T8,T12 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 0)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[1].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 1) & drsp_fifo_o.d_valid)
             -----------1----------   ------------------2------------------   ---------3---------
| -1- | -2- | -3- | Status | Tests |                       
| 0 | 1 | 1 | Covered | T1,T3,T8 | 
| 1 | 0 | 1 | Covered | T1,T2,T3 | 
| 1 | 1 | 0 | Covered | T3,T8,T12 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 1)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
 LINE       238
 EXPRESSION (hreq_fifo_o[2].d_ready & (drsp_fifo_o.d_source[0+:STIDW] == 2) & drsp_fifo_o.d_valid)
             -----------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,T8,T12 | 
| 1 | 1 | 1 | Covered | T1,T2,T3 | 
 LINE       238
 SUB-EXPRESSION (drsp_fifo_o.d_source[0+:STIDW] == 2)
                ------------------1------------------
| -1- | Status | Tests |                       
| 0 | Covered | T1,T2,T3 | 
| 1 | Covered | T1,T2,T3 | 
Assert Coverage for Instance : tb.dut.u_sm1_30
Assertion Details
gen_host_fifo[0].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
7354038 | 
0 | 
0 | 
| T1 | 
11190 | 
389 | 
0 | 
0 | 
| T2 | 
2123 | 
50 | 
0 | 
0 | 
| T3 | 
17514 | 
1178 | 
0 | 
0 | 
| T7 | 
19118 | 
1257 | 
0 | 
0 | 
| T8 | 
4402 | 
218 | 
0 | 
0 | 
| T9 | 
4657 | 
148 | 
0 | 
0 | 
| T10 | 
9967 | 
332 | 
0 | 
0 | 
| T11 | 
2497 | 
44 | 
0 | 
0 | 
| T12 | 
42565 | 
1584 | 
0 | 
0 | 
| T13 | 
35094 | 
1484 | 
0 | 
0 | 
gen_host_fifo[1].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
1367734 | 
0 | 
0 | 
| T1 | 
11190 | 
40 | 
0 | 
0 | 
| T2 | 
2123 | 
1 | 
0 | 
0 | 
| T3 | 
17514 | 
130 | 
0 | 
0 | 
| T7 | 
19118 | 
214 | 
0 | 
0 | 
| T8 | 
4402 | 
36 | 
0 | 
0 | 
| T9 | 
4657 | 
24 | 
0 | 
0 | 
| T10 | 
9967 | 
22 | 
0 | 
0 | 
| T11 | 
2497 | 
6 | 
0 | 
0 | 
| T12 | 
42565 | 
282 | 
0 | 
0 | 
| T13 | 
35094 | 
227 | 
0 | 
0 | 
gen_host_fifo[2].idInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
1369246 | 
0 | 
0 | 
| T1 | 
11190 | 
79 | 
0 | 
0 | 
| T2 | 
2123 | 
8 | 
0 | 
0 | 
| T3 | 
17514 | 
158 | 
0 | 
0 | 
| T7 | 
19118 | 
228 | 
0 | 
0 | 
| T8 | 
4402 | 
37 | 
0 | 
0 | 
| T9 | 
4657 | 
29 | 
0 | 
0 | 
| T10 | 
9967 | 
76 | 
0 | 
0 | 
| T11 | 
2497 | 
6 | 
0 | 
0 | 
| T12 | 
42565 | 
389 | 
0 | 
0 | 
| T13 | 
35094 | 
367 | 
0 | 
0 | 
maxM
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
900 | 
900 | 
0 | 
0 | 
| T1 | 
1 | 
1 | 
0 | 
0 | 
| T2 | 
1 | 
1 | 
0 | 
0 | 
| T3 | 
1 | 
1 | 
0 | 
0 | 
| T7 | 
1 | 
1 | 
0 | 
0 | 
| T8 | 
1 | 
1 | 
0 | 
0 | 
| T9 | 
1 | 
1 | 
0 | 
0 | 
| T10 | 
1 | 
1 | 
0 | 
0 | 
| T11 | 
1 | 
1 | 
0 | 
0 | 
| T12 | 
1 | 
1 | 
0 | 
0 | 
| T13 | 
1 | 
1 | 
0 | 
0 | 
rspIdInRange
| Name | Attempts | Real Successes | Failures | Incomplete | 
| Total | 
260875270 | 
12176027 | 
0 | 
0 | 
| T1 | 
11190 | 
368 | 
0 | 
0 | 
| T2 | 
2123 | 
59 | 
0 | 
0 | 
| T3 | 
17514 | 
877 | 
0 | 
0 | 
| T7 | 
19118 | 
1419 | 
0 | 
0 | 
| T8 | 
4402 | 
290 | 
0 | 
0 | 
| T9 | 
4657 | 
201 | 
0 | 
0 | 
| T10 | 
9967 | 
356 | 
0 | 
0 | 
| T11 | 
2497 | 
56 | 
0 | 
0 | 
| T12 | 
42565 | 
1864 | 
0 | 
0 | 
| T13 | 
35094 | 
861 | 
0 | 
0 |