Search the Community
Showing results for tags 'compare'.
Hi, I have created new transaction by extending uvm_sequence_item, where I have implemented do_compare function. Once implemented, compare calls seems to return '1', even if do_compare returns '0' (comparison failed). I have traced comparison to uvm_object compare function calling uvm_comparer compare_object method. There, do_compare seems to be used in following code: if (field_op.user_hook_enabled()) begin ret_val = lhs.do_compare(rhs,this); end field_op.m_recycle(); // If do_compare() returned 1, check for a change // in the result count. if (ret_val && (get_result() > old_result)) ret_val = 0; else ret_val = 1; It seems that any time do_compare returns '0', the condition below it always change ret_val (compare_object return value) to '1'. This behaviour exists only in 1800.2-2017-0.9 reference implementation of UVM library. If I use UVM-1.2, compare calls returns '0', if do_compare returns '0' on comparison failure (as I would expect). I would like to ask whether this behaviour is intentional. In such case, is there any recommended way to implement do_compare task? Thank you.