Effective Elements List and Transitive Natures of UPF Commands
The UPF commands are, in general, transitive in nature. For example, for any given instance included in a power domain, all child instances of that given instance are transitively included in the power domain, unless any child instance is explicitly excluded from this particular power domain or is explicitly included in the definition of another power domain.
-
Introduction
This explicit exclusion or inclusion from the ultimate instance list is strongly and precisely defined in the UPF LRM as effective_elements_list because it influences the construction of design (DUT or HDL) objects into UPF objects. So the effective elements and the transitive nature of UPF commands are laterally related.
However, none of these exclusion or inclusion element lists are actual UPF commands. Although some commands do have explicit -transitive
as an option, for many other commands it is implied in the semantics — specifically, for denoting power domain extents through instances or through lists of ports to apply strategies with -elements or to exclude some part of the design with -exclude_elements. It may also be implied for model names in specifying a list of models to attributes with -models, library name to specify all models with -lib, etc. So, the effective elements list, which is evidently not a UPF command or options but an LRM semantic derivative, captures the information of the extent of power domains and strategies written as:
LIST 1: LRM DENOTATION OF EFFECTIVE ELEMENTS LIST
- effective_elements_list
This list is actually constructed from the following derivatives:
LIST 2: CONSTITUENT PARTS OF EFFECTIVE ELEMENTS LIST
- element_list, exclude_list,
- aggregate_element_list,
- aggregate_exclude_list, and
- prefilter_element_list etc.
The element_list and exclude_list are the lists that contain the elements specified by an instance of the command. The effective_element_list, aggregate_element_list, and aggregate_exclude_list are associated with the named object of the command. Here the named object can be any UPF or HDL object that has a given name; for example, module name, power domain name, etc.
The latest version of UPF LRM 1801-2018 (still in draft status) also defines a new elements list, called the resolved_element_list, based on precedence rules of resolution on how variants of options for any UPF command takes precedence for a specific or generic situation. The resolved_element_list is actually a set (or a subset) of elements from the effective_element_list that is determined by the application of precedence rules.
For example, a create_power_domain command that explicitly includes a given instance in its extent shall take precedence over the one that applies to an instance transitively (i.e., applies to an ancestor of the instance and, therefore, to all of its descendants).
So, resolved_element_list will be either the effective_element_list or a subset of the effective_element_list if a given element is referenced in the effective_element_list for more than one strategy. As each element may ultimately only have one strategy applied to it, then precedence rules shall be used to determine which strategy will be applied. A resolved_element_list is associated with the named object of a command and represents the set of elements actually affected by a particular strategy.
-
Download Paper