Vyges Loom · Optimizer

vyges-buffer-insert

Buffer insertion — when a net is so heavily loaded its driver's transition blows past the limit, split it: a fresh buffer takes over a share of the sinks so the driver switches faster.

View source on GitHub →

What it does

Used by: anyone chasing a max-transition / slew violation on a high-fanout net.

The third of the Loom optimizers, after resize and vt-swap. Those swap a cell for one with the same footprint; this one adds cells. vyges-buffer-insert finds the driver whose output transition most exceeds the limit, splits its net (a fresh buffer drives half the sinks, the driver keeps the rest), rebuilds the timer on the mutated netlist, and keeps the insertion if the worst transition dropped without breaking setup — repeating until every net is under the limit.

netlist + .lib + constraints  ──►  vyges-buffer-insert  ──►  buffered netlist + before/after slew & timing

Structural, and honest about it

Because inserting a buffer changes the netlist topology, each candidate is scored by a full timing build on the mutated netlist — correct, and bounded by the effort budget. A buffer costs a little delay, so on a met design the engine lets it consume slack as long as timing stays met; on a violating one it requires the move not to get worse. It is a pre-place structural fixup: it decides where in the logical net to split and hands placement of the new buffer back to the flow.

The built-in demo relieves a four-fanout net's transition with one buffer while keeping timing met. Sign-off is still the golden timer — these numbers are a fast, license-free guide.

One declarative job

A .bufins file names the buffer: cell to insert, a max_slew: transition limit, a min_fanout: threshold, an effort budget, and dont_touch globs. Add a spef: to score against real interconnect.

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 buffer-insert demo   # instant — built-in example relieves a heavy net, no setup
$ vyges loom buffer-insert run top.bufins -o buffered.v   # buffer → netlist
$ vyges loom buffer-insert run top.bufins --json   # before/after slew + timing

Open core · Apache-2.0

Driven entirely by your Liberty + constraints — no foundry-confidential data, runs out of the box on open PDKs. See all the engines & the data spine →