The window analysis knows when a net can switch, but not which nets can switch together. If two aggressors are driven by mutually exclusive conditions, the exclusivity still depends on direction: when a one-hot select moves from i to j, output i falls while output j rises in the same cycle, so a rising and a falling one-hot output can overlap. What is exclusive is two outputs making the same transition (both rising or both falling). Exclusivity is therefore applied per victim transition direction: for a rising victim only the rising aggressors in the group count, and symmetrically for a falling victim. Treating them as exclusive removes real pessimism, and it is a real risk if the exclusivity is not real.
# aggressor: (delta ps, exclusive group or None); one victim transition direction only
aggs = {"a1": (6.0, "onehot"), "a2": (5.0, "onehot"), "a3": (4.0, None)}
all_added = sum(d for d, _ in aggs.values())
free = sum(d for d, g in aggs.values() if g is None)
groups = {}
for d, g in aggs.values():
if g is not None:
groups[g] = max(groups.get(g, 0.0), d)
with_exclusion = free + sum(groups.values())
assert (all_added, with_exclusion) == (15.0, 10.0)
assert all_added - with_exclusion == 5.0
print("PASS: all aggressors", all_added, "ps; with exclusivity", with_exclusion, "ps; removed", all_added - with_exclusion, "ps")Counting all three adds 15 ps. If a1 and a2 are outputs of the same one-hot select, only one of them can make the same transition in a given cycle, so for one victim direction only the larger counts: 6 + 4 = 10 ps, 5 ps less. A one-hot output switching the other way in the same cycle can still overlap and is counted separately against the other victim direction; the model above counts one direction only. That 5 ps is only real if the exclusivity is real.
Claim | Acceptable evidence | Not acceptable |
|---|---|---|
Aggressors are mutually exclusive | A logic proof or a design constraint tied to a one-hot structure, reviewed by the block owner | 'It never happens in simulation' |
Aggressor is inactive in this mode | Case analysis that makes it constant in that mode's constraints | Expecting software to leave it alone |
Aggressors are in logically exclusive clock groups, or clocks proven exclusive by mode | Logically exclusive clock groups in the constraints, or mode analysis proving the clocks exclusive | Assuming the windows will not meet; asynchronous clock groups are treated as overlapping, so they never remove aggressors |
Each exclusivity or case-analysis claim has an owner, an evidence reference and an expiry condition.
Claims are scoped to the instances they apply to; a wildcard applies the claim to nets it was never checked for.
The delay removed by exclusivity is listed in the SI signoff package.
'The two aggressors never toggled together in regression.' Regression covers a tiny fraction of the possible behaviour; the claim needs a structural or constraint-based reason.