以MCDF寄存器模型为例:
//控制寄存器
class ctrl_reg extends uvm_reg;
`uvm_object_utils(ctrl_reg)
uvm_reg_field reserved; //表示一个名为reserved的uv_reg_field类型变量,没有rand是因为该域是保留位,不参与读写
rand uvm_reg_field pkt_len;
rand uvm_reg_field prio_level;
rand uvm_reg_field chnl_en;
function new(string name="ctrl_reg");//uvm_reg继承于object
super.new(name);
endfunction
virtual function build();//object没有build_phase,只有component才有build_phase
//创建
reserved=uvm_reg_field::type_id::create("reserved");
pkt_len=uvm_reg_field::type_id::create("pkt_en");
prio_level=uvm_reg_field::type_id::create("prio_level");
chnl_en=uvm_reg_field::type_id::create("chnl_en");
//配置
reserved.configure(this,26,6,"ro",0,26'h0,1,0,0); //这里的configure是uvm_reg_field中的configure,后附说明
pkt_len.configure(this,3,3,"rw",0,3'h0,1,1,0);
prio_level.configure(