@@ -254,6 +254,9 @@ class model_ptc#(RQ_REGIONS, DMA_PORTS, ITEM_WIDTH) extends uvm_component;
254
254
dma_tr.completed = completed;
255
255
dma_tr.tag = dma_info.tag;
256
256
dma_tr.unit_id = dma_info.unit_id;
257
+ if (DMA_PORTS > 1 ) begin
258
+ dma_tr.unit_id[$clog2 (DMA_PORTS )- 1 : 0 ] = 0 ;
259
+ end
257
260
dma_tr.data = pcie_tr.data;
258
261
`uvm_info (this .get_full_name (), $sformatf (" \n DMA RC PORT %0d %s " , dma_info.port, dma_tr.convert2string ()), UVM_FULL );
259
262
@@ -268,6 +271,7 @@ class model_ptc#(RQ_REGIONS, DMA_PORTS, ITEM_WIDTH) extends uvm_component;
268
271
int unsigned rq_tr_tmp;
269
272
270
273
forever begin
274
+ logic [uvm_ptc_info :: sequence_item :: DMA_REQUEST_UNITID_W - 1 : 0 ] unitid;
271
275
dma_rq[dma].get (rq_tr);
272
276
273
277
rsp_tr = uvm_pcie :: request_header :: type_id :: create (" rsp_tr" , this );
@@ -279,7 +283,6 @@ class model_ptc#(RQ_REGIONS, DMA_PORTS, ITEM_WIDTH) extends uvm_component;
279
283
rsp_tr.fmt = { 1'b0 , rq_tr.hdr.type_ide, rq_tr.hdr.global_id[64 - 1 : 0 ] != 32'b0 ? 1'b1 : 1'b0 } ;
280
284
rsp_tr.pcie_type = 5'b0 ;
281
285
282
- // rq_tr.hdr.unitid // NOT USED
283
286
284
287
`uvm_info (this .get_full_name (), $sformatf (" \n GET DMA RX [%0d ] TRANSACTION %0d %s " , dma, rq_tr_tmp, rq_tr.convert2string ()), UVM_FULL );
285
288
@@ -294,7 +297,12 @@ class model_ptc#(RQ_REGIONS, DMA_PORTS, ITEM_WIDTH) extends uvm_component;
294
297
rsp_tr.length = rq_tr.hdr.length;
295
298
rsp_tr.data = rq_tr.hdr.type_ide == 1'b1 ? rq_tr.data : {} ;
296
299
rsp_tr.requester_id = { 8'b0 , rq_tr.hdr.vfid} ;
297
- tags.get_dma2pcie (rq_tr.hdr.type_ide, dma, rq_tr.hdr.tag, rq_tr.hdr.unitid, rsp_tr.tag);
300
+ unitid = rq_tr.hdr.unitid;
301
+ if (DMA_PORTS > 1 ) begin
302
+ unitid[$clog2 (DMA_PORTS )- 1 : 0 ] = dma;
303
+ end
304
+
305
+ tags.get_dma2pcie (rq_tr.hdr.type_ide, dma, rq_tr.hdr.tag, unitid, rsp_tr.tag);
298
306
case (rq_tr.hdr.lastib)
299
307
0 : rsp_tr.lbe = 4'b1111 ;
300
308
1 : rsp_tr.lbe = 4'b0111 ;
0 commit comments