微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 关于UVM源码里面的register model的do_read_check困惑

关于UVM源码里面的register model的do_read_check困惑

时间:10-02 整理:3721RD 点击:

uvm里面,当发起reg.read()时,从它的源码中可以看到当使用的predict方式为auto_predict时,如果设置了set_on_read_check(1),就会使用寄存器的Desire值和Dut读回来的值做do_check()比对,这个可以理解,但是当使用的predict模式为uvm_reg_predictor时(使用monitor,并且把auto_predict设置为0),在uvm_reg_predictor源码中使用的却是寄存器的Mirrored值和dut读回来的值做do_check()比较,这里我不能理解的是,为什么使用Mirrored值?求大神帮解答下

另外问下发帖的时候怎么设置悬赏?

我理解的是期望值是由经driver->adapter->refmodel的值,
镜像值是由经monitor->adapter->refmodel的值,
设置auto_predict(0)之后,关闭了driver的路径,就只能比对镜像值和DUT中的真实值了。

这也能反映出predictor的英文意思喽。

可是镜像值不是从dut实际值来的么(我记得有句话说mirror值最大可能的保持和dut实际值的一致性),他能拿来做check么?总感觉有种拿着自己跟自己比对的感觉,可能我哪里理解错了- -。


我的理解是:
在仿真时间轴上,mirrored 和 desired是对hardware当前状态的不同路径的存储在本地的拷贝。
并不会随时发生,仿真过程中,在进行寄存器操作时,只有mirrored 和 desired不一致时,如update操作,
检测到不一致的情况发生,才会将期望值写入---DUT---中,并且同时更新mirrored。
如此可以看出mirrored 和 desired相对于hardware来说 应该是同一个东西,只是为了提高仿真效率才弄出来的两个玩意?又或者是某些特殊情况下只能使用一种?

为什么连desired值也是DUT返回值的拷贝 我一直认为desired值是环境自己的期望值不应该受DUT值的影响,但uvm的做法确实像你说的那样,这让人很费解。
你怎么看?

desired应该理解为DUT期望从验证环境获得的值,相当于pre-sim;
mirrored应该理解为验证环境期望从DUT获得的值,相当于post-sim;
这样应该就可以解释了吧

mirrored应该理解为验证环境获得的DUT的历史期望值;
存在这两个值有一个解释更加合理:是为了在自动化过程中批量修改寄存器;
场景如下:
仿真过程:配置寄存器阵列--->运行仿真(过程中不能占用总线及修改配置)--->仿真过程中通过backdoor访问读取状态,产生新一轮运行期望的状态(只改变期望值)--->后一轮配置时,批量update;

嗯有道理。
感谢@AnswerLJ一直以来的耐心回复,作为初学者受益匪浅,你的理解相对而言要透彻的多。我找时间还是得再去读一读源代码。

使用后门操作不符合软件配置硬件实际流程,可能漏测部分配置问题,慎用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top