Vyges Loom · Optimizer

vyges-vt-swap

Threshold-voltage swapping — trade a cell for a higher- or lower-Vt flavor of the same footprint to cut leakage while holding timing, or to close setup.

View source on GitHub →

What it does

Used by: anyone with leakage budget to recover after timing closes — or a few stubborn paths to speed up.

A higher-Vt flavor of a gate is slower but leaks far less; a lower-Vt flavor is faster but leakier. vyges-vt-swap is the sibling of vyges-resize — same idea, same timer-scored loop, but it trades threshold voltage (leakage/speed) rather than drive strength (area/speed). Two objectives, the inverse of each other:

netlist + .lib + constraints  ──►  vyges-vt-swap  ──►  resized netlist + before/after timing & leakage

Same footprint, less leakage

Because the swap keeps the same footprint, placement and routing are untouched — run it as a post-place ECO and hand the netlist back to the flow. It reports total cell leakage before and after (read from the .lib's cell_leakage_power) alongside the timing it preserved; the built-in demo recovers a large share of leakage on a met design without moving WNS below zero. It's pure Rust — experiment with GPUs too via rust-gpu.

Sign-off is still the golden timer — these numbers are a fast, license-free guide.

One declarative job

A .vtswap file lists the iso-footprint Vt families fastest → slowest (low-Vt → high-Vt), the objective (leakage or timing), an effort budget, and dont_touch globs. Add a spef: to score against real interconnect. The legal flavors come entirely from your .lib.

Standard CLI: --json, --quiet, --verbose, --fail-on-violation for CI.

Try it

$ vyges install loom   # one-time: fetch the Loom suite into ~/.vyges/bin
$ vyges loom vt-swap demo   # instant — built-in example recovers leakage, no setup
$ vyges loom vt-swap run top.vtswap -o swapped.v   # swap → resized netlist
$ vyges loom vt-swap run top.vtswap --json   # before/after timing + leakage

Open core · Apache-2.0

Swapping is driven entirely by your Liberty — the Vt flavors and their delay/leakage — so vyges-vt-swap carries no foundry-confidential data. See all the engines & the data spine →