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