1.1 uvm_reg_block的reset函数 functionvoiduvm_reg_block::reset(stringkind ="HARD");foreach(regs[rg_]) begin uvm_reg rg=rg_; rg.reset(kind); endforeach(blks[blk_]) begin uvm_reg_block blk=blk_; blk.reset(kind); end endfunction 回到顶部 1.2 uvm_reg的reset (1) m_atomic本质上是一...
在实例化后reg_model还要做四件事:第一是调用configure函数,其第一个参数是parent block,由于是最顶层的reg_block,因此填写null,第二个参数是后门访问路径 第二是调用build函数,将所有的寄存器实例化 第三是调用lock_model函数,调用此函数后,reg_model中就不能再加入新的寄存器了 第四是调用reset函数,如果不调用...
uvm_resource_db#(bit)::set( {"REG::", env.regmodel.xxa.xxb.xxc.get_full_name(), } "NO_REG_HW_RESET_TEST ", 1, this ) seq.start(null) 启动测试 env.regmodel.print() ; 3. reg direct 测试 uvm_reg reg[$] 寄存器名 uvm_reg_block reg_blk 模块名 uvm_status_e status uvm_reg...
reset可以被设置为多种类型的reset的值。 主要functionconfigure。 uvm_reg中的主要变量有,m_locked,由顶层的reg_block调用 m_parent,指向的uvm_reg_block; m_is_busy,当该reg正在执行frontdoor的读写操作时,该信号置 1,避免此时做predict。 m_backdoor,外部设置进去的backdoor的方法。 m_maps[uvm_reg_map],...
threshold_reg类的建立与status_reg基本相同,区别在于他们的reg_field不太一样,所以配置时需要注意reset值和access类型。 1.2.2. reg_block 建立完所有的reg类之后,需要建立一个reg_block类,将一组reg包含进对应的reg_block中。reg_block继承自uvm_reg_block。 class reg_block extends uvm_reg_block; 然后声明...
rgm. reset(); / / register block reset for mirrored value and desired value rgm.chnl0_ctrl_reg.reset(); // register level reset rgm.chnl0_ctrl_reg.pkt_len.reset(); // register field reset 在复位之后, 用户也可以通过读取寄存器模型的复位值(与寄存器描述文件一致), 与前门访问获取的寄存器...
将block和adapter添加到环境中完成这些步骤后,一个完整的寄存器模型就生成了。 27. 运行RAL序列在UVM中,我们可以隐式或显式地运行RAL序列。这些序列主要用于测试寄存器模型,确保寄存器的文档和RTL代码一致。例如:cpp uvm_reg_hw_reset_seq // 测试硬复位值 ...
一个寄存器模型必须包含一个reg_block。 一个reg_block可以包含多个reg_map, 从而实现一个reg_block应用到不同总线,或不同地址段上。 uvm_mem是对dut中memory进行建模使用的。 这些类均是继承自uvm_object类。一个完整的register model, 均有这些层次化的register元素构成,放到顶层的reg block中。一个reg block可...
uvm_reg的访问方法 在给出寄存器模型的常见应用模式之前,我们还需要更全面了解uvm_reg_block/uvm_reg/uvm_field三个类提供的用于访问寄存器的公共方法: 在上一节给出的例码中,已经类比了uvm_reg_block/uvm_reg/uvm_reg_field的方法和uvm_reg_sequence封装的方法。在上面给出寄存器模型相关类的详尽方法列表之后,...
例码中通过 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]" ...