Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

vyges physical mpl — CLI reference

Generated from vyges physical mpl --help — this page is the tool’s own output, verbatim.

vyges physical mpl — hierarchical macro placement

USAGE:
  vyges physical mpl place-macro <design.odb> --macro NAME=X,Y[,ORIENT] [--macro ...]
                                 [--dbu] [--out-odb FILE]
  vyges physical mpl --describe
  vyges physical mpl --help

NOT WIRED:
  `run` -- the automatic hierarchical placement -- is NOT reachable from this command line and
  exits 2 if you ask for it. The pipeline IS implemented and correlated against OpenROAD; it is
  driven by the `cluster-dump` binary, which every correlation gate uses. What is missing is the
  entry point, not the algorithm. It is listed here rather than in USAGE because a usage line is
  a promise.

PLACE-MACRO:
  LibreLane `Classic` step 16, `Odb.ManualMacroPlacement` -- the manual placement a real harden
  flow uses. X,Y are the macro ORIGIN in MICRONS (as the MACROS config states them); pass --dbu
  to give database units instead. ORIENT is R0/R90/R180/R270/MX/MY/MXR90/MYR90, default R0.
  Each macro is left FIXED, which is the status LibreLane's step produces.

STATUS:
  0 applied   macros placed and committed
  1 refused   the design cannot be processed as asked (see LIMITS)
  2 usage     bad arguments, or the design could not be read or written
  3 vacuous   nothing to do -- no unfixed macros

LIMITS:
  This engine does not implement TritonPart (OpenROAD's `par`). A FLAT cluster -- one with no
  module children -- whose leaf standard cells exceed the level threshold is REFUSED rather
  than approximated. Upstream's own mpl suite never reaches that path; a large flat block does.

Contract

Generated from vyges physical mpl --describe.

mpl

hierarchical macro placement over the design database

Maturity: structured

place-macro {design}
InputTypeRequiredDescription
dbubooleannoread –macro coordinates as database units, not microns
designstringyespath to the design database (.odb)
macrostringyesNAME=X,Y[,ORIENT] — repeatable; X,Y is the macro ORIGIN in microns unless –dbu
out_odbstringnowrite the database here instead of in place

Consumes: odb

Artifacts: odb (out_odb)

Assertion: macros-placed — passes when status equals applied

Provenance limitations

  • input_hash covers the argument vector, not the content of the .odb it names.
  • THE run COMMAND IS NOT WIRED. This binary exposes place-macro only – LibreLane Classic step 16, Odb.ManualMacroPlacement, the manual placement a real harden flow uses. The automatic hierarchical pipeline IS implemented and correlated, but it is driven by the cluster-dump binary, which is what every correlation gate uses. place-macro places the macros it is told to place and asserts nothing about where they should go.
  • TritonPart (OpenROAD’s par) is NOT implemented. A FLAT cluster – one with no module children – whose leaf standard cells exceed the level threshold is REFUSED rather than approximated. Upstream’s own mpl suite never reaches that path; a large flat block does, so a refusal here is a real design shape and not a corner case.
  • Correlation is measured against upstream’s own 36-design regression suite at the pin above, per stage rather than on the final output: physical hierarchy and design report 34 of 34 byte-exact each; coarse shaping, boundary push and orientation byte-exact on every case that emits a trace; golden DEFs – macro positions, temporary standard cells, halo blockages and clustering groups – 34 of 34 exact. Those gates drive cluster-dump, not place-macro.
  • Every score is true of ONE upstream commit, named in openroad_pin. The reference moves: a score quoted without its pin says nothing.
  • consumes is the generic odb on purpose. mpl supports running BEFORE or AFTER pin placement and the two give DIFFERENT placements, so a fixed predecessor list would be the wrong shape of claim rather than merely the wrong list.