IntermediateQuestion 1 of 20Source PDF page 51

How do you create a power domain in UPF, and what does the create_power_domain command actually do?

From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide

Explanation

A power domain groups design elements that share the same power-supply behavior. create_power_domain declares that group and its scope in the hierarchy. A power domain is strictly a synthesis construct, not a netlist object -- it's bookkeeping the tool uses, not a physical block by itself. Every domain must eventually be given exactly one primary power net and one primary ground net.

Implementation Walkthrough

In the Mychip worked example, the top-level domain is created first with -include_scope so it covers everything by default, then each functional block gets its own domain scoped to its instance: create_power_domain PD_MYCHIP -include_scope; create_power_domain PD_CPU -elements {U_CPU}; and similarly for PD_DSP and PD_COP. In the more general syntax you scope the domain explicitly: create_power_domain -elements {U1 U2 U3} -scope Block1 PD1.

Command

create_power_domain PD_CPU -elements {U_CPU}

Switch-by-switch

-elements: list of design instances included in the domain (supports {.} to mean 'current scope and everything in it'); -scope: hierarchy instance at which the domain is defined -- note it does NOT change the current scope for later commands; -include_scope: pulls in the entire current scope, typically used for the top-level always-on domain; -exclude_elements: removes named elements from the domain, but an excluded instance must already lie within -elements or it is ignored with a warning; -atomic: locks the domain so no descendant instance can join a different domain unless explicitly excluded -this must be set at creation time, it cannot be added later via update.

Expected Tool Behavior

A domain object is created with a defined scope and extent of elements; later commands (create_supply_net, set_domain_supply_net, set_isolation, set_level_shifter, set_retention, create_power_switch) all reference this domain name. Before commit_upf, every instance in the design must belong to some power domain.

Example

Mychip: PD_MYCHIP (1.0V always-on top), PD_CPU (0.9V always-on, U_CPU), PD_COP (1.1V shutdown domain, U_COP, contains retention registers), PD_DSP (1.1V or 0.9V, externally switched, U_DSP).

Common Mistake

Leaving some instance uncovered by any domain's -elements before commit_upf, or trying to convert a non-atomic domain into an atomic one later via -update -- -atomic cannot be combined with -update.

Likely Error Or Warning

Atomic-domain hierarchy conflicts during a hierarchical flow produce an explicit error: 'Unable to merge domain PD_TOP and mid_inst/PD_TOP because mid_inst/PD_TOP is atomic but PD_TOP is not atomic. (UPF-168)'

Debugging Approach

Run report_power_domain on the domain to confirm its actual Elements, Voltage Area, and Available Supply Nets/Sets match what you intended.

Visual explanationLow-power context: How do you create a power domain in UPF, and what does…
Low-power context: How do you create a power domain in UPF, and what does…A three-step concept map summarizes the focus, core answer, and practical verification for How do you create a power domain in UPF, and what does the create_power_domain command actually do?Question focusHow do you create apower domain in UPF, andwhat does…Core answerA power domain groupsdesign elements thatshare the samepower-supply behavior.…Verify in practicecreate_power_domainPD_CPU -elements {U_CPU}Understand → explain the mechanism → verify the assumptions

Continue learning free

Get a practical low-power chapter

Receive the existing “Low Power and Multivoltage Fundamentals” PDF chapter and its download link by email.