Vyges Loom · Physical implementation
Seat every cell on a legal site — then prove it.
Legalization, filler cells, mirroring and a checker across all nine placement-rule families.
Used by: anyone between global placement and routing — an illegal placement turns into a routing failure or a DRC error later, and much harder to trace.
Global placement puts cells close to where they should be, not where they can be. Detailed placement moves each one onto a legal site — on a row, aligned to the site grid, overlapping nothing — while moving it as little as possible.
vyges-dpl legalizes with a negotiation legalizer (or a diamond search, if you choose), honouring edge spacing, padding, one-site gaps and pins kept clear of power-via metal. It places and removes filler cells, optimizes cell mirroring for wirelength, and checks any placement — its own or anyone else's.
.odb ──► vyges-dpl ──► legalized .odb + placement check (per rule family)
check-placement evaluates all nine rule families: site alignment, placed, overlap, in-rows, region placement, padding, edge spacing, blocked layers and one-site gaps. Each failing cell is named under the family that failed it.
Edge spacing reads the library's own cell-edge rules and the technology's spacing table straight from the database — no separate rule file to keep in sync.
A family that cannot run on a design is named in the report, never passed over in silence — a clean verdict from a partial check must not read as a complete one.
Status is legalized, clean, vacuous, failed or error — and vacuous is not clean: a design with no instances is an absent placement, not a legal one. Any instance left out of a run is named and counted, so nothing disappears from the answer unnoticed.
Exit status is the verdict: 0 legalized, clean or vacuous (read the count) · 1 a cell could not be seated, or a check found violations · 2 error.
A clean-room Rust engine working on the shared design database through vyges-opendb, so the block you check is the block you built. See all the engines & the data spine →