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 pad — CLI reference

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

vyges physical pad — IO pad and bump placement: the ring around the die, and what sits in it

USAGE:
  vyges physical pad make-fake-io-site <design.odb> --name N --width W --height H  (microns)
  vyges physical pad make-io-sites  <design.odb> --horizontal-site S --vertical-site S
                                --corner-site S --offset D [options]
  vyges physical pad place-corners  <design.odb> --master M [--ring-index N] [options]
  vyges physical pad place-pad      <design.odb> --row R --location D [--master M]
                                [--mirror] --inst NAME [options]
  vyges physical pad make-io-bump-array <design.odb> --bump M --origin 'X Y' --rows N
                                   --columns N --pitch 'DX [DY]' [--prefix P] [options]
  vyges physical pad place-pads <design.odb> --row R --insts 'A B C' [--mode M] [options]
  vyges physical pad place-io-fill <design.odb> --row R --masters 'A B C'
                              [--permit-overlaps 'M'] [options]
  vyges physical pad place-io-terminals <design.odb> --pins 'PATTERN...'
                                   [--allow-non-top-layer] [options]
  vyges physical pad rdl-route <design.odb> --layer L [--width W] [--spacing S]
                          [--allow45] [--grid-only] [options]
  vyges physical pad assign-io-bump <design.odb> --bump INST --net N
                               [--terminal INST/PIN] [--dont-route] [options]
  vyges physical pad connect-by-abutment <design.odb> [options]
  vyges physical pad place-bondpad <design.odb> --bond M --insts 'PATTERN...'
                               [--offset 'X Y'] [--rotation R] [--prefix P] [options]
  vyges physical pad remove-io-bump <design.odb> --inst NAME [options]
  vyges physical pad remove-io-bump-array <design.odb> --bump M [options]
  vyges physical pad --describe
  vyges physical pad --help

OPTIONS:
  --horizontal-site S    site tiling the LEFT and RIGHT rows (required)
  --vertical-site S      site tiling the BOTTOM and TOP rows (required)
  --corner-site S        site tiling the four corners (required)
  --offset D             inset from the die on every edge, in MICRONS (required)
  --rotation-horizontal R  rotation applied to the left/right rows (default R0)
  --rotation-vertical R    rotation applied to the bottom/top rows (default R0)
  --rotation-corner R      rotation applied to the corners (default R0)
  --ring-index N         suffix the row names with _N, for a design with several rings
  --master M             the cell to place
  --row R                the IO row to place into (place-pad)
  --location D           where along that row, in MICRONS (place-pad)
  --inst NAME            the instance to place or create (place-pad)
  --mirror               mirror the pad about the row
  --bump M               the bump master (make-io-bump-array)
  --origin 'X Y'         the lower-left bump, in MICRONS
  --rows N / --columns N the shape of the array
  --pitch 'DX [DY]'      spacing in MICRONS; one value means both axes
  --prefix P             instance name prefix (default BUMP_)
  --insts 'A B C'        the pads to spread along a row (place-pads)
  --mode M               uniform | linear | bump_aligned | placer | default
  --out-odb FILE         write the database here (default: IN PLACE, over the input)
  --out-def FILE         also write the result as DEF (for diffing against a golden)
  --dry-run              report the ring, write nothing
  -o FILE                write the report to FILE instead of stdout
  --json                 emit JSON (the default)
  --describe             print a machine-readable JSON description of the command

EXIT STATUS:
  0  ok       the ring was created
  1  refused  the die cannot carry a ring with these sites and offsets
  2  error    usage error, unreadable database, unknown site, or a failed write

Contract

Generated from vyges physical pad --describe.

pad

IO pad and bump placement: the ring of IO rows around the die, and the cells placed into it

Maturity: structured

make-io-sites {odb}
InputTypeRequiredDescription
odbstringyespath to the design database (.odb)
horizontal_sitestringyessite for the left and right rows
vertical_sitestringyessite for the bottom and top rows
corner_sitestringyessite for the four corners
offsetstringyesinset from the die on every edge, in microns
out_odbstringnowrite the database here instead of in place
outstringnowrite the report to FILE instead of stdout

Consumes: odb

Artifacts: ring_report (report_path)

Assertion: ring-created — passes when status equals ok

Provenance limitations

  • input_hash covers the argument vector, not the content of the .odb it names.
  • SCOPE: every command listed in –help is implemented and dispatched – the fake IO site (make-fake-io-site), the ring (make-io-sites), corner and pad placement (place-corners, place-pad, place-pads), IO fill, bond pads, terminals, the bump array and its removal, bump assignment, connection by abutment, and RDL routing. WHAT DIFFERS ACROSS THEM IS EVIDENCE, NOT EXISTENCE: the ring and corner/pad placement are measured against upstream cases (see MEASURED below); the rest are tested but not yet scored against a reference. An earlier version of this line claimed five of these were not implemented long after they shipped – read a scope claim as a statement about EVIDENCE and check it against –help, which is generated from the same dispatch.
  • A cell is refused a position by a LAYER-AWARE check, not a bounding-box one: a fixed instance blocks by box refined by its OVERLAP-layer outline where either side declares one, and anything sharing a layer blocks when the moving cell’s shapes, grown by that layer’s spacing, reach it. A COVER master (a bump) never blocks by box – only by shared metal.
  • SIMPLIFICATION: shape nets are not carried, so two shapes on the same net are treated as a conflict. The reference lets them touch. A cell being created has no nets, which is why every supported case is unaffected; a command placing already-connected cells would need them.
  • ABSENCE, stated because the SCOPE line above lists what EXISTS and is therefore silent about what does not. ONE of upstream’s fifteen commands has no counterpart here: remove_io_rows, which upstream ships and nothing tests. make_fake_io_site WAS also absent and is now implemented as make-fake-io-site, which is what unblocks the two largest pad designs upstream ships – skywater130_caravel and skywater130_coyote_tc both open with it. Three OPTIONS of commands that do exist are not honoured: rdl-route --bump-via and --pad-via name an access via this engine does not build and are now REFUSED with exit 3 rather than accepted and ignored; assign-io-bump --dont-route writes nothing, which is faithful – upstream stores it only in ICeWall::routing_map_, a member of the command object – but it therefore cannot reach rdl-route, which is a separate process here, so a bump upstream would leave alone is routed. Upstream has the same hole across its own write_db.
  • RDL ROUTING is implemented here (rdl-route), not deferred elsewhere: bumps are connected to pads across the face of the die on one thick layer, over a graph built from that layer track grid and thinned so neighbouring wires cannot come closer than the requested spacing. This limitation previously said the router was deliberately out of scope, which stopped being true when it was built.
  • The ring is the die area inset by the offset, corners sized from the corner site, and four edges truncated to WHOLE sites – a remainder that does not fill a site is given up rather than rounded out.
  • A corner’s WIDTH is the larger of the corner site’s width and the horizontal row’s depth, so the row abutting it can be what sets the corner size.
  • The left and right rows are laid on their side when the horizontal and vertical sites are THE SAME SITE, and upright when they differ. The reference compares the site objects; this command compares the names it was given, which is the same thing for a name that resolves to one site.
  • MEASURED: the ring reproduces the reference row output exactly – name, site, origin, orientation, direction, site count and pitch – on all 26 cases that build one, including three real sky130 designs. Pad and corner placement match on all 6 comparable cases.
  • Written against the upstream pad sources at pin 945a9f48dc6e5cc91d865daa92c45a1094cb682c. The algorithm is reimplemented from the published behavior, not transliterated.