4. Power domains, supply sets, name spaces, and precedence This clause provides an overview of power domains, supply sets and names in UPF. 4.1 Power domains From a top-down view of power design specification, the fundamental object is the power domain. A power domain is a collection of design elements that share a primary supply set (see 4.2). The association of a primary supply set to all elements in a domain provides the fundamental semantics and automation opportunities in UPF as the primary supply set is implicitly connected to all elements within the domain. The design consists of a hierarchical tree of design elements (logic hierarchy). The logic hierarchy level where a power domain is created is called the scope of the power domain. The set of design elements that belong to a power domain are said to be the extent of that power domain. This distinction is important—while a design element can be the scope of multiple power domains, it can be in the extent of one and only one power domain. Every design element must be included in a power domain. As each power domain exists within a scope of the logic hierarchy, there is an implicit hierarchy of power domains that matches the location in the hierarchy of the power domain’s scope. A design element is a member of the power domain that includes its parent instance unless the design element has been explicitly included as an element of another power domain whose scope is the element or an ancestor of the element. In addition to creating a hierarchical structure of power domains, UPF commands create and connect new objects that did not exist in the HDL description – e.g., switches, supply nets, supply ports, isolation elements and level shifting elements. UPF provides the ability missing in HDLs to specify the low power design intent and implementation. By tightly associating the power domain and other UPF created objects and connections with the HDL design, designers can design, verify, and implement complex chips complete with all power-related connections and functionality. — For verification, every object in the power domain and its power distribution and control network exists within the logic design. This allows the designer to see these objects during simulation, in the waveform viewer and the hierarchy browser. — For implementation, UPF provides a convenient way to manipulate and report information on groups of cells that share a common power and ground supply. — And, UPF ensures that implementation semantics having matching simulation semantics. A power domain can be either contiguous or non-contiguous. The power domain is contiguous if going from any object in the extent of the power domain to any other object in the extent does not require leaving that power domain. A power domain is non- contiguous if the extent of the domain needs to be left when connecting supply sets to design elements in the domain's extent. Power supply network objects (supply nets, supply ports, supply sets and switches) are created within the logic hierarchy independent of the power domain definitions. This allows sharing of common components of the supply distribution network across multiple power domains or the specification of power design constraints independent of the power domain the object is within. Logic nets and ports created in UPF are also created within the logic hierarchy independent of the power domain definitions. This allows the power control network to be created and distributed across power domains. All other UPF objects are created within the context of a power domain. 4.2 Supply nets and ports Supply nets transport an electrical current. Supply ports provide the ability to connect a supply net to a design element (including switches). Supply nets and ports may be created in UPF or in the HDL design. If created in the HDL, the net or port must be of the supply net type defined in the UPF SystemVerilog or VHDL package (see annex B). When created in UPF, the supply net is created within the scope of a design element of the logic hierarchy. When created in UPF, a supply port is created on the interface of an element in the logic hierarchy. The name of the supply net or port cannot conflict with the name of an existing net or port (logic or supply) defined for that element. Supply ports provide the ability for a design element to use a supply net that exists external to it. Supply ports consists of two halves. The first half is the hiconn side which is visible to the parent of the design element whose interface contains the port. The second half is the loconn side which is visible internal to the design element whose interface contains the port. (Note: Although a port on a design element that is a child relative to another design element can be considered to be part of the interface of the parent design element, the port is explicitly defined only on the child instance. Hence, the definitions of hiconn and loconn are relative to the design element on which the port is explicitly defined.) When a supply net that is declared in the scope of an ancestor to the element containing a supply port in its interface is connected to the supply port, the connection is made to the hiconn side of the supply port. A supply net with the same name as the supply port is implicitly created and implicitly connected to the supply port from the scope of the design element if the supply port name is referenced by a UPF command in the context requiring a supply net name. A supply net may be explicitly created and explicitly connected to a supply port from within the scope of the design element containing the port on its interface. The supply net may have the same name as the supply port or a different name. A supply net created in the scope of a design element and connected to a supply port in the interface of the same design element is connected to the loconn side of the port. The electric current transported by a supply net is originated by a root supply driver (e.g., a supply port or pad on the interface to the design or an on-system voltage regulator or bias generator modeled in HDL) and may be conditionally propagated by a switch (modeled in HDL or created in UPF, see create_power_switch command. A supply net connected to multiple supply sources must be resolved (see section 7.20) 4.3 Supply sets Because a single supply net has no meaning relative to the power being supplied to any design element, UPF provides the ability to create supply sets. UPF predefines the following supply set handles for a domain: primary, default_retention, and default_isolation. A supply set relates multiple supply nets as a complete power source for one or more design elements. Each supply net in a supply set provides a function. UPF predefines the following supply net functions: power, ground, pwell, nwell, deeppwell, and deepnwell. A completely specified predefined supply set shall have at least power and ground supply nets defined. A predefined supply set may also have any or all of the other functional supply nets defined. Additional supply net functions may also be defined for any supply set. Once created, a supply set can be associated with a domain, retention strategy, isolation strategy for a specific purpose. The supply nets of a set are implicitly “routed” to all elements that require them. Implicit “routing” includes the implicit creation of supply ports and nets required to propagate the supply net to each element where it is required. UPF defines implicit and automatic connection semantics for the supply nets of a supply set based on the purpose of the supply set in a given domain or strategy context and the function that a supply net performs in the context of the supply set. (NOTE: A supply net may be included in more than one supply set. The function the supply net performs in one supply set is unrelated to the function it may play in any other supply set that it may be included within.) 4.5.1 Implicit connection of supply nets of a supply set The supply nets of a supply set are implicitly connected as the power source for an element when that element has no supply ports. Implicit connections define additional simulation semantic behavior (see section 5). Implicit connections are made under the following conditions: 4.5.1.1 Primary supply set The supply nets of a domain’s primary supply set are implicitly connected to any design element from the logic hierarchy that are within the extent of the domain if the element has no supply ports defined on its interface. NOTE--The presence of any supply ports implies that the design element is a poweraware element – that is, the design element is fully responsible for its internal powerrelated requirements and behavior. Therefore, the semantics that would otherwise be applied to the implicit connection of a supply set could create conflicts or contradictory behavior of the design element. 4.5.1.2 Retention supply set The supply nets of a retention strategy’s supply set are implicitly connected to the retention (i.e., balloon latch or shadow register) functionality that is implied for any register in the design to which the strategy applies. NOTE—Retention supply sets are never implicitly connected to explicit instances of retention registers as the retention logic is not implied. Explicit instances of retention registers must be power-aware with supply ports. 4.5.1.3 Isolation supply set The supply nets of an isolation strategy’s supply set are implicitly connected to the isolation functionality implied by the application of the strategy. NOTE—Isolation supply sets are never implicitly connected to explicit instances of isolation logic as the logic is not implied. Explicit instances of isolation logic must either be included in a domain where the primary supply is appropriate to use as the only power supply for the element or must be power-aware elements with supply ports. 4.5.1.4 Level shifter supply sets The supply nets of a level shifting strategy’s supply set are implicitly connected to the input and output ports respectively of the level shifters implied by the application of the strategy. NOTE—Level shifter supply sets are never implicitly connected to explicit instances of level shifters as the element is not implied. Explicit instances of levels shifters must be power-aware with supply ports. 4.5.2 Automatic connection of supply nets of a supply set The supply nets of a supply set are automatically connected to the supply ports of elements within a power domain (elements from the logic hierarchy or created in UPF) under the following conditions: 1. The element has a supply port and the supply port as a pg_type attribute (either an HDL attribute name pg_type with a string value or an implementation library model with a pg_type attribute – either predefined or user-defined string value). 2. AND a. If the value of the pg_type attribute matches the following: supply_set_handle_function_name example: mem_core_power Where: supply_set_handle is the name of the handle given to the supply set when it was associated with the domain. function_name is the function the supply net provides for the supply set. Then the supply net providing the specified function for the specified supply set is automatically connected to the port. b. OR c. If the value of the pg_type attribute of the port matches a value specified via the –connect option of the associate_supply_set command (see 7.9), then the supply net providing the function specified in the –connect option is automatically connected to the port. 3. The following contextual rule also applies: Automatic connection of supply nets of an isolation supply set may be made to supply ports of the isolation elements as though the isolation supply set were the primary supply set for those elements. The UPF specification is erroneous when it results in an incomplete set of automatic connections for a design element. The following precedence rules apply for automatic connections of a supply net to a supply port. a) connect_supply_net b) associate_supply_net with -elements and -connect c) associate_supply_net -connect d) domain or strategy supply set handle and function matching pg_type. 4.5.3 Predefined supply set functions The following predefined functions are available for use in any supply set definition. In some cases, an explicit supply port may not exist for the function. The implicit or automatic connections are made as specified in the absence of a corresponding supply port. a) power is the supply net which provides the power function for the supply set. b) ground is the supply net which provides the ground function for the supply set. c) pwell (when defined) is the supply net which provides the pwell function for the supply set. If the library cell does not have a port with the appropriate pg_type, pwell is connected to the body terminal of the N-channel field effect transistors (FET) in implementation d) d) nwell (when defined) is the supply net which provides the nwell function for the supply set. If the library cell does not have a port with the appropriate pg_type, nwell is connected to the body terminal of the P-channel FET in implementation. e) e) deeppwell (when defined) is the supply net which provides the deeppwell function for the supply set. If the library cell does not have a port with the appropriate pg_type, deeppwell is connected to the isolation well for N-wells in implementation. f) f) deepnwell (when defined) is the supply net which provides the deepnwell function for the supply set. if the library cell does not have a port with the appropriate pg_type, deeppwell is logically connected to the isolation well for Pwells in implementation. If a supply set is used within a domain, then a supply net shall be defined for each function required by that supply set for implementation. However, a simulator may support pre-implementation verification with only the specification that a supply set exists for the domain. A supply set that does not have supply nets defined for each of its required functions is incompletely specified. A reference to a supply net by its symbolic name is an indirect reference. 4.6 Case studies A few examples help to illustrate the above points. 4.6.1 Case 1 In the first case (see Figure 4), the only element in the power domain is A, which could be a hard macro or a soft IP (e.g., an instance of a SystemVerilog module). The power domain is composed of contiguous logic design elements. For soft IP, A may have child elements, as shown in Figure 5. As Figure 5 shows, the scope of the power domain is the same as the extent, and the power domain is contiguous. The supply net that and supply port are created using the create_supply_net and create_supply_port command (see 7.20 and 7.21) shall be explicitly created in scope A. (Supply ports and nets may be implicitly created under certain conditions covered below.) The name of the supply net created in the scope of the power domain shall be as specified by the create_supply_net command, but the name cannot conflict with the name of an existing port or net (supply or logic) in the scope. As Supply net is connected to Supply port, it is not required for supply net to be explicitly created. A reference to Supply port is equivalent to a reference to a Supply net with the same name as Supply port when the context requires a supply net name. Need a second supply net created and a supply set defined and associated as primary for the domain. Then discuss the implicit connections and routing of the supply net to all elements in the extent of the domain. 4.6.2 Case 2 In the second case (see Figure 6), the topology of the logic design is more complex; there are two sibling instances. The power domain is created in the scope U17 and only has design elements U1 and U2 as its extent. Because the scope of the power domain is not in the extent of the power domain, this power domain is non-contiguous. In this case, the supply net that is created using the create_supply_net command is explicitly created in U17 and implicitly created in U1 and U2, as required by the inclusion of the supply net in a supply set that is associated with the domain A. Supply ports are implicitly created on U1 and U2 to connect both of these design elements to the supply net created in U17 (assuming the supply net is required in U1 and U2). The supply net in U17 is implicitly connected to the ports on U1 and U2. The create_supply_port command can be used to create a supply port on U17. Need a second supply net created and a supply set defined and associated as primary for the domain. Then discuss the implicit connections and routing of the supply net to all elements in the extent of the domain. 4.6.3 Case 3 In the third case (see Figure 7), the topology of the logic design is even more complex. The scope of the power domain is U17 and the extent of the power domain consists of U1/UA and U2. In this case, there are two instances in the same power domain which are neither contiguous nor adjacent in the logic design, resulting in a non-contiguous power domain. When the create_supply_net command is executed to create a supply net in the power domain, the supply net is explicitly created in U17 using the name specified in the create_supply_net command. Supply ports and supply nets are implicitly created in U1, U1/UA, and U2 (assuming the supply net needs to be distributed to design elements in each element of the domain). The supply net in U17 is implicitly connected only to the ports on U1 and U2. The supply net in U1 is implicitly connected only to the port on U1 and U1/UA. If the create_supply_port command is used, a supply port is created on U17. Need a second supply net created and a supply set defined and associated as primary for the domain. Then discuss the implicit connections and routing of the supply net to all elements in the extent of the domain. 4.7 Naming rules The following rules shall apply to names (identifiers). a) The first character of a name shall be alphabetic. b) All other characters of a name shall be alphanumeric or the underscore character (_). c) Names in UPF are case-sensitive. 4.8 Name space semantics Names shall adhere to the following name space semantics. a) Objects created by a UPF command exist in the logic design; therefore, the names of those objects shall not conflict with a name of a logic design object within the same name space. b) The name of a power domain shall not be the same as instances and ports in the same scope. c) Some UPF objects are implicitly created. Implicitly created objects result from implied or inferred semantics and are not the direct result of creating a named UPF object. For example, supply nets are routed throughout the extent of a power domain as needed to implement the implicit and automatic connection semantics. This routing results in the creation of implicit supply ports and supply nets. UPF automatically names implicitly created objects to avoid creating a name conflict. The name_format command (see 7.30) can be used to provide a template for some implicitly created objects (such as isolation). 1) If there is a reference to a supply net that does not exist and a supply port with the same name exists in the current scope, a supply net of that (supply port) name is implicitly created and connected to that supply port. It shall be an error if an existing net is attached to that port. 2) If there is a reference to a logic net that does not exist and a logic port with the same name exists in the current scope, a logic net of that (logic port) name is implicitly created and connected to that logic port. It shall be an error if an existing net is attached to that port. d) Many command arguments use names to design elements (instance scope names, ports, registers, nets, etc.). Unless otherwise specified or unambiguous from the context, a name reference can be a simple name or the hierarchical name of an object. The names are relative to the current UPF scope. If the name is a hierarchical name, it shall be in the descendant tree of the current scope. e) Unless otherwise specified or unambiguous from the context, the terms scope and UPF scope are synonymous. f) UPF objects may have attributes. Attributes comprise a name and a set of zero or more values. Attrbute names are in a local name space of the UPF object, e.g., a power domain may have strategies and supply set handles. Strategies themselves may also have supply set handles. g) The following reserved attribute names cannot be redefined. 1) primary 2) default_retention 3) default_isolation h) The . character is the separator for the hierarchy of attributes of UPF objects, e.g., top/a/PDa.MY_SUPPLY_SET refers to the supply set MY_SUPPLY_SET in power domain PDa in the logical scope top/a. 4.9 Name qualification and precedence Should this section be removed from here and occur only in the query commands section? To prevent ambiguity, name qualification can be used to explicitly specify the intended object. Name qualification of an object is specified as {qualifier@object}; the list of supported qualifiers are specified in Table 1. It shall be an error whenever there is ambiguity of choice in identifying a named object and the name qualifier (shown in Table 1) is not used, such as a domain versus a net versus a UPF strategy. 4.10 Precedence To support concise, easily written low power specifications, UPF supports default and generic application of low power design intent. Consequently, multiple low power design intent specifications may conflict with each other. This subclause defines the rules for resolving conflicts in many situations. a) Logic definition has the highest precedence. UPF does not modify the functional behavior specified in the HDL source. A UPF specification extends the logic definition to incorporate power-aware behavior. The HDL logic specification defines a set of legal implementations. Therefore, the logic definition has the highest precedence. b) UPF power-aware specification within HDL source has the next highest precedence. To the extent power-aware information can be specified in HDL source, that HDL-resident power-aware specification has precedence over any power-aware information specified outside that source. c) Inherited power-aware attributes have the lowest precedence. A power-aware intent specification can apply to an object when it is specified directly on the object or an ancestor of the object. (The command definitions specify when a command creates an inheritable attribute.) When more than one power-aware intent specification exists for a given object: a. If a power-aware intent specification was applied directly to the object, then that specification applies. It is applied directly to the object when the object is referenced in the command explicitly, including through regular expressions that expand to what would otherwise have been an explicit reference to the object. b. If the power-aware intent specification was applied to an ancestor of the object, then the specification applied at the closest ancestor applies.7 This includes references to ancestors from the expansion of regular expressions. d) Precedence ambiguity It shall be an error if the precedence rules fail to uniquely identify a single poweraware attribute that applies to an object. 4.9 Lexical elements Special lexical elements (see Table 2) can be used to delimit tokens in the syntax. NOTE to Joe: “hierarchy character” in table, row 1 should be more accurately stated as “logic hierarchy character” as the ‘.’ character is used to distinguish attribute hierarchy (name space).