Floorplan

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.

SourceThese cards cover the make variables that drive OpenROAD-flow-scripts, the reference flow built on OpenROAD. Each card shows a line as it appears in a design's or a platform's config.mk, and each answer links to that variable in the flow's own variable reference. Variables come and go between releases; this deck follows the version in the openroad/orfs image. Reference: flow variable reference (OpenROAD-flow-scripts on GitHub).
All 13 cards in this section, with answers
  • export CORE_UTILIZATION = 40
    Sizes the core so the cells fill 40% of it, leaving the rest free.

    Hint: It is a percentage, and it decides a size rather than reporting one.

    The die size follows from the cell area and this number, together with CORE_ASPECT_RATIO and CORE_MARGIN. Low utilization eases routing and wastes area; high utilization does the opposite. Giving DIE_AREA and CORE_AREA instead sets the size directly. OpenROAD-flow-scripts reference

  • export CORE_ASPECT_RATIO = 2.0
    Makes the core twice as tall as it is wide.

    Hint: Read the ratio in the documented order: height over width.

    It only applies when the size comes from CORE_UTILIZATION. A shape other than square is used to fit a block into a fixed slot at the top level, or to suit a design's pin sides. OpenROAD-flow-scripts reference

  • export CORE_MARGIN = 2
    Leaves 2 microns between the core area and the die edge.

    Hint: It is the space between two boundaries, and something has to live there.

    The margin is where the power ring and the boundary pins go, so a core pressed against the die edge leaves nowhere to bring power in. One value sets all four sides; four values set them separately. OpenROAD-flow-scripts reference

  • export DIE_AREA = 0 0 100.13 100.8 export CORE_AREA = 10.07 11.2 90.25 91
    Sets the die and the core rectangles directly, in microns.

    Hint: Four numbers each: two corners. Ask which rectangle sits inside the other.

    Each is a lower-left and an upper-right corner. Giving both replaces the utilization-based sizing, which is how a block gets the exact size a top-level floorplan has reserved for it. OpenROAD-flow-scripts reference

  • export PLACE_SITE = FreePDK45_38x28_10R_NP_162NW_34O
    Names the site whose height and width the placement rows are built from.

    Hint: It comes from the technology file, and it decides the shape of a row.

    A site is the smallest legal cell footprint in the technology. Rows are one site high, and every cell's width is a whole number of sites, which is what makes legalization possible. OpenROAD-flow-scripts reference

  • export MACRO_PLACE_HALO = 10 10
    Keeps a 10 micron band clear around each macro, in x and y.

    Hint: Two numbers, and the space they describe stays empty.

    Cells packed against a macro leave no room to reach the macro's pins or to add buffers later. The halo reserves that room. It is used by automatic macro placement. OpenROAD-flow-scripts reference

  • export MACRO_PLACEMENT_TCL = ./designs/nangate45/bp/macro.tcl
    Places named macros by hand, leaving the rest to the automatic placer.

    Hint: You can use it for some macros and leave the others alone.

    The file holds place_macro commands. Any macro it does not place is left to rtl_macro_placer, which is how a floorplan fixes the macros that matter and lets the tool handle the rest. OpenROAD-flow-scripts reference

  • export IO_CONSTRAINTS = ./designs/nangate45/gcd/io.tcl
    Restricts where the boundary pins may be placed, by edge or by name.

    Hint: Ask which stage reads it, and what it would otherwise decide for itself.

    The file holds set_io_pin_constraint and related commands, read before place_pins. Without it the pin placer is free to put any pin anywhere on the boundary. The layers are set separately by IO_PLACER_H and IO_PLACER_V. OpenROAD-flow-scripts reference

  • export PDN_TCL = $(PLATFORM_DIR)/grid_strategy-M1-M4-M7.tcl
    Gives the script that describes the power grid to build.

    Hint: The file name names three layers. Ask what is built across them.

    The script holds the grid definition commands: the rails, the straps per layer, and the layer pairs to connect, which pdngen then builds. It usually comes from the platform, since the grid depends on the metal stack. OpenROAD-flow-scripts reference

  • export TAPCELL_TCL = $(PLATFORM_DIR)/tapcell.tcl
    Gives the script that inserts the well taps and the endcap cells.

    Hint: Two kinds of cell, both about the rows rather than the logic.

    The script calls tapcell with the platform's masters and spacing. The spacing comes from the foundry's rule on how far a transistor may be from a well tap, so the script belongs to the platform. OpenROAD-flow-scripts reference

  • export FLOORPLAN_DEF = ./designs/nangate45/bp/floorplan.def
    Starts from a ready-made floorplan instead of creating one.

    Hint: Ask what it replaces, rather than what it adds.

    The file brings the die and core areas, the rows, and often the pin and macro placement. It is mutually exclusive with sizing by utilization or by explicit areas, and it is how an externally agreed floorplan enters the flow. OpenROAD-flow-scripts reference

  • export MACRO_WRAPPERS = ./designs/src/bp/wrappers.tcl
    Swaps each macro for a wrapped version of it before placement.

    Hint: Ask why a macro would be replaced by another version of itself.

    A wrapper adds what the macro itself does not carry, such as pin access structures or a keepout, so the flow can treat a bare macro as a well-behaved block. OpenROAD-flow-scripts reference

  • export RTLMP_MAX_MACRO = 12
    Allows at most 12 macros in one cluster of the macro placer.

    Hint: The macro placer groups things first. Ask what the number limits.

    The placer clusters the netlist into a hierarchy of blocks and shapes them before placing macros. The cluster limits, RTLMP_MAX_MACRO, RTLMP_MIN_MACRO, and their instance counterparts, control how coarse that hierarchy is. Unset, the tool derives values from the design. OpenROAD-flow-scripts reference