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.
All 11 cards in this section, with answers
-
read_upf -file design.upfReads 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_COREDeclares 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.9Says 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_COREDeclares 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_switchthen names the library cell that implements it. OpenROAD reference -
map_power_switch -switch_name_list PS_CORE -lib_cells HEADER_X4Binds 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_ISODeclares 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_COREDeclares 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.
-sourceand-sinkrestrict which crossings the strategy applies to. OpenROAD reference -
use_interface_cell -domain PD_CORE -strategy PD_CORE_ISO -lib_cells ISOLATE_X1Names 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_domainsLists 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_upfwrites 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_domainnames its power and ground nets anddefine_pdn_gridbuilds a grid over it. OpenROAD reference