If every neighbour were assumed to switch against the victim at the worst possible moment, the crosstalk analysis would be very pessimistic, because in a real chip most neighbours switch at other times. Timing windows make the analysis more realistic. STA knows the earliest and the latest time at which each net can switch, and it only lets an aggressor affect a victim if their windows overlap. This article explains the windows, shows a case where they do not overlap, and describes how the tool lines up the aggressors.
8 min read | Intermediate
What You'll Learn
- Define the timing window of a net
- Decide with the windows whether an aggressor can affect a victim
- Explain aggressor alignment and why the analysis needs several passes
- Estimate how much pessimism the windows remove
The Timing Window of a Net
STA already calculates two times for every net: the earliest arrival, which is used for hold, and the latest arrival, which is used for setup. Together they form the timing window of the net, the range of time in which its edge can happen. The window exists because of the many paths that reach the net and the different delays of rising and falling edges.
In the demo circuit, the output of the first flip-flop (the aggressor net r1) switches between 0.2749 ns and 0.3058 ns after the clock edge. The output of the XOR gate (the victim net) switches between 0.3657 ns and 0.4323 ns:
Overlap Decides
For an aggressor to change the delay of the victim, it has to switch while the victim is switching. If the windows do not overlap, this cannot happen. In the example, the aggressor is finished at 0.3058 ns, and the victim starts at 0.3657 ns, a gap of 0.0599 ns. The aggressor cannot be in the middle of a transition when the victim switches, so there is no crosstalk delay from this neighbour.
The edges are not instant. A signal takes a transition time to change, which is the slew, 0.04 to 0.15 ns in these cells. A good analysis widens the windows by the transition times. For the example, the gap of 0.0599 ns is close to the size of a slew, and a tool with the slews included can find a small overlap. The overlap test has to be made with the edges and not with single points in time.
What It Is Worth
For the same two nets, the setup slack of the path from the first to the second flip-flop was 1.0624 ns with the neighbour assumed to be in the slow-down case and 1.1513 ns with a quiet neighbour. If the windows say that the neighbour cannot switch at the same time, the quiet value applies:
| Assumption | Setup slack (ns) |
|---|---|
| Neighbour always opposes the victim (no windows) | 1.0624 |
| Neighbour cannot switch at the same time (windows do not overlap) | 1.1513 |
The windows give back 0.0889 ns of pessimism on this path. In a design with millions of coupled nets, the effect is large, and it is often the difference between a long list of crosstalk violations and a short one.
Aggressor Alignment
When the windows overlap, the question is how large the effect can be. The tool assumes the worst alignment inside the overlap: the aggressor edge happens at the moment in which it changes the victim delay the most. It does this for each aggressor of a net. A victim can have several aggressors, and the tool combines the effects of those whose windows overlap with the victim, up to a limit.
There is a circular dependency. The window of a net depends on its delay, and the delay depends on the crosstalk, which depends on the windows of the neighbours. The tool therefore does the analysis in several iterations. It starts with wide windows, calculates the delays, narrows the windows, and repeats until the numbers stop changing. The result is a set of windows and delays that agree with each other.
What the Windows Do Not Cover
- Windows are based on the arrival times of the same clock edge. Signals that belong to different clocks can be in any relation, so their windows are treated as overlapping.
- A window is a statement about the timing analysis. It does not say that the aggressor really switches in every cycle. A net that never switches in a given mode can be removed with case analysis, as in the article about case analysis.
Common Mistakes
Mistake #1: Trusting a non-overlap by a small margin
A gap of a few picoseconds between two windows can disappear when the slews, the on-chip variation or a slightly different corner is included. Check the gap against the transition times.
Mistake #2: Treating a crosstalk violation as an aggressor problem only
Both nets matter. A victim with a narrow window and a long coupled wire is sensitive, and it is better to look at the window of the victim and of the aggressor together.
Quick Check: A victim switches between 1.00 and 1.20 ns. An aggressor switches between 1.30 and 1.50 ns. Can it change the delay of the victim, ignoring slews?
No. The windows do not overlap, so the aggressor is not switching while the victim is.
Practice Exercise
Challenge: Find the Overlap
This is a pencil and paper exercise. A victim net has a window from 0.40 to 0.60 ns, with a transition time of 0.10 ns. Aggressor A has a window from 0.20 to 0.30 ns and a transition time of 0.08 ns. Aggressor B has a window from 0.55 to 0.70 ns. Which aggressors can affect the victim? Assume that each edge covers its window plus its own transition time after the latest arrival.
Hint
Extend each window by its transition time at the late end and test whether the ranges share a point.
Solution
The extended window of the victim is 0.40 to 0.70 ns. Aggressor A is extended to 0.20 to 0.38 ns, which ends before 0.40 ns, so it cannot affect the victim. Aggressor B is 0.55 to 0.70 ns, which lies inside the victim window, so it can. Only B has to be included.
Summary
- The timing window of a net is the range between its earliest and its latest switching time.
- An aggressor affects a victim only if their windows overlap, once the transition times are included.
- In the demo circuit the windows of the two coupled nets do not overlap, and the neighbour can be treated as quiet: the setup slack is 1.1513 ns instead of 1.0624 ns.
- Inside an overlap, the tool uses the worst alignment of the aggressor, and it combines several aggressors.
- Windows and delays depend on each other, so the tool iterates until they are consistent.
- Small gaps between windows are not safe once slews and variation are included.