Home > Community > Forums > Functional Verification > Functional Coverage in Transaction Class

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 Functional Coverage in Transaction Class  

Last post Fri, Feb 16 2007 6:03 PM by archive. 2 replies.
Started by archive 16 Feb 2007 06:03 PM. Topic has 2 replies and 1242 views
Page 1 of 1 (3 items)
Sort Posts:
  • Fri, Feb 16 2007 6:03 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    Functional Coverage in Transaction Class Reply

    Hi all,

    When do data-oriented functional coverage, can we put the covergroup in transaction class directly? And is there any short guideline how to do?

    For example,
    I have transaction define class like:
    //-----------
    class video_pkg_c;
          rand bit [7:0]  opcode_1;
          rand bit [7:0]  opcode_2;
          rand bit [15:0] data;
          //----
          // can I add covergroup here?
          //----
    endclass

    class video_pkg_driver;
          ... ...
          video_pkg_c video_pkg;
          video_pkg = new();
          rand_result = video_pkg.randomize();
          ... ...
    endclass
    //-----------

    I use IUS583.

    Best regards,
    Davy


    Originally posted in cdnusers.org by davyzhu
    • Post Points: 0
  • Sun, Feb 18 2007 4:23 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Functional Coverage in Transaction Class Reply

    Hi all,

    When do data-oriented functional coverage, can we put the covergroup in transaction class directly? And is there any short guideline how to do?
    ==================

    I would highly recommend to avoid this. This is because, coverage is
    more or less a "static" view of your verification progress and not
    truly as dynamic as the transactions themselves are. I usually create
    a separate coverage element and hook it up. Agreed there is some
    repetition in work - especially for long transaction descriptors, but
    one can automate it, write some script or use SV struct etc. to ease
    the pain.

    VMM also recommends some thing similar, it prefers to associate
    coverage with the transactors. Another rule/guideline is "cover as
    close to DUT as possible".

    This is b'cos, even though a packet got generated at a high level
    generator, perhaps due to the fact that particular port was in
    blocking mode (a random configuration setting), the packets never went
    into the DUT. This may or may not be the desired thing. By having the
    transactor tell us "when to sample" we are sure that we are covering
    at the correct place. Imagine creating 10K transactions, you don't
    need 10K coverage objects as well - you simply need a "count" of what
    kind of packets (Type, length, CRC etc.) went in and how many of them.
    This is what I refer to as "pseudo-static" item in the verification
    environment.

    The hook up of coverage class to the transactor is an interesting
    topic. In VMM one can use callbacks or vmm_channel::tee(). In AVM one
    can use analysis ports to do this. Not sure of in uRM, some thing
    similar exists there? If we had AOP, then that would help here as
    well.

    HTH
    Ajeetha, CVC
    www.noveldv.com


    Originally posted in cdnusers.org by ajeetha
    • Post Points: 0
  • Wed, Feb 21 2007 3:42 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Functional Coverage in Transaction Class Reply

    Hi,

    Covergroups in transactions are usually not recommended. Classes in SV are often copied (cloned) when propagated through your testbench, e.g. when sending to the DUT and the scoreboard at the same time. This may result in counting each sampling event multiple times.

    The correct way is sampling the coverage using a monitor which is a singleton object. It will detect the sampling event from the signals and collect the coverage only on "real" transactions that actually made it to the DUT.

    Gabi


    Originally posted in cdnusers.org by Gabi
    • Post Points: 0
Page 1 of 1 (3 items)
Sort Posts:
Started by archive at 16 Feb 2007 06:03 PM. Topic has 2 replies.