Jump to content

Function do_compare override in uvm_sequence_item derived class - compare always returns '1'

Recommended Posts


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);
      // If do_compare() returned 1, check for a change
      // in the result count.
      if (ret_val && (get_result() > old_result))
        ret_val = 0;
        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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...