用户如果不想通过sv或者内置的DPI方式去后门访问寄存器模型的话,就可以从该类派生出自定义的backdoor访问类,override其中的相关方法来实现自定义形式的后门访问,默认情况下UVM源代码中是使用sv语法的DPI方式来实现寄存器的后门访问的,这个实现方法我们后面会具体讲,等于说我们要进行后面访问都是通过uvm_reg_backdoor或者...
总结一下UVM中的寄存器访问实现: 后门访问通过add_hdl_path命令来添加寄存器路径,并扩展uvm_reg_backdoor基类,定义read与write函数,最后在uvm_reg_block类中 通过set_backdoor()来将相应的寄存器与它对应的后门访问的读写函数对应起来。其中read和write函数以路径名来直接操作。 前门访问通过总线操作来实现,在其中有u...
(1) 当使用back-door(path=BACKDOOR)时, 会通过uvm_hdl_read/uvm_hdl_deposit函数获取或修改DUT register值,而不会通过物理上的interface; (2) 但是back-door的访问方式会尽量模拟前门访问的行为,比如如果对一个只读寄存器进行后门写操作,由于要模拟DUT的只读行为,所以是写不进去的; (3) 无论通过前门访问还是...
在UVM中,Backdoor访问通过UVM的uvm_reg_backdoor类实现。以下是使用UVM寄存器模型的Backdoor的一般步骤:导入相关库和包:systemverilog Copy code import uvm_pkg::*;创建寄存器模型:`include "uvm_macros.svh"class my_reg_model extends uvm_reg_block;// 定义寄存器模型的寄存器字段 uvm_reg_field field1;uv...
创建uvm_reg_item实例rw,一般不用指定其uvm_sequence_base型的parent。但是FRONTDOOR形式发送transaction需要通过sequence来协助完成,会自动创建一个sequence。 可以指定map,通过选定的map访问寄存器。举例:CPU的 IBUS 和 SBUS访问的地址范围不同,可以分别建立相对应的uvm_reg_map,通过map的set_sequencer设置对应BUS的seque...
set_backdoor function void set_backdoor(uvm_reg_backdoorbkdr, stringfname="", intlineno=0) Set a user-defined backdoor for this register By default, registers are accessed via the built-in string-based DPI routines if an HDL path has been specified using theuvm_reg::configure()oruvm_re...
// set value of registers via uvm_reg::poke() for UVM_BACKDOOR p_sequencer.p_rm.invert.poke(status, {15'h00, 1'b0}); p_sequencer.p_rm.counter.poke(status, {15'h00, 32'h2000f0}); // read out the value form register
function uvm_status_e uvm_mem::backdoor_read_func(uvm_reg_item rw); ... string hdl_path = {hdl_concat.slices[j].path, "_", idx}; 这里uvm_reg_item中包含的寄存器信息都有: End 那么问题来了,遇到这种问题,你是会找DE修改他们的flow来更新design code还是会在自己的环境覆盖uvm built-in的ta...
rgm.chnl0_ctrl_reg.mirror(status, UVM_CHECK, UVM_FRONTDOOR,parent(this)); 下面的方法是运用 set()和 update()对寄存器做批量修改。首先 set()方法的对象是寄存器模型自身,通过set()可以修改期望值, 而在寄存器配置时不妨先对其模型随机化,再配置个别寄存器或域, 当寄存器的期望值与镜像值不相同时,可以通...
reg_block在new的时候,可以设置cover_on,通过set_coverage等function。sample的时候get_coverage。 reg的读写前后都有pre/post的hook task。 uvm_reg中最重要的三个task: read,write,根据path的不同,操作总线或者更新reg_model;内部都是都access control的,只不过backdoor的在自己内部,其他的在predict中。