Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

vyges-ant — antenna ratio sign-off

Part of the Vyges Loom suite. Install once with vyges install loom, then run vyges loom ant. It’s also a standalone vyges-ant binary on your PATH (the integration contract for flow authors).

vyges-ant answers: will this routing damage a gate during manufacture? While a chip is being built, a metal shape already connected to a transistor gate but not yet to a diffusion path collects charge. If that shape is large relative to the gate, the accumulated charge breaks the gate oxide — a failure that no amount of post-silicon testing can repair. The check is a ratio of collected metal to gate area, evaluated per routing layer against limits the PDK’s LEF states.

Run it

vyges install loom                                   # one-time
vyges loom ant check routed.odb                      # -> verdict, exit 0/1
vyges loom ant check routed.odb -o antenna.json      # report to a file
{
  "status": "clean",
  "count": 0,
  "nets_checked": 42,
  "nets_no_gate": 8,
  "nets_unrouted": 2,
  "layers_without_rules": [],
  "no_rules_found": false,
  "violations": []
}

Exit status is the verdict: 0 clean, 1 violations, 2 error — so CI can gate on it without parsing prose.

See the full CLI reference (generated from --help).

What it computes

For each net, walking routing layers bottom-up:

RatioNumerator
PARmetal on this layer alone
CARmetal on this layer and every layer below
PSRside area (perimeter × layer thickness) on this layer
CSRside area cumulative to this layer

The cumulative forms are not redundant. A net legal on every layer taken individually can still violate CAR, because the charge a gate sees is what the whole connected stack collected, not the worst single layer.

Where it sits

A routed .odb in, an antenna verdict out. It reads the routed database — the same substrate OpenROAD’s ant module uses — rather than a streamed GDS. That choice is the point: a GDS answer arrives after the last stage at which a violation could still be repaired by inserting a protection diode. vyges-drc computes an antenna ratio too, over GDS polygons, post-stream; same ratio, different substrate, different job.

It is a checker. It reports and never modifies a design; repair is a separate, reviewable plan replayed by an applier — the same split the Loom optimizers use, for the same reason.

Two forms of limit, and why it matters

LEF states antenna limits two ways, and a checker that reads only one finds nothing on technologies that use the other:

  • Plain ratios (ANTENNAAREARATIO …) — a constant per layer.
  • Diffusion-dependent PWL ratios (ANTENNADIFFAREARATIO …) — the limit as a piecewise-linear function of the diffusion area connected to the net. More diffusion permits a higher ratio, which is exactly how a protection diode earns relief.

Both are read; where a technology states a diff curve it takes precedence, since that is the limit the foundry characterised for a net carrying that much diffusion. Outside a curve’s stated range the limit is clamped, not extrapolated — a LEF table covers the diffusion areas the foundry characterised, and inventing values beyond either end would be manufacturing an answer the technology never gave.

On sky130 this is the whole check: every routing layer carries an antenna rule object, yet none states a plain ratio. sky130 declares exactly one limit, DiffPSR, as a 4-point curve identical on met1–met3.

Verdicts that are not verdicts

Two situations are deliberately not reported as clean, because nothing was actually checked:

  • no_rules_found — the technology states no antenna limit in either form. Exit 2, not 0. A design whose PDK sets no limits has not passed anything.
  • nets_no_gate — a net with routed metal but no gate area on any connected pin. With no denominator there is no ratio. A large count here means the standard-cell library is missing antenna models and the check covers less than it appears to, which is why the number is in the report rather than swallowed.

Known bounds

Both over-report rather than under-report, so a clean verdict is trustworthy and a reported violation may be spurious:

  1. Metal area double-counts overlap — shapes are summed as raw rectangles, not unioned.
  2. Layer order is routing level, not a manufacturing step model (the standard CAR approximation).

And one gap that belongs to the technology rather than the tool: a ratio stated in neither form is not checked. On sky130 that means only PSR is evaluated.