1functionbit uvm_reg::predict (uvm_reg_data_t value,2uvm_reg_byte_en_t be = -1,3uvm_predict_e kind =UVM_PREDICT_DIRECT,4uvm_path_e path =UVM_FRONTDOOR,5uvm_reg_map map =null,6stringfname ="",7intlineno =0);8uvm_reg_item rw =new;9rw.value[0] =value;10rw.path =path;...
1class uvm_predict_s;2bit addr[uvm_reg_addr_t];3uvm_reg_item reg_item;4endclass56//---7//8//CLASS: uvm_reg_predictor9//10//Updates the register model mirror based on observed bus transactions11//12//This class converts observed bus transactions of type ~BUSTYPE~ to generic13//re...
UVM REG Model入门 本章通过一个非常小的示例来解释UVM REG中一些常用操作的实现。 1.1. 示例 假设某个功能模块中包含如下寄存器,且寄存器通过APB接口进行配置。 1.1.1. status 状态寄存器,只读,Offset: 0h, Width: 32bits Field access width reset comment Reserved RO [31:4] 0 保留位 Error RO [3:...
寄存器模型(reg_model)的高級用法之uvm_reg_predictor 一、在通常的寄存器測試中,寄存器模型主要是依賴driver將讀取值返回,來更新鏡像值和期望值。這個功能被稱之為auto_predict功能。在建立寄存器模型時需要...点赞(0) 踩踩(0) 反馈 访问所需:1 积分 同意申明访问第三方链接 ...
uvm_reg_predictor,当auto_predict关闭的时候,需要例化的component,连接到寄存器的monitor。 在write函数中显示调用do_predict函数,更新model中的mirror value,此时do_check函数,会根据read_on_check进行调用。 uvm自建的针对reg的sequence,针对普通的reg有:reg_access_seq,reg_bit_bash_seq,reg_hw_reset_seq。
参数为UVM_PREDICT_DIRECT时:人为更新期望值和镜像值,不更新DUT中寄存器 引入reg_predictor 引入reg_predictor的原因:配置寄存器的总线存在多个master时,可能存在不通过寄存器模型访问总线来配置DUT中寄存器的情况,这时寄存器模型 就不能检查到 DUT中寄存器的变化,所以需要引入reg_predictor,通过monitor检测总线,将采集到的tr...
UVM_PREDICT_READ, rw.path, rw.map); field_val&= ('b1 << m_size)-1;end UVM_PREDICT_DIRECT: beginif(m_parent.is_busy()) begin `uvm_warning("RegModel", {"Trying to predict value of field '", get_name(),"' while register '",m_parent.get_full_name(),"' is being accessed"...
uvm_reg_model——寄存器模型(⼀) 对于⼀个复杂设计,寄存器模型要能够模拟任意数量的寄存器域操作。UVM提供标准的基类库,UVM的寄存器模型来⾃于继承⾃VMM 的RAL(Register Abstract Layer),现在可以先将寄存器模型进⾏XML建模,再通过脚本⼯具直接⽣产寄存器模型。⾸先来看看 uvm_reg_model的代码...
数字验证大头兵:[UVM源代码研究] 谈谈寄存器模型中predict UVM源代码溯源 我们以后门写寄存器为例结合具体实例讲解下UVM源代码是如何实现寄存器模型的后门访问的。 源代码中涉及到的相关方法首先是write任务,如图1所示 图1 src/reg/uvm_reg.svh中的write()任务 wirte()中的核心方法是do_write(),其他内容可以认为是...
这样一来uvm_reg的predict行为就跟寄存器模型中的读写行为脱钩了,只是跟monitor上的行为想关联,即使不是寄存器模型发起的读写(例如通过一般的sequence发起的总线读写),也是可以实时的更新寄存器模型中的镜像值和期望值,这样做更能保证寄存器模型中的值与DUT中的寄存器值最大程度的保持一致。 我们在创建uvm_reg_map的...