Vyges Loom · Physical implementation

vyges-drt

Turn route guides into real wires and vias — until no design-rule marker stands.

Pin access, track assignment and search-and-repair, written as a DEF or a database.

View source on GitHub →

What it does

Used by: anyone taking a block to GDS — detailed routing is where the design becomes manufacturable metal.

Global routing says which region each net passes through. Detailed routing draws the actual wires and vias, on tracks, obeying every spacing, width and via rule the technology defines — and keeps repairing until the design is clean.

vyges-drt computes pin access for every cell class and instance, processes the guides, runs track assignment, then iterates search-and-repair until no design-rule marker stands. Nets already routed in the database are kept and counted; the result is written as a DEF or a database.

.odb with route guides  ──►  vyges-drt  ──►  routed DEF or .odb + JSON report

Pin access you can inspect on its own

pin_access is its own command: it groups instances into unique classes, finds every pin's access points — each planar direction and via checked against the design rules — chooses an access pattern per class and per row of abutting cells, and writes the result into the database.

Run it alone to see how your cells will be reached before committing to a full route, or let detailed_route run it as its first stage.

The routing layers and non-default rules are the ones the database already holds — no second copy to drift.

A route with markers is a finding, not a pass

Status is written, markers or error. Written means routed with no design-rule marker standing. Markers means routed and written with markers still standing — reported with its own exit code, so CI cannot mistake a dirty route for a clean one.

Try it

$ vyges install physical   # one-time: fetch the implementation engines into ~/.vyges/bin
$ vyges physical drt detailed_route --db guided.odb --out routed.def   # route the design
$ vyges physical drt pin_access --db placed.odb --out access.odb   # pin access only

Exit status is the verdict: 0 written, routed clean · 1 routed with markers standing · 2 error.

Where it sits in the flow

Right after grt, and before fin fills the gaps. The routed database is what ant checks for antenna damage and extract turns into SPEF.

Open core · Apache-2.0

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 →