vyges physical pdn — CLI reference
Generated from vyges physical pdn --help — this page is the tool’s own output, verbatim.
usage: vyges-pdn generate <db> --out-def <def> --power <net> --ground <net>
[--starts-with power|ground] (default ground)
[--domain <region>:<power>:<ground>] (per grid; region domain)
[--followpins <layer>[:<extend>[:<width>]]] (micron, repeatable)
[--stripe <layer>:<width>:<pitch>:<offset>[:<extend>[:<count>[:<snap>[:<spacing>]]]]]
[--ring <layer0>,<layer1>:<width>:<spacing>:<offset>[:boundary]]
[--pins <layer>[,<layer>...]] (shapes there are never shrunk)
[--split-cuts <layer>:<pitch>[:stagger]] (micron, repeatable)
vyges-pdn global-connect <db> --connect NET:PINPAT:INSTPAT:power|ground|signal
[--connect ...] [--force] [--out-odb FILE]
creates the supply nets and connects matching instance pins to them.
Patterns are FULL matches, as OpenROAD's are. Without this, `generate`
refuses: there is no net to build a grid on.
status is applied or vacuous. VACUOUS IS NOT APPLIED: the rules matched no
pin and nothing was connected. Exit is still 0 -- a design already wired
correctly connects nothing on a second run -- so read connections.
vyges-pdn --describe | --help | --version
⚠️ Shapes are emitted BEFORE trimming, which belongs with the via stage. Compare against
the reference run with `pdngen -skip_trim`.
Contract
Generated from vyges physical pdn --describe.
pdn
power distribution network generation: rings, straps, follow pins and the vias between them
Maturity: structured
generate {odb}
Consumes: odb
Artifacts: pdn_def (def_written)
Assertion: pdn-generated — passes when status equals generated
Provenance limitations
- input_hash covers the argument vector, not the content of the .odb it names.
- MEASURED 2026-08-23 against the upstream pdn goldens at pin 945a9f48dc6e5cc91d865daa92c45a1094cb682c: 110 of 110 comparable cases exact on shapes, vias and block terminals, 0 failing, and 9 of 9 on the diagnostic a refused command raises. A SCORE IS ONLY TRUE OF ONE COMMIT – quote the pin beside it.
- 36 of the suite’s cases are skipped rather than passed, and the reasons are counted, not hidden: 29 build no grid at all, 2 have a reference that built no grid, 2 compute a -pitch in Tcl this translation cannot read, and one each use -existing, repair_pdn_vias and add_sroute_connect.
- Diagnostics implemented so far: PDN-0003, 0004, 0005 (connect rules), 0106, 0107, 0108, 0114, 0117, 0118, 0191 (argument validation), 0185 and 0215 (runtime). A case whose golden names any other code is skipped with that code named, never silently passed.
- status is one of generated, vacuous or error. VACUOUS IS NOT GENERATED: it means the run laid no metal at all, and this assertion passes only on generated, so a no-op fails it rather than reporting a grid that was never built. Zero can still be the right answer for the design; read shapes and decide.
- The engine validates inside the ordinary build path, as the reference does inside addRing and addStrap, so every design it accepts has passed those checks too – the diagnostics are not a separate check mode.
- Written against the upstream pdn regression suite. The algorithm is reimplemented from the published behaviour and the goldens’ implementation-defined details (snapping, tie-breaks, rounding), not transliterated from the source.