The lowest-risk setup fix is to replace a cell with a faster variant of the same size and pin layout. No wire moves, so parasitics barely change. The price is power: faster threshold cells leak much more. A small calculation shows how to buy the needed delay cheaply.
Variant | Cell delay (ps) | Leakage (units) |
|---|---|---|
HVT (slow, low leakage) | 50 | 1 |
SVT | 44 | 4 |
LVT (fast, high leakage) | 39 | 12 |
# A path of six cells, all HVT at 50 ps. It must gain 35 ps.
cells, needed = 6, 35
options = {"HVT": (50, 1), "SVT": (44, 4), "LVT": (39, 12)} # (delay ps, leakage units)
steps = []
for c in range(cells):
steps.append((6 / 3, c, "HVT->SVT", 6, 3)) # gain 6 ps for +3 leakage
steps.append((5 / 8, c, "SVT->LVT", 5, 8)) # gain 5 ps for +8 leakage
steps.sort(key=lambda s: -s[0]) # best gain per leakage first
gain = cost = 0
chosen = []
for ratio, c, name, g, k in steps:
if gain >= needed:
break
chosen.append((c, name)); gain += g; cost += k
assert [n for _, n in chosen] == ["HVT->SVT"] * 6
assert (gain, cost) == (36, 18)
alt_gain, alt_cost = 4 * (50 - 39), 4 * (12 - 1) # four cells straight to LVT
assert (alt_gain, alt_cost) == (44, 44)
print("PASS: six SVT swaps give", gain, "ps for", cost, "leakage units; four LVT swaps give", alt_gain, "ps for", alt_cost)Swapping all six cells from HVT to SVT gains 36 ps for 18 units of extra leakage. Getting more than needed with four LVT swaps would gain 44 ps but cost 44 units, against 18 units for the cheapest mix that reaches the target; the ratios are illustrative, not measured values. The first step of each cell (HVT to SVT) has the best gain per unit of leakage; the second step (SVT to LVT) is poor value, so LVT is reserved for the last few picoseconds. Sizing a driver up behaves similarly: a good gain at first, diminishing returns, and growing input capacitance on the previous stage.
Swaps are footprint-compatible; any swap that needs a different pin layout is a physical ECO and is treated as one.
Leakage added by swaps is tracked against the power budget, per block.
Faster cells are reserved for paths that really need them; recovery passes return unneeded ones to slower variants at the end.
Two: each gains 6 ps (12 ps for 6 leakage units).