Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • Start Here6
  • SystemVerilog Language Foundations28
  • Object-Oriented SystemVerilog for Verification30
  • Constraint Randomization — Interview-Critical Deep Dive36
  • SystemVerilog Assertions — Interview-Critical Deep Dive40
  • Functional Coverage in SystemVerilog22
    • Covergroups & Coverpoints
      • Covergroup Anatomy
      • Sampling: Clocked, Event & sample()
      • Coverpoint Expressions & Types
      • Building Your First Coverage Model
    • Bins: Explicit, Auto, Illegal & Ignore
    • Cross Coverage
    • Coverage Options & Methods
    • Coverage Closure & Sign-Off
  • Testbench Architecture in SystemVerilog23
  • Advanced Language & Integration25
  • Senior & Interview Preparation21
  • Principal-Level Verification28
Loading lesson

‹Functional Coverage in SystemVerilog
  1. Topics
  2. SystemVerilog
  3. Functional Coverage in SystemVerilog
  4. Covergroups & Coverpoints

Part 5 · Functional Coverage · Intermediate

Covergroups & Coverpoints

Covergroups bundle coverpoints and bins; lessons cover structure, sampling, expressions and a first model.

  • 4topics
  • 4lessons

Functional coverage proves that planned scenarios happened. A covergroup bundles the measurement points, samples the design at chosen moments, and sorts each sample into bins.

design.sv
1
2
3
4
5
6
7
8
9
10
11
// snippet
covergroup cg_alu @(posedge clk);          // the container, with its sampling event
  option.per_instance = 1;                 // options configure it
  cp_op : coverpoint opcode {              // a coverpoint watches one value
    bins add = {OP_ADD};                   // a bin is a named bucket
    bins sub = {OP_SUB};
    bins shifts[] = {OP_SHL, OP_SHR};      // a bin array: one bin per value
  }
  cp_zero : coverpoint (result == 0);      // an expression coverpoint
  x_op_zero : cross cp_op, cp_zero;        // a cross counts combinations
endgroup

Lesson

It builds

Covergroup Anatomy

Group, point and bins; class and module homes; the forgotten new().

Sampling: Clocked, Event & sample()

Clocked versus explicit sampling, sample arguments and iff guards.

Coverpoint Expressions & Types

Expressions, enums, boolean idioms and the auto-bin cap.

Building Your First Coverage Model

An ALU plan turned into a wrapper class, a report, holes and sign-off.

Check yourself A covergroup reports 0 percent while the stimulus is known good. What is the first thing to check?

Whether the covergroup was ever constructed. A declared but never constructed covergroup never samples, and most flows report that silence as zero coverage.

Interview

“What is the difference between code coverage and functional coverage” is the standard opener. Code coverage is tool-measured structure execution. Functional coverage is engineer-written scenario occurrence. Sign-off needs both, and the last lesson shows why.

PreviousNext: Covergroup Anatomy

Up next

Up nextCovergroup Anatomy

Sign in to save progress

Practice this lessonReport an error

See also

  • Bins: Explicit, Auto, Illegal & Ignore
  • Cross Coverage
  • Coverage Options & Methods