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:7.7.1 使用reg_predictor 1.左图的方式依赖driver,当driver 将读取值返回后,寄存器模型会更新镜像值和镜像值和期望值。被称为寄存器模型的auto predict 功能。使用如下语句打开此功能: 2.右图另外一种形式。monitor 将总线收集到的transaction交给寄存器模型,后者更新相应寄存器的值。 3.用这种方法更新数据,需要理...
virtualfunctionstringget_type_name();endfunction//Function: pre_predict///Override this method to change the value or re-direct the//target register//virtualfunctionvoid pre_predict(uvm_reg_item rw);endfunctionlocal uvm_predict_s m_pending[uvm_reg];//Function- write///not a user-level meth...
1.1.2 依靠monitor与uvm_reg_predictor的⾮auto_predict功能(使⽤monitor的explict prediction)monitor将从总线上收集到的transaction交给寄存器模型,后者更新相应寄存器的值.1.2 auto_predict读操作返回值详细分析 (1) 由于总线的特殊性, bus_driver在驱动总线进⾏读操作时,也能顺便获取要读的数值; 如果将该值...
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) rw.status=UVM_IS_OK;//Assume that the entire field is enabledif(!be[0])return; ...
// 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":returncur_val;"RS":returncur_val;"WC":return'0;"WS...
regm.thres.predict('h100); reg的predict本质就是依次去调用其中所有reg_field的predict函数,然后将reg predict参数中的寄存器值分别拆成对应field的predict,传给reg_field.predict。针对UVM_DIRECT_PREDICT,也是一般验证中常用的predict,无论reg的access为甚么类型,都能够直接修改value,m_desired和m_mirrored成为我们期望...
uvm_reg_predictor#(apb_rw) predict; function new(string name = "tb_env", uvm_component parent=null); super.new(name, parent); endfunction: new virtual function void build_phase(uvm_phase phase); if (regmodel == null) begin regmodel = reg_block_B::type_id::create("regmodel"); ...
篇5-uvm_regrandomizegetsetupdatemirrorpredictr。。。1.1 randomize 1.1.1 randomize的影响 (1) randomize操作会改变register field的期望值(uvm_reg_field的post_randomize函数内,会将期望值设置为随机的结果),镜像值不会改变;(2) 如果在randomize后,跟着调⽤update,会将期望值写⼊DUT;1.1.2 randomize的...
一般设置default_map.set_auto_predict(1);,这样当寄存器访问结束时,会调用do_predict,自动更新uvm_reg_filed中的三个变量值。 // uvm_reg.svh // do_write task uvm_reg::do_write (uvm_reg_item rw); ... // EXECUTE WRITE... case(rw.path) /...