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

AboutRoadmapCareersInternshipsFAQContactPrivacyTerms
Skip to lesson

Course contents

  • How to Use This Course
  • Reading Paths
  • Glossary
  • Metrics Reference
  • Formal Cheat Sheet
  • Formal Foundations19
  • Properties and SVA16
  • Property Development and Constraints19
  • Proof Engines and Convergence23
  • Formal Applications20
  • Equivalence Checking14
  • Formal Coverage and Signoff15
  • Methodology and Debug13
  • Interview Prep15
    • Formal Whiteboard Framework
    • Scenario: A Proof That Will Not Converge
    • Scenario: Everything Proves, Nothing Is Reached
    • Scenario: A Late ECO Breaks Equivalence
    • Scenario: A Deadlock-Like Trace in Arbiter and Fabric
    • Rapid Fire by Theme
      • Rapid Fire: Assume, Assert, and Vacuity
      • Rapid Fire: Induction and Bounded Proofs
      • Rapid Fire: Liveness and SVA
      • Rapid Fire: Abstraction, Equivalence, and Signoff
    • Numeric Drills
    • Spot the Bug in the Answer
  • Capstone: A Chip-Block Verification Lab24
Loading lesson

←Rapid Fire by Theme
  1. Topics
  2. Formal Verification
  3. Interview Prep
  4. Rapid Fire by Theme
  5. Rapid Fire: Assume, Assert, and Vacuity

Part 9 of 10, lesson 8 of 15Part 9 of 10/Interview Prep/Lesson 8 of 15All levels

Rapid Fire: Assume, Assert, and Vacuity

Answer twelve questions on roles, sides, over-constraint, vacuity, covers, mutation, gating, and contracts.

Why it matters

Almost every panel asks the same three probes on every property: what did you assume, what if the trigger never fires, and how do you know the pass is real. This drill makes those answers automatic. Each answer is two sentences; the trap column names the mistake being fished for.

Question

Short answer

Trap

Teaching lesson

Assume or assert: how do you decide?

Assume on primary inputs what the neighbour owes you; assert on outputs what you owe. Every assume is discharged as an assertion on the neighbour or at integration.

Asserting on inputs, which fails on legal traffic.

Assume versus assert

What is over-constraint?

Assumptions that together exclude behaviour the design must handle, so properties pass on a pruned model. Found by unreached activity covers and by a mutant the harness no longer catches.

Calling it a design bug instead of a harness bug.

Over-constraint through covers

What is vacuity?

The antecedent or trigger is never true, so an implication-style property passes without checking anything. A weak sequence that never completes is not vacuous, it is unfinished.

Confusing weak semantics with vacuity.

Vacuous assertions

How do you prove a pass is not vacuous?

Reach the antecedent cover of every implication-style property and an activity cover for the environment, then mutate the design and watch each property fail.

Quoting the passing report as its own evidence.

Vacuity by mutation

What does a cover not reached within N mean?

Inconclusive: nothing about reachability is decided. Only an engine-proved unreachable is unreachable.

Filing a bound miss as proven unreachable.

Bounded cover miss

What is mutation testing of a harness?

Inject one bug per property class and require each property to fail at a stated step. A property that survives its mutant cannot protect the design.

Mutating only the easy paths.

Mutation check of a property

What can reset gating hide?

Two gates, two blind spots. The gate disable iff hides an output that is wrong only while reset is asserted; the history guard skips the cycle after reset and hides a wrong reset value that run mode overwrites. Keep an explicit reset-state check per reset-valued output.

Trusting a gated pass on reset values.

Disable iff and reset

What breaks assume-guarantee soundness?

An assumption about a removed block that is never proved as an assertion on that block, or a circular pair with no induction-on-time argument.

Assuming the contract instead of proving it.

Circular assume-guarantee

Where do black-box outputs come from?

They are free: any value at any cycle until a documented contract constrains them. Passing proofs stay valid; spurious failures are cured by contracts, never by blind tightening.

Treating a spurious failure as a design bug.

Black boxes

How do you port simulation constraints to formal?

Input-side checks become assumes only when the neighbour guarantees them; the same rule asserted in the bench stays an assert at the boundary. Usage rules nobody owes become covers, not assumes.

Assuming the whole testbench.

Assumption ownership

What belongs in an assumption register?

Each assume with its owner, the neighbour assertion discharging it, and the runs it constrains. Reviewed at signoff, rerun on every RTL change.

An undocumented list in one engineer's directory.

The assumption review

A block proves instantly. First move?

Read the cover column, then the cone, then the assumption list. An instant proof is the signature of vacuity, a disconnected property, or reset held for ever.

Celebrating the speed.

Antecedent covers

A reported pass is believed only after the antecedent cover is reached, an activity cover is reached, an injected mutant fails at a stated step, and every assumption has an owner.
The checks that turn a reported pass into evidence, in the order a panel probes them.

Assume that hides a bug. Symptom: every assertion proven and the activity cover unreached. Cause: an input rule pins the signal under test. Fix: remove the rule, assert what the block owes, require the cover. Found by the cover column and an injected bug that must fail.

Answer the three probes before they are asked: state one assumption, name one trigger cover with its step, and cite one mutant. Panels stop probing dimensions you have already answered.

Check yourself Your assume list is longer than your assert list. What does that tell the panel?

That the harness constrains more than it checks: each undischarged assume is a behaviour the proof never examined, and the panel will ask for the owner of every line.

Related topics

  • Scenario: Everything Proves, Nothing Is Reached

  • DV Puzzles: Vacuous Assertion Pass

  • Verification First Principles: Formal and Simulation Drills

Previous

152 / 183

Next: Rapid Fire: Induction and Bounded Proofs

Up next

Up nextRapid Fire: Induction and Bounded Proofs

Sign in to save progress

Practice this lessonPrevious lessonReport an error

See also

  • Rapid Fire: Liveness and SVA
  • Rapid Fire: Abstraction, Equivalence, and Signoff