uvm_field_automation:UVM_COMPARER

1.compare用法示例
uvm_field_automation默认支持compare,一般使用的方法如下:
a.compare(b),比对不同时会上报如下类型的错误:
在这里插入图片描述
2.compare函数说明
在uvm_object中定义了compare函数,原型如下:
在这里插入图片描述
一般情况下,只需要添加rhs(right hand side)即可,如果用户定义了uvm_comparer,那么在调用的时候需要添加自定义的comparer.
调用compare的时候,首先会确认comparer参数是否null;是null则调用默认的uvm自带的comparer,不是null,则调用用户自定义的comparer.
在这里插入图片描述
compare的时候会调用m_uvm_field_automation和do_compare函数,返回结果时,判断comparer.result和dc的值;
默认情况下,如果xaction中没有自定义的do_compare函数,那么会调用uvm_object基类中的do_compare其返回值为1;
如果xaction中自定义了do_compare函数,那么用户自己决定什么情况下返回1,什么情况下返回0.
在这里插入图片描述
在这里插入图片描述
3.do_compare函数
为了说明do_compare的用法,xaction内包含的成员都注册为uvm_nocompare,do_compare的定义如下:
在这里插入图片描述
a.对m_reg_addr的16bit数据都做比较
在这里插入图片描述
b.对m_reg_addr的低2bit数据做比较
即使a和b的m_reg_addr数值不一样,但是m_reg_addr的低2bit都是0,所以compare也是pass的.
在这里插入图片描述
c.结论
从上面的比较中可以看出,do_compare是可以自己定义的,因为实际业务的不同,我们可能感兴趣的点也不一样,有时可能只对局部的数据感兴趣,那么就可以通过自定义的方式去实现compare函数.

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值