In reply to rag123:
Your problem is in the driver code. See here:
@(posedge vif.rst_n);
forever begin
if (!vif.rst_n) begin
vif.pwdata <=0;
vif.paddr <= 0;
vif.pwrite <=0;
// vif.hsize <= 0;
// vif.htrans <= 0;
vif.psel <=0;
vif.pstrb <=0;
`uvm_info ("driver","Entering here",UVM_NONE);
if(tr != null) begin
tr.status = UVM_TLM_INCOMPLETE_RESPONSE;
seq_item_port.item_done();
I see 2 problems here:
(1) You are synchronizing on the rising edbe of rst_n (reset comes out of reset). And you are continuing by checking if vif.rst_n is low
if (!vif.rst_n) begin
This should not happen, because after the rising edge of rst_n the signal is high.
(2) In this reset branch you are doing a
seq_item_port.item_done();
without a
seq_item_port.get_next_item(..);
This is reported by your simulator.