Vyges Loom · Optimizer

vyges-resize

Gate sizing — pick a better drive strength for each cell to close setup timing or recover area. Where sign-off says what's wrong, this fixes it.

View source on GitHub →

What it does

Used by: anyone closing timing on a synthesized or placed netlist — or trimming area/power once it's met.

vyges-resize reads a netlist + Liberty + constraints and picks a better drive strength for each cell — upsizing cells on the critical path to close setup violations, downsizing cells with slack to recover area — then emits the resized netlist and a before/after timing report. The logic never changes; only the cell variant does. Every candidate is scored by the vyges-sta-si timer — it's pure Rust, so you can experiment with GPUs too via rust-gpu. It picks sizes, not locations: placement and routing stay the flow's job.

netlist + .lib + constraints  ──►  vyges-resize  ──►  resized netlist + before/after timing

Pre-place, or post-place ECO

Run it two ways:

Exercised on real OpenROAD-routed sky130 with its extracted SPEF, and on built-in examples it closes a setup violation end-to-end. Sign-off is still the golden timer — vyges-resize's numbers are a fast, license-free guide.

One declarative job

A .resize file is a superset of a timing job: it adds the interchangeable cell families (weakest → strongest), the objective (timing or area), an effort budget, and dont_touch globs. Add a spef: for post-place ECO. The legal moves come entirely from your .lib — nothing foundry-confidential.

Standard CLI: --json, --quiet, --verbose, and a --fail-on-violation exit code that gates CI.

Try it

$ vyges install loom   # one-time: fetch the Loom suite into ~/.vyges/bin
$ vyges loom resize demo   # instant — built-in example closes a setup violation, no setup
$ vyges loom resize run top.resize -o sized.v   # size → resized netlist
$ vyges loom resize run top.resize --fail-on-violation   # exit 3 if still violating — CI gate

Open core · Apache-2.0

Sizing is driven entirely by your Liberty — the legal variants and their delay/power — so vyges-resize carries no foundry-confidential data and runs out of the box on open PDKs. See all the engines & the data spine →