• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Functional Verification
  3. generic compare function :

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 64
  • Views 13311
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

generic compare function :

archive
archive over 17 years ago

Hello, i'd like to build a generic function that compare 2 elements and check their type on the fly. it should know how to deal with all types of data (bool, bit, uint buses and string that will point on specific port in the design). here's the semi-pseudo code of what i meant: i don't know how to extract variable data-type in run time, is it possible to do it ? CheckNet (Lvalue:generic, Rvalue:generic) is { //step 1: if any of the data comes as string, refer to it as a pointer to an element in the HDL and extract it by ticks. if (Lvalue:type == "string") //create port of Lvalue var Lval:uint = 'Lvalue'; if (Rvalue:type == "string") //create port of Rvalue var Rval:uint = 'Rvalue'; // step 2: cast all elements to similar data-type that support their value (without truncation }else{ Rval: uint = Rvalue.as_a(uint); Lval: uint = Lvalue.as_a(uint); }; if (Rval != Lval) print "not equal"; else print "equal"; }; }; thanks,


Originally posted in cdnusers.org by zcabeli11
  • Cancel
  • archive
    archive over 17 years ago

    Hi,

    I have a couple of suggestions:

    In general checking in Specman is done at a high-level wherever possible, which means that "actual" data from HDL signals is unpacked into a data-structure and compared to an "expected" data-structure using deep_compare_physical().  So users rarely write low level checking routines like the one you pseudo-coded.  I would encourage you to consider that first.

    That said, if high-level checking is not an option and you want to create a generic method, you could make Lvalue & Rvalue of type struct, and give that struct subtypes that represent the different types that you need to handle.  The method can then test to see what subtype is passed in and handle it accordingly.  And the code that calls CheckNet() will create the appropriate struct-instances based on the data it needs to process and pass them to CheckNet().

    If what I have written above does not help you get started I recommend that you discuss this with your Cadence Applications Engineer who supports Specman for your site.

    Hope this helps,
    Dean 


    Originally posted in cdnusers.org by ddmello
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 17 years ago

    Hi ddmello and thanks for the help...
    i'm trying to figure out the second idea, but i still cannot understand how to define generic struct that can store data_type field of pre-defined type and value that can be of any kind ...

    struct data{
    data_type: Dtype;
    data_val: value;
    };


    Originally posted in cdnusers.org by zcabeli11
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information