流程:参考模型调用寄存器模型的读任务。
· 寄存器模型产生sequence, 并产生uvm_reg_item: rw。(此处的sequence不需要另外定义)
· 产生driver能够接受的transaction: bus_req=adapter.reg2bus(rw) 。
· 把bus_req交给bus_sequencer。
· driver得到bus_req后驱动它, 得到读取的值, 并将读取值放入bus_req中, 调用item_done。
· 寄存器模型调用adapter.bus2reg(bus_req, rw) 将bus_req中的读取值传递给rw。
· 将rw中的读数据返回参考模型
1 uvm_reg_field 例化在 uvm_reg
class reg_invert extends uvm_reg;
rand uvm_reg_field reg_data;
virtual function void build();
reg_data = uvm_reg_field::type_id::create("reg_data");
// parameter: parent, size, lsb_pos, access, volatile, reset value, has_reset, is_rand, ind