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
      • Scoring Rubric and Structure
      • Whiteboard Questions 1 to 6
      • Whiteboard Questions 7 to 12
    • 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
    • Numeric Drills
    • Spot the Bug in the Answer
  • Capstone: A Chip-Block Verification Lab24
Loading lesson

←Formal Whiteboard Framework
  1. Topics
  2. Formal Verification
  3. Interview Prep
  4. Formal Whiteboard Framework
  5. Scoring Rubric and Structure
On this page

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

    Scoring Rubric and Structure

    Score any answer 0 to 4 per dimension using anchors, a worked weak and strong answer, and five acceptance checks.

    Why it matters

    A candidate is asked whether a block that proves in three seconds can be trusted. They say yes, the tool is fast on small blocks. That is one sentence of mechanism and nothing else, and it scores 3 out of 16. The same candidate, given the four-part shape, lists what the speed could be hiding: no traffic, a disconnected property, a hidden assumption. Strong answers are not longer; they spend one sentence on each dimension the rubric grades.

    Job of this lesson: teach the rubric anchors, score one weak and one strong answer to the fast-proof question, and give the five checks, with target numbers, that turn speed from a suspicion into evidence.

    The core idea

    Each dimension scores 0 when absent, 1 when vague or wrong, 2 when right but generic, 3 when specific and mostly correct, and 4 when specific, correct, and anticipating failure modes with checks. The total is 16: 13 or more is a strong answer, 9 to 12 acceptable, below 9 misses a dimension. Panels calibrate differently, but the shape is stable: specifics earn 3s, failure modes earn 4s.

    Dimension

    Scores 2 (generic)

    Scores 3 (specific)

    Scores 4 (anticipates failure)

    Assumption

    Some assumptions were made.

    Reset is synchronous active high for one cycle; inputs are free except the named protocol rule.

    Plus: the excluded input class and where it is verified instead.

    Mechanism

    The tool unrolls the design.

    Bounded check to depth N; induction base plus step at k; the failing step named.

    Plus: why that k closes and what a counterexample to induction would mean.

    Trade-off

    We could try harder.

    Bounded to 20 versus full induction; small parameter versus tracked-slot abstraction.

    Plus: what flips the choice, with the cost in the same units.

    Evidence

    It passes and covers pass.

    Antecedent cover reached at step S; mutation kills the property; cone lists the signals.

    Plus: the ledger entry tying result to RTL revision and assumption list.

    The fast-proof question answered weakly: the block is small, so three seconds is plausible, and it passed, so it is clean. Assumption 1, Mechanism 1, Trade-off 0, Evidence 1: total 3. Answered strongly: the speed is consistent with the 4-entry FIFO property set closing at induction depth 2, but speed is also the signature of vacuity, so the answer lists the five checks below and the number each must show. Assumption 3, Mechanism 3, Trade-off 3, Evidence 4: total 13.

    The five acceptance checks

    No proof is believed until all five hold, each with a number to show.

    Check

    What it catches

    Acceptance evidence (target)

    Antecedent cover

    A trigger that never fires

    100 per cent of antecedent covers reached, each with its step.

    Activity cover

    Reset held or an idle environment

    At least one real-traffic cover reached within the bound.

    Cone contents

    A disconnected property

    Every signal the property names is in its cone; none missing.

    Mutation

    A property that cannot fail

    100 per cent of the injected bugs, one per property class, killed at stated steps.

    Assumption list

    An assume that hides a bug

    Zero unowned assumptions: each has an owner and a neighbour assertion.

    Worked example: the rubric as a calculator

    The scorer adds the four dimensions and refuses a total when any dimension is missing, because a missing dimension is the commonest way a correct answer fails. The second call shows the guard working: a mechanism-only answer is rejected, not scored low.

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    def score(answer):
        dims = ["assumption", "mechanism", "tradeoff", "evidence"]
        for d in dims:
            assert d in answer, "missing dimension: " + d
            assert 0 <= answer[d] <= 4, "out of range: " + d
        return sum(answer[d] for d in dims)
    
    weak = {"assumption": 1, "mechanism": 1, "tradeoff": 0, "evidence": 1}
    assert score(weak) == 3, score(weak)
    strong = {"assumption": 3, "mechanism": 3, "tradeoff": 3, "evidence": 4}
    assert score(strong) == 13, score(strong)
    # The failing variant: a mechanism-only answer must be rejected, not totalled.
    try:
        score({"mechanism": 4})
        raise SystemExit("scorer accepted a missing dimension")
    except AssertionError as e:
        assert "missing dimension" in str(e), e
    print("PASS: weak 3/16, strong 13/16, missing dimension rejected")

    What the reviewer looks for

    • Every dimension is visible: assumptions before the mechanism uses them, an alternative costed, a check named.

    • Numbers come from runs: depths, steps and cone sizes are quoted with the run that produced them.

    • A bounded result is never filed as a proof: it says bounded to N with its justification beside it.

    False pass from unread covers. Symptom: every assertion reports proven while the cover column shows unreached covers on a side page. Cause: assumptions exclude all interesting behaviour. Fix: unreached covers on required scenarios fail signoff, each with an owner. Found by the five checks, above all the antecedent and activity covers.

    Open with the four words: assumption, mechanism, trade-off, evidence. Interviewers who hear the structure relax, because they can follow where the answer is going. When a probe lands, answer the dimension it targets.

    Check yourself A proof passes in three seconds and all covers are reached. Do you believe it?

    Nearly: reached covers plus a fast proof fit a small cone, but belief also needs mutation and the assumption list, because covers do not catch an assumption that hides a bug.

    Related topics

    • Next: Whiteboard Questions 1 to 6

    • Antecedent Covers and Witness Traces

    • Scenario: Everything Proves, Nothing Is Reached

    • DV Puzzles: Vacuous Assertion Pass

    Previous

    145 / 183

    Next: Whiteboard Questions 1 to 6

    Up next

    Up nextWhiteboard Questions 1 to 6

    Sign in to save progress

    Practice this lessonPrevious lessonReport an error

    See also

    • Whiteboard Questions 7 to 12