问下uvm的predict update 还有镜像值 期望值
时间:12-12
整理:3721RD
点击:
大神解释一下吧 ,看书没看明白;
比如dut的功能是a+b 输出为c
应该是从dut读出一个值(c)来,和model中算出来的期望值(c')比较
怎么还多出个mirror;
predict又是什么鬼
比如dut的功能是a+b 输出为c
应该是从dut读出一个值(c)来,和model中算出来的期望值(c')比较
怎么还多出个mirror;
predict又是什么鬼
你说这些都是寄存器model的吧
概念太多了,一下子是说不清楚的,需要实践的。建议:
1.看书
2.看例子
3.看源代码
先predict设置期望值,run dut 得到寄存器值c,再mirror将寄存器值c更新到register model 的镜像值。此时uvm会比较期望值和mirror得到的镜像值 若不一致会报uvm_error 从而实现dut和model比对.
一直不明白 reg_name.predict(value)
进行哪些操作;
看手册上说是更新mirror值;
那更新mirror值就不需要给这个函数一个value了;直接把dut的值读出来给mirror不就完了;
更新mirror值一种方法是mirror从寄存器读回 另一种是predict直接设置value而不改变寄存器值 这就是regname.predict(value)的作用
你说的这是一种方法,我看到大多数方法是这样的:
setreg=xx;
reg.write(status,setreg);
...
reg.read(status,dutreg);
在比较dutreg==setreg
write/read是先给dut写一个值再读回来,只适用于初始化配置和寄存器读写接口测试;要验证a+b=c的功能 还是要先在model用predict预测,再mirror读回比对 用途是不一样的
从dut读回来的不是面向过程的马上就比,而是放到mirror通过callback回调和expect/predicted用scoreboarding的方式对比,所以需要mirror.
