will be under maintenance from Friday, Oct. 3rd at 6pm (PST) thru Sunday, Oct 5th at 11pm (PST). login, registration, community posting and commenting functionalities will be disabled.
Home > Community > Blogs > Functional Verification > full sequence coverage in a single line of e code
Login with a Cadence account.
Not a member yet?
Create a permanent login account to make interactions with Cadence more convenient.

Register | Membership benefits
Get email delivery of the Functional Verification blog (individual posts).


* 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: *

Full Sequence Coverage in a Single Line of e Code?

Comments(2)Filed under: e, Specman, AOP, OVM-e, specman elite, team specman, e language

I was asked recently about how to easily collect coverage on the sequences generated by the verification environment.  Since this question has come up before, I thought I would take this opportunity to write a short blog on how to quickly and easily collect coverage on generated sequences. 

A comprehensive coverage plan contains coverage of the DUT output, internals, and also the stimuli created and sent by the verification environment.  One of the easiest ways to collect coverage on the stimulus generated is by collecting coverage information on the sequences themselves. To do this, you can use the built-in sequence ended event as a sampling event and, for starters, collect coverage on the built-in kind field.  Later on, you can add more coverage items based on sequence related information.

For example, to collect coverage of the ethernet_seq sequence:

extend ethernet_seq {
    event cover_seq is cycle@ended;
    cover cover_seq is {item kind;}; 

This coverage definition will collect information of all created sequences, including, for example, the MAIN sequence. Since there is always one MAIN sequence, you might decide not to have it affecting the coverage information, and in that case we recommend this slight modification to above code:

extend ethernet_seq {     
    event cover_seq is cycle@ended;
    cover cover_seq is {
        item kind using ignore = (kind == RANDOM or kind == MAIN);

To make users lives even easier, the UVM e package provides a small macro that reduces simple sequence coverage collection down to a single line statement. The statement adds a cover_seq event that, by default, is connected to the ended event and also adds one cover item -  the kind field.

The below statement collects coverage on the ethernet_seq, for example:

cover_sequence ethernet_seq;

Hope this helps!

Efrat Shneydor - Specman R&D, Methodology


By mahesh on March 19, 2012
hi Efrat,
This is mahesh, i am working on specman e. Am not getting that "ended".

By Efrat Shneydor on March 19, 2012
hi, Mahensh,
Thanks you for reading this post, and for commenting.
Every sequence, when it ends, emits an "ended" event. i suggest setting "trace sequence" command, and you can see for each sequence when it starts and when it ends. If indeed a sequence ends and no event is emitted - can you contact Cadence support? They can reproduce the case and see what happens.

Leave a Comment

E-mail (will not be published)
 I have read and agree to the Terms of use and Community Guidelines.
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.