1taskuvm_reg::read(outputuvm_status_e status,2outputuvm_reg_data_t value,3inputuvm_path_e path =UVM_DEFAULT_PATH,4inputuvm_reg_map map =null,5inputuvm_sequence_base parent =null,6inputintprior = -1,7inputuvm_object extension =null,8inputstringfname ="",9inputintlineno =0);10Xatomi...
functionvoiduvm_reg_block::configure(uvm_reg_block parent=null,stringhdl_path="");this.parent =parent;if(parent !=null)this.parent.add_block(this); add_hdl_path(hdl_path); uvm_resource_db#(uvm_reg_block)::set("uvm_reg::*", get_full_name(),this); endfunction function uvm_reg_blo...
这边仅仅从一个小的方面进行切入,主要研究下我们实际的sequence_item在register model、adapter以及sequencer之间是如何调度传播的,这里选择的切入点就是使用寄存器模型里的寄存器调用write/read方法前门访问时数据包是如何在寄存器模型、adapter、sequencer中传递的,我们自然就联想到了adapter内的两个函数reg2bus和bus2reg。
地址映射add_hdl_path("tb.dut");//添加后门访问需要的路径ra.add_hdl_path_slice(硬件中reg名,0,32);(名,偏移地址,位宽)lock_model();//构建完需要锁住,只有寄存器预测组件可以访问和改变内部,在reg_block索引不到reg内的field //field//结束模型的映射关系endfunctionendclass 集成了register model后需要集...
uvm_reg中为什么没有镜像值和期望值 目录 寄存器模型集成 总线UVC的实现 总线UVC解析 MCDF寄存器设计代码 Adapter的实现 Adapter的集成 访问方式 前门访问 后门访问 前门与后门的比较 前门与后门的混合应用 寄存器模型集成 总线UVC的实现 MCDF访问寄存器的总线接口时序较为简单。控制寄存器接口上首先需要在每个时钟解析cmd...
uvm reg的设计 项目中的reg_model一般只有一份,set到reg_sequence上,所以多个sequence并行启动结束的时候,reg model会成为一个共享资源。 uvm_reg_field中的volatile,主要来设置m_check的变量, m_check,主要用在uvm_reg的mirror task,以及read task,(需要map中配置check_on_read) ...
uvm_reg常⽤的读写⽅式⾸先创建register model ral_model_h;可以使⽤下⾯的⽅式来读写寄存器:uvm_reg temp_reg;uvm_status_e status;$cast(temp_reg, ral_model_h.get_reg_by_name("REG_NAME"));temp_reg.write(status, write_data);temp_reg.read(status,read_data);还可以对寄存器的各...
uvm_reg本质就是通过reg中的write,read等API,将读写请求,数据等通过API启动sequence发送给driver,...
读取的方式可以选择BACKDOOR或者FRONTDOOR。与update类似,每个uvm_reg派生来的类都有mirror操作,每个由uvm_reg_blcok派生出来的类也有mirror操作。mirror操作可以指定是否报告DUT中寄存器的值与register model中镜像值不一样。如果选择了这一项,那么就可以检查某些计数器的值是否DUT中相应计数器的值一致。
寄存器模型中的adapter就是一个适配器,提供了reg2bus和bus2reg的接口,充当uvm_reg_map和uvm_sequencer中的转换器。uvm_reg_map操作uvm_reg_bus_op类型的item,而uvm_sequencer操作uvm_sequence_item类型的item。 adapter 继承uvm_reg_adapter,重写reg2bus和bus2reg这两个pure virtual function。