由于有一大部分通过后门访问仿真的case都是因为hdl path定于不正确导致的,所以遇到这个error我首先会去比对我的bench中和dut中声明这块寄存器的hdl path。 通过add_hdl_path_slice我们可以向寄存器模型中的各个寄存器添加路径信息,在我的base test,这块mem的hdl path是这样定义的: m_addr_map_h.sj_test_mem_cfg_t...
uvm_reg类中也存在add_hdl_path()这么个函数,如图16所示,它不同于uvm_reg_block中往hdl_paths_pool中存放string类型的path值,它往m_hdl_paths_pool键值对中添加uvm_hdl_path_slice数组,这个数组最终会用于产生一个uvm_hdl_path_concat变量concat压到m_hdl_paths_pool对应的值中。图16中UVM源代码通过一个例子...
在reg_field中的task中,基本都调用uvm_reg的task,但是read、write根据是否支持individual可能会调用map中的task。 uvm_reg中还有一些hdl_path的function,add_hdl_path_slice,添加到field的path路径。这些路径,之后在map中会被集成起来。 形成一个full_name。 uvm_reg_frontdoor,从uvm_reg_sequence继承而来,本身是一...
} uvm_hdl_path_slice; typedef uvm_resource_db#(uvm_reg_cvr_t) uvm_reg_cvr_rsrc_db;//---//Group: Enumerations//---//Enum: uvm_status_e///Return status for register operations///UVM_IS_OK - Operation completed successfully//UVM_NOT_OK - Operation completed with error//UVM_HAS_X ...
uvm_reg_sequence::read_reg()/write_reg()。参数path需要指定为UVM_FRONTDOOR; 2. 后门访问 在进行后门访问时,在寄存器模型建立时将各个寄存器映射到了DUT一侧的HDL路径。 uvm_reg_block::add_hdl_path( )将寄存器模型block关联到DUT一端; uvm_reg::add_hdl_path_slice( )将寄存器模型中各个寄存器成员与HDL...
uvm_reg中还有一些hdl_path的function,add_hdl_path_slice,添加到field的path路径。这些路径,之后在map中会被集成起来。 形成一个full_name。 uvm_reg_frontdoor,从uvm_reg_sequence继承而来,本身是一个sequence。 uvm_reg_backdoor,从uvm_object继承而来,本身就是一个object,其中定义了read、write的原型函数。
this.REGNAME.add_hdl_path_slice("REGNAME", 29, 3); Which eventually writes the relevant 3 msb bits to the regname with backdoor access. Would you kindly provide a small example how to achieve such a class command using rdl hdl_path/hdl_path_slice properties ?
源代码中的get_full_hdl_path函数负责获取寄存器的完整HDL路径,这涉及到uvm_hdl_path_concat和uvm_hdl_path_slice等结构,它们用于描述寄存器的物理信息。通过配置或add_hdl_path操作,可以在寄存器模型中存储和管理多个HDL路径,对应不同的寄存器实例。后门读写操作会调用uvm_hdl_read()函数,它是一个...
add_hdl_path(uvm_hdl_path_slice slices[],stringkind="RTL");add_hdl_path_slice(stringname,intoffset,intsize,bitfirst=0,stringkind="RTL");clear_hdl_path(stringkind="RTL"); where thekindargument is used as the key. Note that theadd_hdl_pathtakes a dynamic array ofuvm_hdl_path_slicetha...
例码中通过 uvm_reg_ block: :add_ hdl _path()将寄存器模型关联到了 DUT一端,而通过uvm _reg: :add_ hdl _path_ slice 完成了将寄存器模型各个寄存器成员与 HDL一侧地址的映射。例如,稍后对寄存器 SLVO_RW_REG 进行后门访问时, UVM DPI 函数通过寄存器 HDL 路径 "reg_backdoor_access.dut.regs[0]" ...