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
  • OCV, AOCV, POCV and Variation16
    • OCV, AOCV and POCV Mechanisms
    • Derate Policy and Approval
      • Setting Derates
      • Who Approves Margins
      • Over-Margin Cost
      • Derate Audit
    • Path Depth Sensitivity
    • Variation Signoff Dashboard
  • Crosstalk and Noise16
  • ECO and Closure16
  • STA Debug Playbook16
  • STA Interview Prep26
  • Capstone Timing Signoff Lab4
Loading lesson

‹Derate Policy and Approval
  1. Topics
  2. Static Timing Analysis
  3. OCV, AOCV, POCV and Variation
  4. Derate Policy and Approval
  5. Who Approves Margins

Part 6 · OCV, AOCV, POCV and Variation · All levels

Who Approves Margins

Every margin on a path has an owner and an approval; a ledger makes the total visible and exposes margins nobody owns.

On this page

    Why it matters

    Margins accumulate quietly: a derate here, an uncertainty there, a legacy margin from an earlier project. Each is reasonable alone; together they can be the difference between closing and not closing. A ledger lists them with owners so the sum is deliberate.

    A margin ledger

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ledger = [
        ("OCV derates (setup)",  0.18, "signoff lead"),
        ("clock uncertainty",    0.05, "clock lead"),
        ("IR-drop margin",       0.03, "power lead"),
        ("legacy margin",        0.04, None),
    ]
    total = round(sum(m for _, m, _ in ledger), 3)
    unowned = [(n, m) for n, m, o in ledger if o is None]
    unowned_total = round(sum(m for _, m in unowned), 3)
    assert total == 0.30
    assert unowned == [("legacy margin", 0.04)] and unowned_total == 0.04
    share = unowned_total / total
    assert round(share, 3) == 0.133
    print("PASS: total margin", total, "ns; unowned", unowned, "which is", round(share * 100, 1), "% of the total")

    Margin

    ns (illustrative)

    Owner

    Approval evidence

    OCV derates (setup)

    0.18

    Signoff lead

    Variation data and coverage

    Clock uncertainty

    0.05

    Clock lead

    Jitter and skew budget

    IR-drop margin

    0.03

    Power lead

    Voltage-drop analysis

    Legacy margin

    0.04

    none

    none

    The ledger sums to 0.30 ns, of which 0.04 ns (13%) belongs to nobody. The unowned margin is the one to challenge first: if it has a reason, the owner and evidence get recorded; if it does not, it is removed and the 0.04 ns is returned to the paths.

    What the review looks for

    • Every margin has an owner, a number, an evidence reference and a review date.

    • Changes to a margin are approved by its owner and the signoff lead, and recorded.

    • The total is compared with the previous project or milestone, and increases are explained.

    Common pitfall

    Letting designers add 'just a little' margin to close their own block. Margins added locally are invisible in the total and rarely removed.

    Interview

    Mention the ledger, and that the first question is who owns each line.

    Check yourself If the legacy margin is removed, what is the new total?

    0.30 - 0.04 = 0.26 ns.

    Related topics

    • Setting Derates

    • Next: Over-Margin Cost

    Previous

    95 / 183

    Next: Over-Margin Cost

    Up next

    Up nextOver-Margin Cost

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Derate Audit