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函数.
uvm_field_automation:UVM_COMPARER
最新推荐文章于 2023-12-29 16:36:11 发布