`ifndef link_driver
`define link_driver
`include "link_if.sv"
`include"link_trans.sv"
class link_driver;
virtual link_if.DR wif;
link_trans data2duv;
mailbox#(link_trans) gen2dr;
function new( virtual link_if.DR wif,
mailbox#(link_trans) gen2dr);
this.wif=wif;
this.gen2dr=gen2dr;
this.data2duv=new;
endfunction
virtual task drive();
@(wif.dr_cb);
begin
wif.dr_cb.LINKUP<=data2duv.LINKUP;
wif.dr_cb.RX_DATA_IN<=data2duv.RX_DATA_IN;
wif.dr_cb.ALIGN_COUNT<=data2duv.ALIGN_COUNT;
$display("DATA DERIVED BY DRIVER_CB1");
@(wif.dr_cb1);
wif.dr_cb1.TX_DATA_IN_DW<=data2duv.TX_DATA_IN_DW;
wif.dr_cb1.PMREQ_P_T<=data2duv.PMREQ_P_T;
wif.dr_cb1.PMREQ_S_T<=data2duv.PMREQ_S_T;
wif.dr_cb1.PM_EN<=data2duv.PM_EN;
wif.dr_cb1.DATA_RDY_T<=data2duv.DATA_RDY_T;
wif.dr_cb1.ESCAPECF_T<=data2duv.ESCAPECF_T;
wif.dr_cb1.FRAME_END_T<=data2duv.FRAME_END_T;
wif.dr_cb1.DECERR<=data2duv.DECERR;
wif.dr_cb1.RX_FIFO_RDY<=data2duv.RX_FIFO_RDY;
wif.dr_cb1.FIS_ERR<=data2duv.FIS_ERR;
wif.dr_cb1.GOOD_STATUS_T<=data2duv.GOOD_STATUS_T;
wif.dr_cb1.UNRECGNZD_FIS_T<=data2duv.UNRECGNZD_FIS_T;
wif.dr_cb1.TX_TERMN_T_I<=data2duv.TX_TERMN_T_I;
wif.dr_cb1.TX_RDY_T<=data2duv.TX_RDY_T;
$display("DATA DERIVED BY DRIVER_CB2");
end
endtask
virtual task start();
fork
forever
begin
gen2dr.get(data2duv);
drive();
end
join_none
endtask
endclass
`endif
In reply to uvm_verification:
It may be due to the get method. get is blocking method. it block the call until it can retrieve one message from the mailbox.
Put the display statement to check the get method is finished or not.
forever
begin
gen2dr.get(data2duv);
$display("received the data, Now calling to drive ");
drive();
end
Thanks Sir,
i got the issue .
In reply to Rahulkumar:
sir in another module i gut same isssue and i forgot how to resolve this issue in previous module please tell me.
In reply to uvm_verification:
In reply to Rahulkumar:
sir in another module i gut same isssue and i forgot how to resolve this issue in previous module please tell me.
can you share detail of issue ?