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-gpl — global placement

Physical construction — opt-in, and not part of vyges install loom. These engines build the design database that the sign-off and verification engines read, so they install as their own group:

vyges install physical   # all of them
vyges install gpl        # just this one

It is also a standalone vyges-gpl binary on your PATH, which is what the dispatch calls and what a flow author targets directly. Source: vyges-tools/gpl.

vyges-gpl answers: where does each movable instance start? It builds the placer’s view of the design and runs the initial placement — and every coordinate it produces matches the reference placer’s bit for bit, because the solver’s arithmetic is carried out in the same order.

stagedecides
constructionthe core, the site, the instances (fixed ones snapped outward to whole sites, padding on the movable ones), each instance grown or shrunk toward the design’s average pin density (between 0.95× and 1.2× per side), the signal and clock nets and their pins, regions, dummy instances over every site no row covers
start pointsa grouped instance at its region’s centre, a placed one at its own centre, the rest at the core’s centre
each roundeach net’s extreme pins; the bound-to-bound weights (a net’s weight over its pin count, over the distance, never under 1500 DBU); the x and y systems solved by BiCGSTAB; the instances moved, clamped to the core and region
stopafter 20 rounds, or once the residual is at most 1e-5 after round 5

Not yet: the Nesterov placement. A full global_placement is refused after the initial placement (modelled_through: initial_place); with -skip_nesterov_place the initial placement is the whole command and the design is written (write_def).

Run it

vyges physical gpl global_placement job.json -o report.json   # steps: read_db … global_placement
vyges physical gpl --describe                                  # the contract, as JSON

Status and exit codes

statusexitmeaning
placed0-skip_nesterov_place: the design initially placed
refused3an input this engine does not model, or a Nesterov placement to run (reason)
vacuous2the job has no global_placement step — NOT a pass
error2an error the command raises; its line is the last in lines