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
    • Path Depth Sensitivity
    • Variation Signoff Dashboard
      • What to Track
      • Margin Trends
      • Comparing Runs Honestly
      • Signoff Package
  • Crosstalk and Noise16
  • ECO and Closure16
  • STA Debug Playbook16
  • STA Interview Prep26
  • Capstone Timing Signoff Lab4
Loading lesson

‹Variation Signoff Dashboard
  1. Topics
  2. Static Timing Analysis
  3. OCV, AOCV, POCV and Variation
  4. Variation Signoff Dashboard
  5. Margin Trends

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

Margin Trends

When margins change between runs, slack changes with them; normalising to a baseline margin separates real progress from margin edits.

On this page

    Why it matters

    A WNS that improves from -0.10 to -0.04 looks like progress. If part of it came from lowering a margin, the design has not improved by that part. Normalising each run to the baseline margin shows the real trend.

    Worked example

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    runs = [("r1", 0.20, -0.10), ("r2", 0.18, -0.05), ("r3", 0.18, -0.04)]     # (run, total margin ns, WNS ns)
    base_margin = runs[0][1]
    norm = {r: round(w + (m - base_margin), 3) for r, m, w in runs}      # WNS as if the baseline margin had been kept
    raw_gain = runs[2][2] - runs[0][2]
    real_gain = norm["r3"] - norm["r1"]
    assert norm == {"r1": -0.10, "r2": -0.07, "r3": -0.06}
    assert round(raw_gain, 3) == 0.06 and round(real_gain, 3) == 0.04
    margin_part = round(raw_gain - real_gain, 3)
    assert margin_part == 0.02
    print("PASS: raw WNS gain", round(raw_gain, 3), "ns; real gain", round(real_gain, 3), "ns; from margin cuts", margin_part, "ns")

    Run

    Total margin (ns)

    Reported WNS (ns)

    WNS at baseline margin (ns)

    r1

    0.20

    -0.10

    -0.10

    r2

    0.18

    -0.05

    -0.07

    r3

    0.18

    -0.04

    -0.06

    From r1 to r3 the reported WNS improved by 0.06 ns. Of that, 0.02 ns is simply the margin being reduced from 0.20 to 0.18 ns; the real improvement from design work is 0.04 ns. Neither number is wrong: the first is what the signoff will see if the new margin is approved, the second is what the design did. A dashboard that shows both prevents arguments.

    What the review looks for

    • Margin changes appear as events on the trend, with the owner who approved them.

    • WNS and TNS trends are shown at the baseline margin as well as at the current one.

    • Margin increases are treated as risk reduction, and decreases as a decision needing approval, not as progress.

    Common pitfall

    Celebrating a trend that is partly a margin edit. If the margin is later restored (for example after a silicon review), the improvement disappears at once.

    Interview

    Name the technique: normalise to a baseline margin.

    Check yourself If run r4 has margin 0.22 ns and WNS -0.08 ns, what is its WNS at the baseline margin?

    -0.08 + (0.22 - 0.20) = -0.06 ns, the same as r3: the apparent worsening comes from the larger margin, not from the design.

    Related topics

    • What to Track

    • Next: Comparing Runs Honestly

    Previous

    103 / 183

    Next: Comparing Runs Honestly

    Up next

    Up nextComparing Runs Honestly

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Signoff Package