Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Functional Coverage in Transaction Class (SV)

Status
Not open for further replies.

davyzhu

Advanced Member level 1
Joined
May 23, 2004
Messages
494
Helped
5
Reputation
10
Reaction score
2
Trophy points
1,298
Location
oriental
Activity points
4,436
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:
Code:
//-----------
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
 

Hi Davy,

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
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top