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
    • Bins: Explicit, Auto, Illegal & Ignore
    • Cross Coverage
    • Coverage Options & Methods
      • option.per_instance & Instance Options
      • Weights, Goals & at_least
      • get_coverage(), sample() & Friends
      • Parameterizing Covergroups
    • 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. Coverage Options & Methods

Part 5 · Functional Coverage · Intermediate

Coverage Options & Methods

How per-instance options, weights, goals, sampling methods, and covergroup arguments shape coverage.

  • 4topics
  • 4lessons

Declaring bins says what to measure. Options, methods, and constructor arguments say how: which instances report separately, how much each part counts, when sampling runs, and how one definition serves many instances.

Knob

Question it answers

option.per_instance and option.name

Do N instances merge into one number or report as N rows, and what labels those rows?

option.weight, option.goal, option.at_least

How much does each element count, what is the target, and how many hits make a bin trustworthy?

sample, get_coverage, stop and start

How does a test trigger, read, and pause coverage at runtime?

Constructor arguments

How does one covergroup definition serve instances with different ranges and names?

Lesson

What it covers

Instance options

Type-level versus per-instance accumulation, instance naming, and when separate rows matter.

Weights and goals

Rollup weighting, done thresholds, hit thresholds, and instance scope versus type scope.

Sampling and query methods

Procedural sampling, coverage queries, gating windows, and tests that stop on goal.

Covergroup arguments

Constructor arguments, value versus ref passing, and one definition reused per port.

Check yourself Four identical ports share one covergroup and the type-level number reads 98%. Why might one port still be broken?

The type-level number blends all instances. 98% here is the union of their bins (type_option.merge_instances = 1): three healthy ports hit nearly every bin, and an idle fourth port changes nothing. Per-instance rows make each port visible.

Interview

“Four ports report 98% — are you done?” is the classic opener for this topic. The expected answer names the merge trap, the per-instance fix, and the runtime check across instances.

PreviousNext: option.per_instance & Instance Options

Up next

Up nextoption.per_instance & Instance Options

Sign in to save progress

Practice this lessonReport an error

See also

  • Covergroups & Coverpoints
  • Bins: Explicit, Auto, Illegal & Ignore
  • Cross Coverage