@(negedgep_sequencer.vif.rstn);@(posedgep_sequencer.vif.rstn);rgm.reg.reset();value=rgm.reg.get_reset();value2=rgm.reg.read(status,data,UVM_BACKDOOR);if(value!=value2)`uvm_error preditor和显式/自动预测 自动预测:在rgm build执行后执行set_auto_predict(),简单有效但是如果有些寄存器被别的...
1my_reg1.myfield2.set(0x11);2my_reg1.myfield3.set(1);3my_reg1.update(); 2.2 update源码 1//uvm_reg_field.svh2functionbit uvm_reg_field::needs_update();3needs_update = (m_mirrored != m_desired) |m_volatile;4endfunction: needs_update56//uvm_reg.svh7functionbit uvm_reg::need...
uvm_component的parent和childr的类型也是uvm_component,只要继承于uvm_component的组件自然继承这种层次化能力; 而uvm_reg机制的parent和children是uvm_reg_block/uvm_reg/uvm_field的具体子类类型,仅针对reg model适用。 通用化层次化结构实现机制 由于uvm_component的parent和children机制,是服务于phase机制、config_set...
update的时候,write的值是根据regmodel目前的值,来写进去的,也就是set field的值,write函数其实只是写入改变了的field。 所有的field都没有更新时,是不会进行update操作的。 update直接更新reg model内的值,需要检测此时没有reg model的frontdoor操作等,即not_busy。 在reg_field中的task中,基本都调用uvm_reg的ta...
dmap.set_sequencer(m_env.apbm.m_seqr,reg_adp);regm.lock_model();endfunction 因为是最简单的...
UVM 提供了两种用来跟踪寄存器值的方式, 我们将其分为自动预测 (auto prediction)和显式预测 (explicit)。 如果读者想使用自动预测的方式,还需要调用函数 uvm_reg_map: :set_auto_predict () 。两种预测方式的显著差别在于, 显式预测对寄存器数值预测更为准确, 我们可以通过下面对两种模式的分析得出具体原因。
自动预测的例码在上一节中已经给出,如果用户想使用自动预测的方式,还需要调用函数uvm_reg_map::set_auto_predict()。这两种预测方式的显著差别在于预测的寄存器数值上,显式预测更为准确,具体原因我们可以通过下面对两种模式的分析来得出。 自动预测(auto prediction)...
1、我们需要在寄存器模型创建的组件的connect_phase()调用寄存器模型中的uvm_reg_map的set_auto_predict(...
第一种方式也适用于关闭某个uvm_reg 或某个uvm_reg_block 的randomize 功能。 7,可以为他们定义constraint: 要设置到value这一层。 8.randomize 会更新寄存器模型中的预期值: 与set 函数类似。可以在randomize 完成后调用update任务,将随机化后的参数更新到DUT中。适用于在仿真开始时随机化并配置参数。
ACCESS方式reg write 创建uvm_reg_item实例rw,一般不用指定其uvm_sequence_base型的parent。但是FRONTDOOR形式发送transaction需要通过sequence来协助完成,会自动创建一个sequence。 可以指定map,通过选定的map访问寄存器。举例:CPU的 IBUS 和 SBUS访问的地址范围不同,可以分别建立相对应的uvm_reg_map,通过map的set_sequen...