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

  • How to Use This Course
  • Reading Path
  • STA Glossary
  • STA Metrics Reference
  • STA Mastery Cheatsheet
  • Timing Paths and Checks16
  • Constraints & SDC Fundamentals20
  • Delay Graph & Path Analysis16
  • Beyond Setup and Hold16
  • Multi-Corner Multi-Mode Signoff16
    • Corner and Mode Matrix Design
    • Library Sets and Operating Conditions
    • Signoff vs Implementation Views
    • MMMC Debug Playbook
      • Symptoms to Views
      • Per-View Triage
      • Scenario Bisect
      • Reporting by View
  • OCV, AOCV, POCV and Variation16
  • Crosstalk and Noise16
  • ECO and Closure16
  • STA Debug Playbook16
  • STA Interview Prep26
  • Capstone Timing Signoff Lab4
Loading lesson

‹MMMC Debug Playbook
  1. Topics
  2. Static Timing Analysis
  3. Multi-Corner Multi-Mode Signoff
  4. MMMC Debug Playbook
  5. Per-View Triage

Part 5 · Multi-Corner Multi-Mode · All levels

Per-View Triage

Group endpoints by the set of views they fail in; each group has a different owner and a different fix.

On this page

    Why it matters

    Thousands of failing endpoints are not thousands of problems. Endpoints that fail in the same set of views usually share a cause. Grouping them by failing-view signature reduces a list to a handful of work items.

    Worked example

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    from collections import defaultdict
    views = ["func_ss", "func_ff", "scan_ss"]
    slack = {     # endpoint -> slack per view (ns), setup and hold together are not mixed here: setup slack only
        "e1": [-0.04, 0.20, 0.10], "e2": [-0.06, 0.18, 0.12], "e3": [-0.03, -0.02, 0.05],
        "e4": [0.10, 0.15, -0.07], "e5": [-0.05, 0.19, 0.11], "e6": [0.22, 0.30, 0.25],
    }
    groups = defaultdict(list)
    for ep, s in slack.items():
        sig = tuple(v for v, x in zip(views, s) if x < 0)
        if sig:
            groups[sig].append(ep)
    assert dict(groups) == {("func_ss",): ["e1", "e2", "e5"], ("func_ss", "func_ff"): ["e3"], ("scan_ss",): ["e4"]}
    sizes = sorted(((len(v), k) for k, v in groups.items()), reverse=True)
    assert sizes[0] == (3, ("func_ss",))
    print("PASS: groups", {k: v for k, v in groups.items()})

    Signature

    Endpoints

    Interpretation

    func_ss only

    e1, e2, e5

    Slow-corner functional setup failures: the main closure work

    func_ss and func_ff

    e3

    Fails setup in two corners of one mode: severe, likely a real structural problem; setup can still fail in the fast view where fixed external delays or dominating clock skew outweigh the faster cells

    scan_ss only

    e4

    Scan-mode problem: constraints or scan logic, independent of the functional work

    Six endpoints become three groups and one clean one. The three that fail only in the slow functional view are one work item. The endpoint failing setup in two functional views needs separate attention because it is already failing in a second corner, which is physically plausible where fixed external delays or dominating clock skew outweigh the faster cells in the fast view. The scan failure has a different owner.

    What the review looks for

    • A triage table with signature, count, owner and next action, reviewed every day during closure.

    • Signatures with one endpoint are not ignored: a singleton can be the most severe.

    • Groups are reassigned when a fix changes the signature of its members.

    Common pitfall

    Sorting by worst slack alone. A mildly failing endpoint that fails in four views can matter more than a deeply failing one that fails in one.

    Interview

    Offer the term 'failing-view signature' and the idea of one work item per signature.

    Check yourself In the example, which group would you give to the owner of the scan logic?

    The scan_ss only group (e4): it fails only in the scan scenario.

    Related topics

    • Symptoms to Views

    • Next: Scenario Bisect

    Previous

    87 / 183

    Next: Scenario Bisect

    Up next

    Up nextScenario Bisect

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Reporting by View