2. read/write (frontdoor) regmodel.register.read(status,value,UVM_FRONTDOOR,.parent(this)); regmodel.register.write(status,value,UVM_FRONTDOOR,.parent(this)); 回到顶部 2.1 read/write (frontdoor)操作的影响 (1) 当使用front-door(path=BFM), 一个或多个实际的transaction会发往DUT进行register的...
我们需要将该寄存器包含的所有uvm_reg_field以uvm_hdl_path_slice的形式通过add_hdl_path的形式配置给该寄存器,这样我们在执行backdoor_read和和write的时候才能正确执行,否则就会报对应backdoor hierarchy不存在的warning信息,转而使用frontdoor实现,关于这一点可以参考文章最后代码示例中的jb_recipe_reg寄存器的后门访问...
由于直接访问HDL值并不消耗总线事务,因此后门访问所需的模拟时间为0。这是在任何设计中验证寄存器功能都不推荐的方法,但是在特定的情况下,后门访问可以帮助巩固前门访问(Frontdoor access)的验证效果。 定义后门HDL路径 为了能够实现后门访问的操作,仿真器(Simulator)必须知道所需访问信号的HDL路径。所以,这是用户的职责...
0_ctrl_reg.pkt_len.set('h3); rgm.update(status, UVM_FRONTDOOR, .parent(this)); 4、mem与reg的联系和差别 5、内建sequences 寄存器模型(rgm)内sequence 禁止域名:uvm__db :对状态的保留位禁止掉。 内建s目的 测试寄存器模型,寄存器的写入值可以准确地反映硬件中地寄存器实现前提 class mcdf...
(FRONTDOOR) is %0h", counter), UVM_LOW) p_rm.counter.peek(status, value); counter = value; `uvm_info("case0_cfg_vseq", $sformatf("after poke, counter's value(BACKDOOR) is %0h", counter), UVM_LOW) if(starting_phase != null) starting_phase.drop_objection(this); endtask ...
前门访问(FRONTDOOR):启动 sequence 产生待操作寄存器的读写控制和地址,在 driver 中通过总线(Bus)驱动至 DUT,并在 monitor 中采集 Bus 输出数据,该方式需要消耗仿真时间; 后门访问(BACKDOOR):在仿真环境中通过 DUT 实例名进行点操作,直接访问 DUT 内部的寄存器,该方式的缺点是,点操作需要通过绝对路径操作...
原生的UVM寄存器访问模式,是将reg_block、bus_adapter与bus_agent挂载到一起,来实现前门访问(frontdoor);同时更新HDL path,来实现后门访问(backdoor),这种模式在SRM中得到了扩展,当子系统内部某些主端模块也更新寄存器时,无法从前门或者后门来模拟该激励,也无法监测该激励,因此它新添加了侧门访问模式(sidedoor)。这...
因此,在顶层env中在对寄存器模型完成了build以后,我们还可以创建my_vreg_frontdoor_sequence,并且通过指定regmodel.bus.reg0.set_frontdoor(frontdoor)来指定在访问该sequence时,需采取专用的frontdoor sequence完成寄存器访问。 这种用户自定义的前门访问方式,作为传统的register model + adapter + bus sequencer方式的补...
UVM register model allows access to the DUT registers using the front door as we have seen before in the register environment. This means that all register read and write operations in the environment are converted into bus transactions that get driven
uvm_reg_map:包含成员变量m_adapter,m_sequencer,负责FRONTDOOR发送item给driver。 uvm_reg_item:继承于uvm_sequence_item,可以看作是寄存器访问的transaction。 uvm_reg_bus_op:在uvm_reg_map中由uvm_reg_item转化而来,是一个struct类型的变量。 在这里插入图片描述 ...