答:desired value 和 mirrored value // do_predict function void uvm_reg_field::do_predict(uvm_reg_item rw, uvm_predict_e kind = UVM_PREDICT_DIRECT, uvm_reg_byte_en_t be = -1); uvm_reg_data_t field_val = rw.value[0] & ((1 << m_size)-1); if (rw.status != UVM_NOT_OK...
UVM_PREDICT_WRITE, rw.path, rw.map); field_val&= ('b1 << m_size)-1;end UVM_PREDICT_READ: begin uvm_reg_field_cb_iter cbs=new(this);if(rw.path == UVM_FRONTDOOR || rw.path ==UVM_PREDICT) beginstringacc =get_access(rw.map);if(acc =="RC"||acc=="WRC"||acc=="WSRC"||...
1.2.1. status_reg 首先定义一个status_reg类,继承自uvm_reg,该类就表示了status寄存器。 class status_reg extends uvm_reg; endclass 定义了一个reg之后需要定义其中的reserve,error和done三个field(保留位在一般情况下不需要定义一个额外的field,这里将所有的bit都填充进reg中)。 uvm_reg_field rsv_field uv...
(1) read/peek和write/poke操作对DUT完成读写后,也会调用此函数,只是它们给出的参数是UVM_PREDICT_READ和UVM_PREDICT_WRITE(使用这两个参数的区别? 详见uvm_reg_field的do_predict函数); (2) 在显式预测中,predictor内会调用uvm_predict函数进行镜像值的更新; ...
最后使用predict函数将新的counter值更新到寄存器模型中。predict操作会更新镜像值和期望值。 在测试用例中, 仿真完成后可以检查DUT中counter的值是否与寄存器模型中的counter值一致 寄存器模型中的基本概念 uvm_reg_field:寄存器的域,是一个uvm_reg中的一个字段/域 ...
predictUpdate the mirrored value for this field. Callbacks pre_writeCalled before field write. post_writeCalled after field write. pre_readCalled before field read. post_readCalled after field read. value rand uvm_reg_data_t value Mirrored field value. This value can be sampled in a functional...
uvm_reg_field:包含uvm_reg_data_t类型的三个成员变量value,m_mirrored,m_desire。 uvm_reg:包含成员变量m_fields,加入各个uvm_reg_field。 uvm_reg_block:uvm_reg的集合,uvm_reg需要加入到uvm_reg_map中,且属于同一个uvm_reg_block。每个uvm_reg_block至少包含一个uvm_reg_map。uvm_reg_block中也可以再...
Refer uvm_reg_field::set() for more details on the effect of setting mirror values on fields with different access policies. To modify the mirrored field values to a specific value, and thus use the mirrored as a scoreboard for the register values in the DUT, use the uvm_reg::predict(...
uvm/1800.2-2020-1.1/src/reg/uvm_reg_field.svh // XpredictXfunctionuvm_reg_data_tuvm_reg_field::XpredictX(uvm_reg_data_tcur_val,uvm_reg_data_twr_val,uvm_reg_mapmap);uvm_reg_data_tmask=('b1<<m_size)-1;case(get_access(map))"RO":returncur_val;"RW":returnwr_val;"RC":returnc...
数字验证大头兵:[UVM源代码研究] 谈谈寄存器模型中predict UVM源代码溯源 我们以后门写寄存器为例结合具体实例讲解下UVM源代码是如何实现寄存器模型的后门访问的。 源代码中涉及到的相关方法首先是write任务,如图1所示 图1 src/reg/uvm_reg.svh中的write()任务 wirte()中的核心方法是do_write(),其他内容可以认为是...