Violations are visible in any report. The risk is in what is just above zero: endpoints that pass with 5 ps and would fail with a slightly different derate or extraction. A near-critical histogram shows how much of the design sits close to the edge.
Metric | Why it is on the dashboard |
|---|---|
WNS and TNS per check and scenario | The headline, per view and union |
Number of violating endpoints | The size of the fixing job |
Near-critical histogram | How exposed the result is to small changes |
Margins applied (derates, uncertainty) | A result without its margins cannot be compared |
Method and data versions | Tables, sigma data, extraction |
slacks = [-0.03, -0.01, 0.00, 0.004, 0.012, 0.018, 0.027, 0.033, 0.041, 0.060, 0.085, 0.120, 0.180, 0.250, 0.400]
edges = [0.0, 0.02, 0.05, 0.10]
bins = {"violating": 0, "0-20 ps": 0, "20-50 ps": 0, "50-100 ps": 0, ">100 ps": 0}
for s in slacks:
if s < 0: bins["violating"] += 1
elif s < 0.02: bins["0-20 ps"] += 1
elif s < 0.05: bins["20-50 ps"] += 1
elif s < 0.10: bins["50-100 ps"] += 1
else: bins[">100 ps"] += 1
assert bins == {"violating": 2, "0-20 ps": 4, "20-50 ps": 3, "50-100 ps": 2, ">100 ps": 4}
assert sum(bins.values()) == len(slacks)
near = bins["0-20 ps"] + bins["violating"]
assert near == 6
print("PASS: histogram", bins, "; violating plus within 20 ps:", near, "of", len(slacks))Slack band | Endpoints (of 15) |
|---|---|
Violating (below 0) | 2 |
0 to 20 ps | 4 |
20 to 50 ps | 3 |
50 to 100 ps | 2 |
Above 100 ps | 4 |
Two endpoints violate, but six of fifteen are within 20 ps of zero or below it: fixing the two violations leaves four more that a 20 ps change in margin would flip (a 10 ps change flips the two at 0.000 and 0.004 ns). The histogram turns 'two violations' into 'a design with 40% of its endpoints on the edge'. The bin boundaries are a choice; what matters is that the same bins are used in every run.
The same metrics, bins and scenarios in every report so runs can be compared.
The histogram is shown for the union of scenarios as well as for the worst one.
Margins and method versions are printed next to the numbers, not kept in a separate document.
Endpoints at 0.000 and 0.004 ns: two endpoints (0.00 and 0.004), since 0.012 ns is above 10 ps.