The simplest bound on a coupled glitch is a capacitive divider, but real glitches are smaller because the victim driver holds the net while the aggressor moves. The reduction depends on how fast the aggressor switches compared with how fast the victim recovers. Understanding the dependence tells you which fixes work.
upper bound (aggressor infinitely fast, victim not held): V_peak = Vdd * Cc / (Cc + Cg)
victim held by a driver R, aggressor ramp of duration Tr, tau = R * (Cc + Cg):
V_peak = (Cc * R * Vdd / Tr) * (1 - exp(-Tr / tau))import math
Vdd, Cc, Cg, R = 0.8, 6.0, 8.0, 2000.0 # volt, fF, fF, ohm (illustrative)
tau = R * (Cc + Cg) / 1000.0 # ps
def peak(R_ohm, tr_ps, tau_ps):
return (Cc * R_ohm / 1000.0) * Vdd / tr_ps * (1 - math.exp(-tr_ps / tau_ps))
bound = Vdd * Cc / (Cc + Cg)
fast = peak(R, 10.0, tau)
slow = peak(R, 40.0, tau)
strong = peak(1000.0, 10.0, 1000.0 * (Cc + Cg) / 1000.0)
assert round(tau, 1) == 28.0
assert round(bound, 3) == 0.343 and round(fast, 3) == 0.288 and round(slow, 3) == 0.182 and round(strong, 3) == 0.245
assert slow < fast < bound and strong < fast
print("PASS: bound", round(bound, 3), "V; fast aggressor", round(fast, 3), "; slow aggressor", round(slow, 3), "; stronger victim driver", round(strong, 3))Case | Peak (V, 0.8 V supply) | Why |
|---|---|---|
Upper bound (infinitely fast aggressor, no holding) | 0.343 | Pure capacitive divider Cc/(Cc+Cg) |
Aggressor edge 10 ps, victim driver 2 kΩ | 0.288 | Driver holds the net a little during the edge |
Aggressor edge 40 ps, victim driver 2 kΩ | 0.182 | A slower edge gives the driver time to hold |
Aggressor edge 10 ps, victim driver 1 kΩ | 0.245 | A stronger driver recovers faster |
The divider bound is 0.343 V on a 0.8 V supply. The actual peak is smaller, and falls both when the aggressor edge is slower (0.182 V at 40 ps) and when the victim's driver is stronger (0.245 V with half the resistance). The glitch width is related to the same time constant: the pulse lasts roughly as long as the aggressor edge plus the victim's recovery time. These are first-order estimates for intuition; signoff uses the extracted network and the actual cell models.
Peak height and width are both reported for each victim; a report with height only misses half of the receiver's criterion.
The worst victims are those with weak drivers, large coupling, and fast aggressors.
Noise analysis uses the same extraction and the same corner set as delay analysis.
A stronger victim driver (smaller R, quicker recovery) and a slower aggressor edge (a weaker aggressor driver or added slew).