UVM常见知识点

1.uvm mirror 与predict

//predict
virtual function bit predict (	uvm_reg_data_t 	value,	  	
uvm_reg_byte_en_t 	be	 = 	-1,
uvm_predict_e 	kind	 = 	UVM_PREDICT_DIRECT,
uvm_path_e 	path	 = 	UVM_FRONTDOOR,
uvm_reg_map 	map	 = 	null,
string 	fname	 = 	"",
int 	lineno	 = 	0)
//mirror
virtual task mirror(	output 	uvm_status_e 	status,	  	
input 	uvm_check_e 	check	 = 	UVM_NO_CHECK,
input 	uvm_path_e 	path	 = 	UVM_DEFAULT_PATH,
input 	uvm_reg_map 	map	 = 	null,
input 	uvm_sequence_base 	parent	 = 	null,
input 	int 	prior	 = 	-1,
input 	uvm_object 	extension	 = 	null,
input 	string 	fname	 = 	"",
input 	int 	lineno	 = 	0	)

(1) reg model会维护一个镜像值,该镜像值是寄存器模型中用于最大可能与DUT中reg值变量相同;
(2)镜像值并不保证与DUT中的值可能不一样。当DUT中的reg因为DUT的正常行为发生变化,如counter的技术行为,镜像值就不会变化
(3) 可以通过get_mirror_value得到寄存器的镜像值;
(4)mirror可以通过前门或者后门方式进行更新,;
(5) uvm_reg_field::predict()用来更新寄存器的镜像值;
(6)隐式预测:regmodel.default_map.set_auto_predict(1)当read/write/peek/poke操作后,reg model会自动更新,但是可能会漏掉一些不是由register model发起的总线操作;隐式预测即前文提到的auto_predict(auto_predict针对的是寄存器前门访问操作,而非后门访问操作
(7) 显式预测:隐式预测被关闭(set_auto_predict(0)),镜像值由uvm_reg_predictor组件进行更新, predictor显式调用register的predict函数来更新镜像值;;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值