Games / Command flash cards / OpenROAD flow commands / Power delivery network

Power delivery network

The cards come in more than one shape: a command to explain, and a description whose command you name. 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 follow OpenROAD's own commands, checked against the signatures printed by the tool (OpenROAD 26Q3) and the documentation of the module that implements each one. Each answer links to that module's documentation. Commands differ between versions, and commercial tools use different names entirely. Reference: OpenROAD module documentation (OpenROAD on GitHub).
All 12 cards in this section, with answers
  • add_global_connection -net VDD -inst_pattern .* -pin_pattern VDD -power
    Declares that every instance's VDD pin belongs to the VDD net.

    Hint: Standard cells have supply pins but no supply nets in the netlist. The patterns are regular expressions.

    -power marks the net as a supply. Synthesis leaves supply pins unconnected, so they are connected by pattern instead of one by one. -power and -ground say which kind of supply the net is, which the grid generator and the analysis need. OpenROAD reference

  • global_connect
    Applies the rules, connecting the matching pins to their nets.

    Hint: Compare it with add_global_connection, which comes first.

    The rules come from add_global_connection. They are declared first and applied afterwards, so a script can add several and connect once. Commands that build the grid also apply the rules, and -verbose reports how many pins each rule connected. OpenROAD reference

  • define_pdn_grid -name main_grid -pins metal7 -voltage_domain CORE
    Starts a grid definition that later straps are added to.

    Hint: Nothing is built yet. Ask what the command starts.

    It applies to the voltage domain named, here CORE. A grid is described in pieces: the definition, then straps, rings, and connections, and finally pdngen builds it. -pins names the layers where block pins for the supplies are made. With -macro the definition applies to macros instead of the core. OpenROAD reference

  • add_pdn_stripe -grid main_grid -layer metal1 -width 0.48 -followpins
    Creates the metal1 supply rails that follow the placement rows.

    Hint: The -followpins flag ties these stripes to something already in the floorplan.

    These are the standard cells' own power and ground rails. With -followpins the pitch and the spacing come from the rows, since one rail runs along each row's supply pins. Without it, straps are regular and need -pitch, -offset, and -width. OpenROAD reference

  • add_pdn_stripe -grid main_grid -layer metal4 -width 0.48 -pitch 56.0 -offset 2.0
    Adds metal4 straps every 56 microns, offset from the corner.

    Hint: Two numbers describe the pattern: how often, and from where.

    Each strap is a power and ground pair. The pitch is the distance between one pair and the next, and the offset is measured from the core's lower-left corner. A wider pitch leaves more room for signal routing and carries less current. -spacing sets the gap inside a pair, half the pitch by default. OpenROAD reference

  • add_pdn_connect -grid main_grid -layers {metal1 metal4}
    Declares metal1 and metal4 joined, so vias go where they overlap.

    Hint: Straps on different layers cross but do not touch. Ask what is missing.

    Each overlapping pair of same-net straps becomes a via stack when pdngen runs. Via rules from the technology are used unless -fixed_vias names ready-made vias. Without a connect rule the two layers simply cross. OpenROAD reference

  • pdngen
    Builds the grid that the definitions describe, adding the straps, rings, and vias.

    Hint: Everything so far was description. Ask what turns it into metal.

    -report_only prints the specification, -check_only checks it, and -reset clears it. -ripup removes a grid built earlier so it can be rebuilt, and the final trim step removes metal stubs unless -skip_trim is given. OpenROAD reference

  • repair_pdn_vias -net VDD
    Removes power vias that break design rules after routing.

    Hint: It runs after detailed routing. Ask what routing can do to a via that was already built.

    It runs after detailed routing, because signal routing around a via stack can leave it violating spacing rules. Removing the offending vias keeps the design rule clean at the cost of a little grid connectivity. OpenROAD reference

  • analyze_power_grid -net VDD -voltage_file vdd.rpt
    Computes the IR (current times resistance) drop across the VDD grid.

    Hint: The grid has resistance and the cells draw current. Ask what that costs.

    -voltage_file writes the voltage at each instance. Current drawn through the grid's resistance lowers the voltage the cells actually see, which slows them. -enable_em adds the current per segment for electromigration, and -error_file records nodes that could not be solved. OpenROAD reference

  • check_power_grid -net VDD
    Checks that the VDD grid is fully connected, with no island cut off from a source.

    Hint: It comes before the analysis. Ask what would make the analysis meaningless.

    A disconnected piece of grid has no path to a supply source, so the analysis cannot solve for its voltage. The check finds that before the analysis runs. OpenROAD reference

  • add_pdn_ring -grid main_grid -layers {metal6 metal7} -widths 5.0 -spacings 3.0 -core_offsets 5
    Puts a supply ring around the grid, 5 microns outside the core.

    Hint: Two layers are given because a ring has to go in both directions.

    The horizontal layer carries the pairs above and below, the vertical layer the pairs left and right, so the four together form the ring. The straps inside are extended to meet it, which is how current gets from the ring into the grid. OpenROAD reference

  • The floorplan exists and you need rings and straps built on the upper layers and dropped onto the standard cell rails.
    pdngen

    Hint: One of these builds the grid; one only measures it afterwards.

    The generator builds the grid from a definition written beforehand. Global connections tell the tool which pins belong to which supply, which is a prerequisite rather than the builder, and the analysis command measures the voltage drop on a grid that already exists. OpenROAD reference