0% found this document useful (0 votes)
2 views4 pages

Functional Coverage in System Verilog

This document discusses advanced coverage concepts in design verification, focusing on types of functional coverage such as coverpoint, cross, transition, and instance coverage. It explains bin creation methods in SystemVerilog, including explicit, implicit, wildcard, range, illegal, and ignore bins. The document emphasizes the importance of these techniques for thorough validation of design functionality and corner cases.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views4 pages

Functional Coverage in System Verilog

This document discusses advanced coverage concepts in design verification, focusing on types of functional coverage such as coverpoint, cross, transition, and instance coverage. It explains bin creation methods in SystemVerilog, including explicit, implicit, wildcard, range, illegal, and ignore bins. The document emphasizes the importance of these techniques for thorough validation of design functionality and corner cases.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Advanced Coverage Concepts in Design

Verification

Faisal Manzoor
[email protected]

2025

Introduction

This document expands upon the concept of coverage in design verification by diving into
advanced topics like bin creation, instance coverage, transition coverage, cross coverage,
and filters in cross coverage. Real-world analogies and examples are provided for better
understanding.

1 Types of Functional Coverage

Functional coverage ensures not just code execution, but that key features and scenarios
are actually exercised. It includes:

• Coverpoint Coverage – tracks value occurrences for specific variables.

• Cross Coverage – checks for all combinations of multiple variables.

• Transition Coverage – verifies ordered sequences of values.

• Per-Instance Coverage – collects coverage separately for each covergroup in-


stance.

Analogy
Coverpoint is like noting down which single students raised their hand. Cross cov-
erage checks who raised hands together. Transition coverage observes the sequence
of who raised hands. Instance coverage checks which student groups (e.g., different
classes) participated.

1
2 Types of Bin Creation

In SystemVerilog, bins determine how values are grouped and monitored in coverage.

• Explicit Bins: Manually specify exact values.

• Implicit Bins: Automatically generated one per legal value.

• Wildcard Bins: Use pattern matching (e.g., ‘3’b1?¿).

• Range Bins: Monitor values over a range (e.g., 1 to 10).

• Illegal Bins: Represent invalid/illegal value combinations.

• Ignore Bins: Values not considered in coverage statistics.

Listing 1: Bin Types Example


coverpoint opcode {
bins add_op = {4 ’ b0000 };
bins range1 = {[4 ’ b0010 :4 ’ b0100 ]};
bins wild1 = {4 ’ b1 ??0};
illegal_bins bad_values = {4 ’ b1111 };
}

3 Instance Coverage

Instance coverage keeps coverage results separate for each covergroup instantiation. This
is essential when covergroups are used in different blocks or modules.
Listing 2: Per-instance Coverage Example
class env ;
covergroup cg @ ( posedge clk );
coverpoint data ;
endgroup

cg cg_inst1 , cg_inst2 ;

function new ;
cg_inst1 = new ();
cg_inst2 = new ();
endfunction
endclass

© 2025 Faisal Manzoor — [email protected]


4 Transition Coverage

Transition bins monitor specific sequences of values. They’re useful to validate protocols
and FSM state changes.
Listing 3: Transition Coverage Example
coverpoint state {
bins idle_to_busy = (0 = > 1);
bins full_seq = (0 = > 1 = > 2);
}

Analogy
Think of transition bins like a traffic light sequence. You want to confirm the
system goes from RED to GREEN to YELLOW in order.

5 Cross Coverage

Cross coverage tracks all combinations of two or more coverpoints. This is crucial when
the interaction between multiple variables is significant.
Listing 4: Cross Coverage Example
covergroup cg ;
coverpoint a ;
coverpoint b ;
cross a , b ;
endgroup

6 Filters in Cross Coverage

Sometimes, not all combinations in a cross are valid or important. Filters like ‘ignoreb ins‘and‘illegalb ins‘

• ignore bins: Excludes certain combinations from coverage statistics.

• illegal bins: Marks illegal value pairs — if hit, they flag a verification error.

Listing 5: Cross Coverage with Filters


covergroup cg ;
coverpoint a ;
coverpoint b ;

cross a , b {
ignore_bins ignore01 = binsof ( a ) intersect {1} && binsof ( b ) intersect {0}

© 2025 Faisal Manzoor — [email protected]


illegal_bins illegal23 = binsof ( a ) intersect {2} && binsof ( b ) intersect {
}
endgroup

Conclusion

Advanced coverage techniques are essential to achieve high-quality verification and ensure
that both design functionality and corner cases are exhaustively validated.

© 2025 Faisal Manzoor — [email protected]

© 2025 Faisal Manzoor — [email protected]

You might also like