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
  • Crosstalk and Noise16
    • Delta Delay Mechanism
    • Noise and Glitch Analysis
    • SI ECO Fix Order
      • Fix Order
      • Spacing and Shielding
      • Victim and Aggressor Changes
      • Verifying SI Fixes
    • SI Signoff Reports
  • ECO and Closure16
  • STA Debug Playbook16
  • STA Interview Prep26
  • Capstone Timing Signoff Lab4
Loading lesson

‹SI ECO Fix Order
  1. Topics
  2. Static Timing Analysis
  3. Crosstalk and Noise
  4. SI ECO Fix Order
  5. Victim and Aggressor Changes

Part 7 · Crosstalk and Noise · All levels

Victim and Aggressor Changes

Strengthening the victim helps the victim without touching anything else; slowing the aggressor helps the victim but changes the aggressor's own timing.

On this page

    Why it matters

    Every coupled pair has two ends. Changing the victim's drive affects only the victim and anything driven by it. Changing the aggressor affects every victim it couples to, and the aggressor's own path. The trade-off differs from case to case.

    Worked example

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    import math
    Vdd, Cc, Cg = 0.8, 6.0, 8.0
    def peak(R_ohm, tr_ps):
        tau = R_ohm * (Cc + Cg) / 1000.0
        return (Cc * R_ohm / 1000.0) * Vdd / tr_ps * (1 - math.exp(-tr_ps / tau))
    base = peak(2000.0, 10.0)
    victim_fix = peak(1000.0, 10.0)              # halve the victim driver resistance
    aggressor_fix = peak(2000.0, 40.0)           # slow the aggressor edge from 10 ps to 40 ps
    assert round(base, 3) == 0.288 and round(victim_fix, 3) == 0.245 and round(aggressor_fix, 3) == 0.182
    # delta delay scales with the victim driver resistance (same Cc): halving R halves it
    delta_before, delta_after = 8.28, 8.28 / 2
    assert round(delta_after, 2) == 4.14
    # side effect of slowing the aggressor: its own path loses 12 ps of slack
    aggressor_slack_before, aggressor_extra_delay = 15.0, 12.0
    aggressor_slack_after = aggressor_slack_before - aggressor_extra_delay
    assert aggressor_slack_after == 3.0
    print("PASS: glitch", round(base, 3), "-> victim fix", round(victim_fix, 3), "or aggressor fix", round(aggressor_fix, 3), "; aggressor slack", aggressor_slack_before, "->", aggressor_slack_after, "ps")

    Option

    Glitch peak (V)

    Delta delay (ps)

    Side effect

    Baseline

    0.288

    8.28

    none

    Halve victim driver resistance

    0.245

    4.14

    Area; load on the previous stage

    Slow aggressor edge to 40 ps

    0.182

    smaller (not computed here)

    Aggressor's path loses 12 ps (15 to 3 ps slack)

    A stronger victim driver halves the delta (4.14 ps) and lowers the glitch to 0.245 V. Slowing the aggressor lowers the glitch more, to 0.182 V, but costs the aggressor's own path 12 ps, leaving it with 3 ps of slack: a fix that nearly creates a new problem. The aggressor change also helps every other net that aggressor couples to, which the victim change does not. The choice depends on how many victims share the aggressor and how much slack the aggressor has.

    What the review looks for

    • Aggressor changes are checked on the aggressor's own timing, in every scenario.

    • When one aggressor hurts many victims, changing it is usually cheaper than fixing each victim.

    • Victim changes are checked for their effect on the preceding stage and on the victim's own downstream timing.

    Common pitfall

    Slowing an aggressor that is itself timing-critical. You trade one violation for another; check the aggressor's slack before touching it.

    Interview

    Contrast victim fixes (local, safe) with aggressor fixes (broad, side effects).

    Check yourself When would you prefer to fix the aggressor?

    When one aggressor couples to many victims and has slack to spare, so one change helps several nets without hurting its own timing.

    Related topics

    • Spacing and Shielding

    • Next: Verifying SI Fixes

    Previous

    116 / 183

    Next: Verifying SI Fixes

    Up next

    Up nextVerifying SI Fixes

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Fix Order