Register model use problem

Hi,all
I am using the write_reg method of the register model, and the data can be seen on the output interface, but the write_reg cannot be terminated and the subsequent code(read_reg) cannot be executed. What is the reason?
here are some ref code:
(1)class reg_read_write_sequence extends uvm_reg_sequence;
xxx_rgm m_rgm;
uvm_declare_p_sequencer(xxx_vsqr) uvm_object_utils(reg_read_write_sequence)
function new(string name = “reg_read_write_sequence”);
super.new(name);
endfunction

task body();
    uvm_status_e status;
    uvm_reg_data_t data;
    m_rgm = p_sequencer.m_rgm; 
    `uvm_info("apb body", "Entered ...", UVM_LOW)
       write_reg(m_rgm.xxx, status, 'h3, UVM_FRONTDOOR); 
       read_reg(m_rgm.xxx, status, data, UVM_FRONTDOOR);
    `uvm_info("apb body", "Exiting ...", UVM_LOW)
endtask

endclass:reg_read_write_sequence
(2)reg_read_write_sequence is organized by virtual sequence,
class xxx_virtual_seq extends uvm_sequence;


reg_read_write_sequence reg_seq;
vitual task body();
fork
`uvm_do(reg_seq) //dont stop ???
join
endtask
endclass

In reply to yangbo:

Could you check the bus driver’s code? Is it invoking item_done() after successful driving on an interface?
That could be one of the blocking points.

In reply to mitesh.patel:

In reply to yangbo:
Could you check the bus driver’s code? Is it invoking item_done() after successful driving on an interface?
That could be one of the blocking points.

thank you for your reply,but item_done(rsp) is invoked.In adapter,provides_response = 1 is also invoked.
reference code are listed below:
task xxx_apb_driver::run_phase(uvm_phase phase);
uvm_info(get_full_name(),"run_phase begin...", UVM_LOW) @(posedge m_vif.rst_n); reset(); @(m_vif.drv_cb); while (1) begin seq_item_port.get_next_item(req); case(req.trans_kind) WRITE:drive_one_trans(req); READ :do_read(req); POLL :do_poll(req); IDLE :do_idle(req); endcase assert($cast(rsp,req.clone())); rsp.set_sequence_id(req.get_sequence_id()); rsp.set_transaction_id(req.get_transaction_id()); seq_item_port.item_done(rsp); end uvm_info(get_full_name(),“run_phase end…”, UVM_LOW)
endtask : run_phase