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
    • Model Checking in Plain Terms
      • Transition Systems and Reachability
      • BDDs and SAT in Two Pages
      • Safety as Reachability and the Engine Menu
      • Why Results Differ Between Runs
    • Bounded and Unbounded Results
    • K-Induction in Depth
    • IC3, PDR and Interpolation, Concept Level
    • Fairness, Lassos and Liveness-to-Safety
    • Proof Convergence Tactics
  • Formal Applications20
  • Equivalence Checking14
  • Formal Coverage and Signoff15
  • Methodology and Debug13
  • Interview Prep15
  • Capstone: A Chip-Block Verification Lab24
Loading lesson

←Model Checking in Plain Terms
  1. Topics
  2. Formal Verification
  3. Proof Engines and Convergence
  4. Model Checking in Plain Terms
  5. Safety as Reachability and the Engine Menu
On this page

    Part 4 of 10, lesson 3 of 23Part 4 of 10/Proof Engines and Convergence/Lesson 3 of 23All levels

    Safety as Reachability and the Engine Menu

    One table of engines with what each proves, refutes and costs, plus the decision rule for which engine you try first on which design.

    Why it matters

    A proof task arrives as one line in a plan, and somebody must choose how to attack it: bounded search for the quick bug, induction for the control invariant, a learning engine when no helper is in sight, abstraction when the state space dwarfs every engine. The wrong choice costs days. This lesson is the menu those choices are read from.

    The core idea

    Every engine below answers the same reachability question and differs in what it can conclude. Only an exact or inductive argument proves; only a search from reset refutes. Exact BDD reachability computes the reachable set itself, so it proves and refutes, at a cost set by diagram size. Bounded search unrolls a fixed number of steps: it refutes with a counterexample or reports bounded to N, and never proves unbounded safety alone. K-induction checks a base case from reset plus a step from arbitrary states: a pass proves, and only the base case refutes, because a step failure may start from an unreachable state and is inconclusive on its own. Interpolation and IC3-style learners build their own over-approximations and invariants: they can prove without a hand-written helper but can stall on wide datapaths. Abstraction refinement shrinks the model, proves or refutes on the small one, and refines when the counterexample is spurious.

    Tools run these as a portfolio, trying several in parallel and keeping whichever answers first. That is why the same property can be proven by induction on one design and by a learning engine on the next: which engine finishes first is a property of the design, not of the property shape.

    Engine

    Can prove

    Can refute

    Cost driver

    Common failure

    BDD reachability

    Yes, exact fixed point

    Yes, a shortest trace from the layers

    Diagram size under the variable order

    Order blow-up on arithmetic and wide state

    Bounded search

    No: bounded to N only

    Yes, shortest trace

    Gates times depth

    A bug past the bound is invisible

    K-induction

    Yes, base and step to the same k

    Only through its base case; a step failure alone is inconclusive

    Window k, helper quality

    Non-inductive property, CTI from an unreachable state

    Interpolation

    Yes, when the over-approximation closes

    Yes, when the bounded check from the real reset finds a trace; from an approximated start a failure only lengthens the bound

    Proof width, datapath

    Does not converge on arithmetic

    IC3 or PDR

    Yes, via a grown inductive invariant

    Yes, a concrete trace once a blocked state reaches reset

    Clause learning, state bits

    Stalls on deep counters and wide data

    Abstraction refinement

    Yes, on the small model, if it over-approximates

    Yes, once the trace replays on the full model

    Refinement rounds

    Spurious traces never end

    Decision flowchart: if control logic dominates, try k-induction or IC3 with helpers read from counterexamples to induction; otherwise if an arithmetic datapath dominates, use bounded search with the data abstracted; otherwise for a deep counter use induction with the counter abstracted.
    Which engine to try first, by what dominates the design; a real tool runs several in parallel.

    What the review looks for

    • The plan names an engine per property family, not one engine for everything.

    • Every bounded entry carries its depth and its justification, never a bare pass.

    • Properties that need induction name their helpers, and every helper is itself proven.

    Verify and debug

    Match the design to the engine before the run, with the ladder above: control-dominated logic with clean invariants favours induction; wide arithmetic favours bounded search plus abstraction; deep counters favour induction or a counter abstraction, because a bound would have to reach the depth; unknown territory favours the portfolio with a time budget. When the run disagrees with the choice, the convergence topic tells you which measurement to take first.

    A team standardises on bounded search for every property because it is fast and always answers. Deep control bugs past the bound survive to silicon while the dashboard stays clean. The symptom is escaped bugs with passing bounded runs; the fix is induction or a justified bound per property, found by mutating the design with deep triggers and watching which proofs notice.

    If asked which engine you would use, answer with the decision rule: bounded search to find bugs quickly, induction to prove control with helpers, learning engines when no helper is known, abstraction when the state space dominates. Then name the cost that dominates each and the failure that each hides.

    Check yourself A bounded run passes and an inductive run on the same property stays inconclusive. Is the property proven?

    No. The bounded pass says nothing beyond its depth, and the inconclusive run says nothing at all. The property is unproven until induction, or another unbounded engine, passes on the same model and assumptions.

    Related topics

    • Previous: BDDs and SAT in Two Pages

    • Next: Why Results Differ Between Runs

    • Formal: Bounded and Unbounded Results

    • First Principles: Proving DCRouter

    Previous

    62 / 183

    Next: Why Results Differ Between Runs

    Up next

    Up nextWhy Results Differ Between Runs

    Sign in to save progress

    Practice this lessonPrevious lessonReport an error

    See also

    • Transition Systems and Reachability