Placement
Each card shows a command to explain. A missed card returns later in the round and starts the schedule over. A card answered correctly moves up the schedule and next appears after 1, 3, 7, then 21 days. Keys 1 to 4 choose an option, h shows a hint, and Enter moves on. A hint keeps the card where it is on the schedule. An ordering card is answered by clicking its items in order, and one wrong click ends it. Time values are in nanoseconds. Progress is stored in this browser.
All 11 cards in this section, with answers
-
global_placement -density 0.7Spreads the cells for short wires, up to 70% density per bin.
Hint: Global placement is analytical: cells get positions, not legal ones.
Cells may still overlap; legalization comes later. The placer balances wirelength against a density penalty on a grid of bins, so cells end up near where they belong but not on legal sites. A lower target density spreads cells further apart, which eases routing and costs wirelength. OpenROAD reference
-
global_placement -timing_driven -routability_drivenWeights critical nets and inflates congested areas while placing the cells.
Hint: Both flags make the placer care about something beyond wirelength, and both cost runtime.
Timing-driven mode runs a virtual
repair_designto find slacks and weights low-slack nets so they are shortened; it needsset_wire_rcfor the estimates. Routability-driven mode estimates congestion and inflates the cells in congested tiles to spread them. OpenROAD reference -
detailed_placement -max_displacement {5 1}Legalizes the cells onto rows, moving each at most 5 sites, 1 row.
Hint: Global placement leaves cells overlapping and off-site. Ask what fixes that, and what the limit restricts.
The displacement limit is in sites and rows. Legalization removes overlaps and snaps cells to legal sites while keeping them near where global placement put them. The displacement limit caps how far a cell may be moved to find a legal spot. OpenROAD reference
-
check_placement -verboseReports the cells that are not legally placed, and why.
Hint: It only looks. Ask what would make a placement illegal.
Overlapping, off-site, and out-of-row cells are all reported. It is the gate between placement and the stages that assume legality. A script runs it after legalization and stops if anything is reported;
-report_file_namewrites the list to a file. OpenROAD reference -
set_placement_padding -global -left 1 -right 1Keeps one empty site on each side of every cell when legalizing.
Hint: The padding is measured in sites, and it exists for the steps that come after placement.
The padding is in sites, applied on both sides of each cell. The reserved sites give the router room to reach pins and leave space for buffers added later by repair. Padding applies to legalization, so it is set before
detailed_placement.-mastersand-instancesnarrow it to certain cells. OpenROAD reference -
filler_placement FILL*Fills the gaps between placed cells with filler cells.
Hint: The rails run along the rows, and placement leaves gaps in them.
The rails then run unbroken along each row. A filler cell carries the power and ground rails and the well and implant layers across a gap, which keeps the rows legal for manufacturing. The argument is a pattern of filler master names, widest first.
remove_fillersclears them again so a later stage can edit the rows. OpenROAD reference -
improve_placement -max_displacement 3Swaps and shifts already-placed cells a little to shorten the wiring.
Hint: It runs after legalization, and it keeps the placement legal.
The pass makes local improvements: swapping neighbouring cells and moving a cell within the given distance, keeping the result legal. It is cheap compared with placing again. OpenROAD reference
-
optimize_mirroringFlips cells about their vertical axis where that shortens the connections.
Hint: A cell can be flipped without changing where it sits.
Mirroring changes which side a cell's pins face without moving the cell or breaking legality, so it shortens wires at no cost in area. It is run after legalization. OpenROAD reference
-
cluster_flops -tray_weight 20.0Groups nearby flip-flops into multi-bit trays that share one clock pin.
Hint: The gain is in the clock network, not in the data paths.
One multi-bit register has a single clock input for several bits, so the clock tree drives fewer sinks and burns less power. The weights trade the clock saving against the extra wirelength pulling the bits together. OpenROAD reference
-
balance_row_usageEvens out how full the placement rows are across the core.
Hint: Rows are the resource; ask what happens when some are full and others are empty.
Some rows end up packed while their neighbours are empty, and a full row leaves the legalizer and the repair steps nowhere to put anything, and it concentrates routing demand. Evening out row usage keeps later steps possible. OpenROAD reference
-
remove_fillersRemoves the filler cells, freeing the gaps in the rows again.
Hint: Ask what would block a later step that needs an empty site.
Fillers occupy every free site, so anything that wants to insert or move a cell must clear them first. A flow removes them, makes its change, and fills again, which is why filler insertion is late in the flow. OpenROAD reference