default_map = create_map(“default_map”,0,2,UVM_BIG_ENDINA,0);create_map的第一个参数是名字,第二个参数是该reg block的基地址,第三个参数是寄存器所映射到的总线的宽度(单位是byte,不是bit),第四个参数是大小端,第五个参数表示该寄存器能否按byte寻址。 完成每个寄存器的build及configure操作 uvm_reg...
通常我们执行到1652就会返回我们在register model中设置的default_map,至于其他分支乃至get_default_map里...
最后一步则是将此寄存器加入default_map,add_reg函数的第一个参数是要加入的寄存器,第二个参数是寄存器的地址,这里是16’h9,第三个参数是此寄存器的存取方式 将寄存器模型集成到验证平台中 无论是读或写,寄存器模型都会通过sequence产生一个uvm_reg_bus_op的变量,此变量中存储着操作类型(读还是写)和操作的地址,...
由于我们在本reg_block中只定义了一个map,因此可以直接用get_default_map获取该map,然后对该map设置sequencer和reg_adapter,sequencer其实就是在环境中用于配置寄存器的driver对应的那个sequencer,uvm_reg本质就是通过reg中的write,read等API,将读写请求,数据等通过API启动sequence发送给driver,然后通过driver去驱动interface...
default_path,定义自己的hdl_path, lock,表明当前的model是lock住的,调用function lock_model() 自己的coverage设置,new的时候设置到has_cover,get的时候,得到cover_on。 uvm_reg_sequence,只是实现了调用map中的读写操作,不支持burst_read,burst_write, ...
在connect_phase中,adapter将uvm_reg_map和sequencer连接,实际就是调用set_sequencer给uvm_reg_map中的成员变量m_sequencerm_adapter赋值: functionvoidbase_test::connect_phase(uvm_phase phase); super.connect_phase(phase); ... rm.default_map.set_sequencer(env.bus_agt.sqr, reg_sqr_adapter); rm.defaul...
extern virtualtaskmirror(outputuvm_status_e status,inputuvm_check_e check =UVM_NO_CHECK,inputuvm_path_e path =UVM_DEFAULT_PATH,inputuvm_reg_map map =null,inputuvm_sequence_base parent =null,inputintprior = -1,inputuvm_object extension =null,inputstringfname ="",inputintlineno =0); ...
();default_map=create_map("",0,4,UVM_LITTLE_ENDIAN,0);ctrl=ral_cfg_ctl::type_id::create("ctrl",get_full_name());ctrl.configure(this,null,"");ctrl.build();//HDL path to this instance is tb.DUT.ctrl_reg//Add backdoor access using function add_hdl_path_slice// function void ...
(uvm_phase phase);7mreg_predict=mreg_predictor::type_id::create("mreg_predict",this);8endfunction910virtualfunctionvoid connect_phase(uvm_phase phase);11mreg_predict.map=regmodel.get_default_map();12mreg_predict.adapter=adapter;13regmodel.default_map.set_auto_predict(0);14m_agent.analysis...
uvm_map:不需扩展,存在于uvm_block中;也可以包含子map 寄存器模型API 模拟寄存器行为:如WC模式,写之后会清零。向dut进行write操作,dut中寄存器值为0,寄存器模型中期望值及镜像值也为0;而使用poke,完成后dut中寄存器值为0,但寄存器模型中期望值及镜像值为写入的值 mirror:读取dut的值,将其更新到期望值及镜像值 ...