Functional coverage is a method which allows the verification engineer to objectively evaluate how well a user defined abstraction space is covered. This space can be internal or external to the DUT and can occur at any abstraction level.
Functional coverage indicates how well your testbase fulfills the test plan goals.Test plan goals might include:
-Testing a complete range of interesting input stimuli
-Testing a complete set of key internal states
-Testing a complete set of sequences of stimuli or states
-Evaluating performance
The three types of coverage data that you might want to collect are:
--Coverage data for the finite state machine (FSM).
--Coverage data for the generated instructions.
--Coverage data for the corner case.
Coverage Groups
Coverage groups are struct(or unit) members -
They have an associated event to know when to sample data. The event must be declared in the same struct or unit as the coverage group. Coverage groups can be defined with â~@~\coverage group optionsâ~@~]. Controls collection, grading, and display of the group. Coverage groups contains coverage items. The value of each coverage item is recorded when the coverage event occurs.
Syntax cover event-type [using coverage-group-option, ...] is {coverage-item-definition; ...};
cover event_type is empty;
Cover Group Options
----------------------------------------------------------------------
Option Description
----------------------------------------------------------------------
count-only Reduces memory usage:no time info stored
and no post-process cross.
text = string Text description for this coverage group
shown in coverage report.
when = bool-exp Collects coverage only when boolean
expression evaluates to TRUE
radix = DEC\HEX\BIN Displays radix for each itemâ~@~Ys bucets.
weight = uint Specifies grading weight relative to other
groups. Default is 1.
at_least = uint Minimum number of samples for each bucket.
If less reports a coverage hole.
ignore = bool_exp Ignores sample if bool_exp is TRUE
illegal = bool_exp Causes dut_error() if bool_exp is TRUE
ranges = {range(parameters);
Specifies interesting ranges for int/uint types.
----------------------------------------------------------------------
Cross-Coverage
ItemA cross coverage item is the cross product(matrix) of two or more previously declared basuic items. It Can cross any number of items declared in the same coverage group. This can also be done in e code or interactively, using Coverage GUI. Options for cross are same as for basic items are available, except using ranges.