Power intent (UPF)

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 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 11 cards in this section, with answers
  • read_upf -file design.upf
    Reads the power intent: the domains, switches, isolation, and level shifters.

    Hint: Intent is the word: it says what the power structure should be, not what exists.

    UPF (Unified Power Format) describes the power architecture separately from the netlist: which logic shares a supply, what switches it, and what guards the boundaries between domains. The tool then implements it. OpenROAD reference

  • create_power_domain -elements {u_core} PD_CORE
    Declares that the logic under u_core forms the power domain PD_CORE.

    Hint: A domain is a set of logic before it is a piece of the die.

    The domain is a grouping of modules that share a supply. Giving it a region on the die and a voltage are separate steps, and . names the top-level domain. OpenROAD reference

  • set_domain_area PD_CORE -area {10 10 200 200}
    Gives the domain a region of the die that its cells are placed in.

    Hint: The domain now gets a place, because a separate supply needs its own grid.

    A domain with its own supply needs its own power grid, which means a contiguous region to build it over. Cells of the domain go inside and others stay out, with level shifters at the boundary. OpenROAD reference

  • set_domain_voltage -domain PD_CORE -voltage 0.9
    Says the domain runs at 0.9 V, which fixes what its boundaries need.

    Hint: Ask what the tool needs in order to know whether a crossing signal must be shifted.

    Domains at different voltages need level shifters between them, so the voltage is part of the intent, not only an analysis setting. It also picks the libraries a domain's cells come from. OpenROAD reference

  • create_power_switch -domain PD_CORE -input_supply_port VDD -output_supply_port VDD_SW -control_port nsleep PS_CORE
    Declares a switch feeding PD_CORE from VDD through VDD_SW, under nsleep.

    Hint: Everything here is a declaration. Ask what is not yet decided.

    The switch gates a domain's supply so it can be shut off. This says where its supply comes from, what it produces, and what controls it; map_power_switch then names the library cell that implements it. OpenROAD reference

  • map_power_switch -switch_name_list PS_CORE -lib_cells HEADER_X4
    Binds the declared switch to a real library cell that implements it.

    Hint: The switch already exists in the intent. Ask what is still missing to build it.

    A header cell passes the supply when enabled and blocks it when not. The mapping ties the abstract switch to that cell and its ports, so the tool can insert real instances. OpenROAD reference

  • set_isolation -domain PD_CORE -clamp_value 0 -isolation_signal iso_en PD_CORE_ISO
    Declares isolation holding the domain's outputs at 0 while it is off.

    Hint: Ask what a shut-off domain's outputs look like to the logic still running.

    An unpowered output floats, and a floating input into always-on logic draws current and can behave unpredictably. An isolation cell, enabled by the isolation signal, holds a defined value instead. OpenROAD reference

  • set_level_shifter -domain PD_CORE -threshold 0.1 LS_CORE
    Declares shifters where the domain's crossings differ by 0.1 V.

    Hint: It concerns signals that cross a boundary between two voltages.

    The threshold is the voltage difference that triggers one. A signal driven at one voltage may not register correctly at another, so it is passed through a shifter. The threshold is the difference above which one is required. -source and -sink restrict which crossings the strategy applies to. OpenROAD reference

  • use_interface_cell -domain PD_CORE -strategy PD_CORE_ISO -lib_cells ISOLATE_X1
    Names the library cells that implement that strategy.

    Hint: A strategy says what is needed; this says what to build it from.

    The strategy may be an isolation or a level-shifter one. It declares the rule (what to isolate and when); the interface cell declares the implementation. Keeping them apart lets one intent file be used with different libraries. OpenROAD reference

  • report_voltage_domains
    Lists the voltage domains that are defined in the design.

    Hint: It reads back what was declared, not what was measured.

    Each domain's area and voltage are listed with it. Power intent is easy to get subtly wrong, so reading the domains back is the quick check that the intent file was understood as intended. write_upf writes the whole intent out again. OpenROAD reference

  • create_voltage_domain PD_CORE -area {10 10 200 200}
    Creates a named region of the die that a supply can be built over.

    Hint: Compare it with the power domain, which names logic rather than area.

    A power domain is a set of modules; a voltage domain is the area they occupy. The grid generator needs the area, since the region must exist before set_voltage_domain names its power and ground nets and define_pdn_grid builds a grid over it. OpenROAD reference