Transcript Slide 1

UPF v1.0 Standard
Questions and Clarifications
April 4, 2007
Overview
•
Unified Power Format Standard has been passionately embraced by
semiconductor designers and EDA developers
•
Enthusiastic users have submitted a multitude of suggestions for improving UPF
•
Recommend use of a database for issue tracking
–
–
–
Text + graphics support
Prioritization
Taxonomy
•
Incorporate refinements into next generation working draft with consensus
•
Review a few example issues
(SAB topics)
•
N-well, P-well bias supply semantics – factor in corruption conditions, operating
modes, and auto-connection semantics.
•
User defined power states for a domain (or more accurately, the set of nets
connected to logic -- power, ground, bias) where the specification is in terms of
the power, ground and bias net states. (What constitutes ON, PARTIAL_ON
and OFF WRT to voltage levels and voltage thresholds managed via bias nets.)
This has implications for level shifter requirements as well as simulation
semantics.
•
A complete semantic specification of PARTIAL_ON. For example, can registers
retain state in partial_on? This could be part of previous bullet.
•
TI has interest in more supply-aware capabilities.
•
Revisit set_pin_related_supply command.
•
User-defined specification of corruption values for a type, including random.
(Verif 1 of 5) Will libraries referenced by
•
•
•
•
•
netlist + UPF be PG-complete?
If PG pins exist in a simulation library, then they must be connected; to do that, the simulator
must understand the *type* of the pin, but this information is not available in Verilog libraries
today.
UPF will explicitly connect some netlist PG pins but imply connections by pin type to others
PG pins might not exist in a simulation library and, even if they do exist, pin types are not
explicitly defined in Verilog
Need a standard definition of library pin types
Secondary problem: PG pins might not exist in a library at all, but synthesis gives a
directive to connect regardless, so simulation and verification tools need to infer PG pins
and corruption semantics
Supply-RetentionVDD
Supply-Retention-
VDD
Supply-DefaultVDD
VDD
VSS
VSS
Supply-DefaultVSS
VSS
(Verif 1 of 5) Will libraries referenced by
netlist + UPF be PG-complete?
Proposed solution:
•
•
•
•
•
•
•
Verilog pragmas (or attributes) to identify supply pin types for simulation
libraries
Simulation and verification tools must auto-connect unconnected PG pins to
default UPF supply nets, guided by pin type pragma
If a library model does not have a PG pin but UPF attempts to explicitly connect
to one, simulation and verification tools must create the pin and impose default
UPF power-down semantics
(supply:OFF -> nets in the library component go to X)
Requires Verilog simulation library authors to supply pin type pragmas (or
attributes) matching .LIB definitions
Requires simulation and verification tools to implement correct auto-connection
Logic simulation only needs to know what to corrupt
Verification can read the library when needed
(Verif 2 of 5) What power-down
corruption semantics apply when netlist
has PG pins and UPF supply net?
• UPF corruption semantic currently overrides library behavior when
supply net is “off”
Supply-VDD
VDD
Supply-VSS
Component-defined
and UPF default
power-down
corruption???
VSS
UPF default
power-down
corruption
(Verif 2 of 5) What power-down
corruption semantics apply when netlist
has PG pins and UPF supply net?
Proposed solution:
• Redefine UPF semantics:
– Default power-down corruption semantics do not apply to any logic
simulation library component model that has a PG pin; such models are
assumed to implement their own corruption (verification hole if they do not
in fact do so)
– Default power-down corruption semantics apply to every other component
in the circuit
•
•
Explicit connection of supply ports on model must be power aware, and
default simulation corruption should then not be applied
If the element has a logic simulation model, and if the model has a PG
pin, then the model must implement its own corruption semantics
(Verif 3 of 5) How to map the UPF
VSS ON == 1 semantic to library
components conventionally assuming
VSS ON == 0, and functional pins that implementation tools tie to
VSS as logical 0?
Supply-VDD:
OFF:0, ON:1
VDD
Supply-VSS:
VSS
OUT = VDD & ~VSS ? (IN1 & IN2) : X
OFF: 0, ON:1
•No problem if supply network is either entirely defined in UPF or entirely defined in netlist
•Consider use of value conversion table as an option to connect supply net, with simple
default behavior
•Flow consideration: to create the table, must know the correct translation
•Synthesis must emit the model; could require user to provide conversion table
•Conversion table may be difficult to verify in the unrestricted, general case
(Verif 3 of 5) How to map the UPF
VSS ON == 1 semantic to library
components conventionally assuming
VSS ON == 0, and functional pins that
implementation tools tie to VSS as logical 0?
•
•
Consider assume/enforce industry conversion to UPF semantics for
library models, and implementation tools should emit a translation
function when it uses VSS as logical 0.
Alternatives:
– UPF change
– Industry convention change
– Implementation tools understanding/mapping of library cell power-down
functions
•
Implementation tools may assume ground is logic zero; use Tie-Lo cell?
(Verif 4 of 5) How to handle redundant
constructs in UPF + netlist?
Post-synthesis netlist implements retention registers and isolation
cells, but UPF also directs (re-)creation of same.
Is set_retention a constraint or a directive?
Synthesis emits a constraint that implementation tools must satisfy.
Constraint is interpreted as: check to see if it exists, if not then
implement.
Simulation: not interpret as a constraint, interpret as the intended
form of circuit modification – i.e. implement this.
Compare to assertion – verification fails if it triggers, and
implementation tools can safely assume that it never happens
and optimize accordingly.
(Verif 5 of 5) UPF retention constructs can't
capture real clock-low/clock-high retention
register behavior
•
•
•
•
•
•
•
•
How can the current model verify gate-level netlists against RTL with
retention behavior specified via UPF, since real gate-level behavior is
very unlikely to match UPF specification?
This is a problem for RTL+UPF as well as netlist+UPF
Accurate model requires UPF extension and register inference in the
logic simulator
Consider generic model using generic simulation language, or very
complex syntax for model
Can’t verify at RTL if not have defined simulation behavior
Expect rigorous use of “macro”, where designers simultaneously
specify cell and simulation model that are self-consistent
Legal operating conditions, but save and restore protocol can’t be
captured using existing command syntax; requires knowledge of
related clock signal
Possible solution: supply full retention model; this may require
simulation and verification tools to do register inferencing and mapping;
need synthesizable simulation model of generalized retention register
(Synth 1 of 5) Semantic Clarifications
•
•
6.6 connect_supply_net
A supply port can only be connected once at each level of logical hierarchy. Once
connected, subsequent attempt to connect to the same supply port, from either the already
connected supply net, or from another supply net, is an error. This restriction is required to
have a unique mapping from a net segment in the final netlist to the corresponding supply
net.
•
•
RM-26
The –port and –pin options in connect_supply_net are ambiguous. There seems to be no
concept of “pins” in simulation. Also, there is not a clear definition of what a “library cell” and
how it differs from is. An AND gate would have a verilog model for simulation.
•
•
•
•
•
So I think we need to have only one of them, and they refer to interface points on verilog
models, vhdl entities, or library cells.
Can -port and -pin be merged into one option (say –port) in an errata doc?
Since most simulation tools have no concept of pins, the –pins option should not be there.
To make the so called ‘pin-specific’ connection to a power pin on a mapped cell, -ports
should be used, and the implementation tool shall recognize them correctly.
(Synth 2 of 5) Semantic Clarifications
• 6.9 create_power_switch
• The definition of when a switch is “on” seems to be
confusing. It currently says:
• The switch is on if the value on the control port(s)
equals an “on” state Boolean expression;
• Would the following be better?
• The switch is in one of the “on” states (and thus is on)
if the Boolean expression corresponding to the
on_state is evaluated to be TRUE.
(Synth 2 of 5) Semantic Clarifications
• 6.33 upf_version
• More clarification about this command is needed:
• When this command is used in a UPF file with the
version string specified, it is saying that the UPF
commands in this file has been written conforming to
the syntax and semantics of the specified version.
Tools supporting this or newer version should be able
to read this UPF file.
• If any commands in the UPF file does not conform to
the syntax of the upf_version, tools should give
errors.
(Synth 3 of 5) Semantic Clarifications
• 6.15 load_upf
• When -version is specified, one can only easily check that the
UPF file conform to the version as specified by -version. Tools
have to interpret the loaded UPF file based on the latest version
supported by the tools, since supporting multiple interpretations
is too much an overhead.
• By conforming, we mean:
• The upf_version string command in the UPF file matches
exactly the version specified by -version of this command.
• It is expected that all commands in the file conform to the syntax
of the specified upf_version.
• 6.22 save_upf
• Perhaps it should be clarified that in the written UPF file, the
intended UPF version will be recorded by having "upf_version
version_string" at the beginning of the UPF file.
(Synth 4 of 5) Semantic Clarifications
•
•
•
•
•
•
•
•
•
6.25 set_isolation
It probably does not make sense to allow nets or design elements
(instance of modules or library cells) in -elements list. Pins or ports
should be sufficient.
Also, we need to clarify the meaning of the input/outputs of a power
domain. Suggestion:
Output of a power domain is the output ports of the root cells of the
power domains
Input of a power domain is input ports of the root cells of a power
domain
Output/inputs refer to the actual directions rather then what was defined
in RTL
6.27 set_level_shifter
Also need to clarify the meaning of input/output of a power domain,
It makes more sense to allow only pins/ports in the -elements list.
(Sim 1 of 4) UPF Questions
•
In create_power_domain in UPF spec, it says that the list is specified
regardless of the –scope command and later it says that –scope command
specifies the current scope for this command. This is confusing.
»
•
Isolation_sense is missing on in set_isolation_control argument description.
So it is not clear what the default value is.
•
Will the upf_version command used down the hierarchy specifying a different
upf version will overwrite the upf_version for that file?
•
In command set_scope “instance” is not optional which means if it is called with
no instance, it should be an error. But the UPF 1.0 says that if it is called with
no instance, the scope is set to the top level design.
•
In create_power_switch command, it says that the switch is either on or off and
does not talk about the partial state.
•
For connect_supply_net, it should return “null” like other commands instead of
‘0’ (Seems like typo)
(Sim 2 of 4) UPF Questions
• Which port vct applies to?
• For merging power domains what happens to isolated power and
retention power.
»
• If power and ground net have different states like one is on and other is
partial, what happens?
• In bind_checker, how do we specify the net_name for different
elements?
• Is the element list, in bind_checker based on current_scope?
• In set_power_switch why should the control port be an existing one
(Are we talking about the net which connect to it)? Also how do you
add output_port since it already exists after using
create_power_switch?
(Sim 3 of 4) UPF Questions
• In all the map commands when you give list, then which cell is going to
be used?
• What is specified by –port option in map_isolation_cell command?
• If –elements list is not specified in map commands then the default
should be whatever is specified in set command?
• Why is isolation_sense semantics different from save/restore sense ?
»
• What kinds of checks need to be performed on set_design_top option
instance?
• If both –resue and –resolve are specified, then it should be an error if –
resolve is not the same as previously specified when creating the
supply net.
(Sim 4 of 4) UPF Questions
• Will the scope name in scope_option be always given from root or it will
be given from current scope.
• Named states for on and partial on states are derived from input port
state. Where do we find the named states for off and error states.
• In create_power_switch, what does it mean by “it is an error if specified
control port does not exist”. Does it mean the net connected to control
port?
• In set_power_switch, if we are adding more control ports, then more
ack ports would be needed, assuming ack ports correspond to control
port since there are multiple of ack ports and only one output port.
• We say that all the map commands and set_pin_related_supply
command are not relevant to simulation. I am not sure if a user has a
library model of say isolation cell, then how he will use it. Same is the
issue with the set_pin_related_supply
(UPF) Feedback
•
•
•
•
Class 1: clarification of content to match my understanding of agreements:
Class 2: Suggested additions to enhance clarity (next version)
Class 3: Topics for additional consideration
**Gary’s feedback**
So far I have just made it through p 45 for this level of comments.
•
•
•
GD-1
Page 1, line 1, class 3: tcl variable scoping
Do the semantics of read UPF include any tcl variable scoping rules? When you start to read a file, do you have the option (like you do
with shell command files) to choose to source a file or read a file? In one case it is as if the file were included in the “sourcing” file. In
the other case, the state is saved, the file read, and then global variables are restored.
•
•
•
•
GD-2
Page 14, line 55, class 1: Add information about the hierarchical aspect of names.
b) The name of the power domain shall not be the same as instances and ports in the same scope.
We should be clear on which names are global, and which are hierarchical. Is x/x/foo different from x/y/foo, and do power domains have
hierarchy?
•
•
GD-3
Page 15, line 27, class 2: precedence of regular expressionsIf 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.
Is it an error for a command to set a set of attributes with one regular expression, and then set, using another regular expression, where
some elements overlap between the regular expressions? If not, is there a defined precedence?
•
•
•
•
GD-4
missing, class 3: Semantic Rules
Generally, calling out the semantic rules and providing labels (numbers) in the standard LRM will be useful for validating errors.
(UPF) Feedback
•
•
•
•
•
•
•
•
GD-5
Page 17, line 23, class 1: The supply state itself consists of two pieces of…
“During simulation, each supply port and net maintains two pieces of information: a supply state and a voltage
value. The supply state itself consists of two pieces of information: an on/off state and a full/partial state. The
on/off state of a supply port and net is asserted when it is connected to a supply pad that is on and it is deasserted when there is no connected path to a supply pad or the supply pad is off. By default, supply pads are
on; however, they may be turned off to model off-chip switches using a language-specific simulation control. The
full/partial state represents the conductance of a switch along the supply path; it is asserted when the switch is
partially on, and de-asserted when it is fully on or fully off. The voltage value and full/partial state of a supply net
are valid only when its on/off state is asserted. The voltage value is the same as the voltage of the connected
supply pad.”
Suggest instead something like:
During simulation, each supply port and net maintains two pieces of information: a supply state and a voltage
value. The supply state itself consists of two pieces of data: the specified power state (Footnote? The specified
power state takes the two LSB of the 32 bit field and encodes them to prove three enumerated values: ON, OFF
and PARTIAL_ON) and a reserved set of bits whose values have not been specified. The state of a supply port
and net is ON when it is connected to a supply pad that is ON. The state of a supply port and net is OFF when
there is no connected path to a supply pad or the supply pad is OFF. By default, supply pads are ON; however,
they may be turned off to model off-chip switches using a language-specific simulation control. The
PARTIAL_ON state represents the conductance of a switch along the supply path; it is asserted when the switch
is PARTIAL_ON. The voltage value is valid only when the state is ON. The voltage value is the same as the
voltage of the connected supply pad.
The rest of this section needs similar updates.
GD-6
Page 25, line 10, class 2: Add a table: Command argument conventions - HierarchyAn example of naming
and merging in a hierarchy will be useful. Can power domain names be hierarchical? I assume that they are
defined in a scope and then can be referred to in a scope. This part can use a clarifying example.
(UPF) Feedback
•
•
•
GD-7
Page 25, line 10, class 2: Add a table: Command argument conventions – regular expressions
A treatment of regular expressions in the command argument list -- where they are assumed to be expanded. If commands that can take
single pins or ports can use a regular expression, what happened with multiple matches, can domains be referred to by regex, etc…
•
•
•
GD-8
Page 25, line 10, class 2: Add a table: Command argument conventions – pins and ports
A treatment of pins and ports, that pins are a subset of the generalization called ports, that pins are only used on library objects, things like
this…
•
•
•
GD-9
Page 25, line 5, class 3: Groups of commands
A list of commands that effect each class of operations or a table of the commands as rows and functions as columns would act as a
useful introduction
Some commands define the structure, others modify the interpretation, some would be packaged with IP, others would be specified with
use. I am thinking specifically of the retention points, identified with the IP, and implements with the specific use. We started discussing
this, reviewing the commands and separating them out by sequence of specification and refinement; we should continue this.
•
•
•
•
•
•
RM-1
Page 26, line 44:
Current:
Return the fully qualified name (from the current scope) of the created port or a null string if the port is created.
Proposed: Return a 1 if successful or a 0 if not.
•
•
•
RM-2
Page 26, line 52:
Since supply states are now inherited from supply port, and we allow multiple ports to drive a supply net based on resolution function, how
do we resolve states coming from different ports? This is not specified properly anywhere.
(UPF) Feedback
•
•
•
•
GD-10
Page 28, line 12, class 3: 6.5 Bind Checker
-module checker_name The name of a SystemVerilog module containing the verification code.
It seems that it would be very useful to generalize this beyond SystemVerilog; other modules for example those in SystemC would have similar utility.
•
•
•
•
•
RM-3
Page 32, line 36-37:
Current:
This scope is the current scope for this command; it defines the domain boundary within the logic design. ..
Proposed: Remove it
•
•
•
•
•
•
RM-5
Page 35, line 17:
Current:
The create_pst command …. of supply nets.
Proposed:
The create_pst command …. of supply nets. This command can only be used when the current scope is at the top-level design instance.
•
•
•
•
GD-11
Page 35, line 23, class 3: PST semantics and use in simulation
The power state table has no simulation semantics. It is tool-dependent error if an illegal (unspecified) combination of states occurs.
The treatment of imported IP and the combination of power state tables is a place for valuable work. The semantics need to be defined in combination with the merge
power domain command.
•
•
•
•
RM-6
Page 38, line 25:
Current: The name of the supply net holding the logical net name; this shall be a simple (non-hierarchical) name.
Proposed: The name of the supply net; this shall be a simple (non-hierarchical) name.
•
•
•
•
RM-7
Page 38, line 29:
Current: The scope where the logical net name is defined.
Proposed: The specified scope for the purpose of getting the logical net name.
(UPF) Feedback
•
•
•
•
•
RM-8
Page 38, line 34-37:
Current:
The get_supply_net command provides the ability to find the logical net name associated with a supply net in the specified domain for the specified scope. If domain is not specified, the power domain of the current scope is used. If -scope is not specified, the scope of -domain is used. If both -scope and -domain
are not specified, the current scope is used.
Proposed:
If -domain is specified, the get_supply_net command returns the logical net in the specified scope that is connected to the specified supply net in the specified
domain. If -scope is not specified, the scope of -domain is used. If this supply net does not exist in the extent of the power domain at the specified scope, a null
string is returned.
If -domain is not specified, the command returns the net with the specified name in the current scope or the scope defined by –scope.
•
•
•
•
•
Sec. 6.15 load_upf
RM-9
Page 39, line 14:
Current: The version of upf_file_name. See also: 6.32
Proposed: The UPF version according to which the loaded UPF file will be interpreted.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Sec. 6.16 map_isolation_cell
Page 40, line 6-11:
RM-10
Current:
map_isolation_cell isolation_name
-domain domain_name
[-elements list]
[-lib_cells list]
[-lib_cell_type lib_cell_type]
[-lib_model_name lib_model_name {-port {port_name net_name}}*]
Proposed:
map_isolation_cell isolation_name
-domain domain_name
[-elements list]
[-lib_cells list]
[-lib_model_name lib_model_name {-port {port_name net_name}}*]
I wrote my concerns with this one separately in the email...
•
•
(UPF) Feedback
•
•
•
•
•
Sec. 6.17 map_level_shifter
RM-11
Page 41, line 5-8:
Current: map_level_shifter_cell lever_shifter_name -domain domain_name -lib_cells list [-elements list]
Proposed: map_level_shifter_cell lever_shifter_strategy_name -domain domain_name -lib_cells list [-elements list]
•
•
•
RM-12
Page 41, line 11-12:
Current: lever_shifter_name Identify the isolation strategy specified in a set_level_shifter command (see 6.26) for
the specified domain.
Proposed: lever_shifter_strategy_name Identify the level shifter strategy specified in a set_level_shifter command
(see 6.26).
•
•
•
•
•
•
•
•
•
•
•
•
•
Page 41, line 26-27:
RM-13
Current: If –elements is specified, the elements shall be in the domain. When –elements is not specified, this
strategy
applies to all elements requiring level shifters within the power domain.
Proposed: If –elements is specified, the elements shall be in the domain. When –elements is not specified, the
mapping applies to all elements covered by the level shifter strategy within the power domain.
Sec. 6.19 map_retention_cell
RM-14
Page 43, line 6-11:
Current: map_retention_cell retention_name -domain domain_name [-elements list]
[-lib_cells list] [-lib_cell_type lib_cell_type] [-lib_model_name lib_cell_name {-port port_name net_name}*]
Proposed: map_retention_cell retention_name -domain domain_name [-elements list]
[-lib_cells list] [-lib_model_name lib_cell_name {-port {port_name net_name}}*]
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
(UPF) Feedback
GD-12
Page 44, line 27, class 3: Merge Power domains
“The merge_power_domains command merges two or more existing power domains into a single, new power domain. The
merged domains can no longer be referenced.”
There was some discussion of the potential for aliasing the power domain names that have been merged rather than eliminating
them. IP Core based validation code may include modules that need to reference the power domains of the IP, and after the
power domains of the IP are merged into system level domains, it appears that the sub domain would not be available, or the new
name would need to be discovered. This use case needs more consideration.
Sec. 6.25 set_isolation
RM-15
Page 48, line 41-49:
Current:
–isolation_supply_nets can specify a single power net, a single ground net, or both. If only an isolation power net is specified,
then the primary ground serves as the isolation ground. If only an isolation ground net is specified, then the primary power net
serves as the isolation power.
At least one of -power_net or -ground_net shall be specified, unless -no_isolation is specified. If only
-power_net is specified, the primary ground net shall be used as the isolation ground supply. If only
-ground_net is specified, the primary power net shall be used as the isolation power supply. If both are
specified, then these options specify the supply nets to be used as the isolation power and ground nets.
Proposed: At least one of –isolation_power_net or –isolation_ground_net shall be specified, unless -no_isolation is
specified. If only an isolation power net is specified, then the primary ground serves as the isolation ground. If only an isolation
ground net is specified, then the primary power net serves as the isolation power.
Sec. 6.26 set_isolation_control
RM-16
Page 50, line 29-31:
Current: Excepting the set_isolation_control command is executed within the current scope, and the addition of the –
location option, the semantics here are equivalent to having specified the isolation control signal and sense
with the set_isolation command
Proposed:
Delete!
(UPF) Feedback
•
•
•
•
•
RM-17
Sec. 6.27 set_level_shifter
Page 51, line 5:
Current:
set_level_shifter lever_shifte_name
Proposed:
set_level_shifter lever_shifter_strategy_name
•
•
•
•
RM-18
Page 52, line 11:
Current:
lever_shifter_name Level shifter strategy name (used only for reporting).
Proposed:
lever_shifter_strategy_name Level shifter strategy name.
•
•
•
•
•
•
•
•
•
•
•
•
RL-1
set_net_related_supply
**Rolf’s request**
Purpose Define the related power/ground pair for a signal port/net in a domain
Syntax set_net_related_supply domain_name [-ports list] [-nets list] -related_power_net supply_net_name
-related_ground_net supply_net_name
Arguments
domain_name The domain where the default supply nets are to applied.
-ports list
A list of ports that is to have a related power/ground supply defined.
-nets list
A list of nets that is to have a related power/ground supply defined.
-related_power_net supply_net_name
The supply net to which the pin is related.
-related_ground_net supply_net_name
The supply net to which the pin is related.
Return value
Return 1 if it succeeds and 0 if it fails.
The set_net_related_supply command provides the ability to define the related power and ground pins for a signal or port in a
power domain. This command overrides the default corruption semantic of the signal net connected to the port. The signal net
shall derive its corruption semantic from the related supply nets.
Input port: If either of the related supply nets are OFF the signal port and the driven net shall be corrupted.
Output port: The related supply nets of an output port can be used to infer isolation and or level shifters.
Nets: If related supply nets are defined on a net, they shall be inherited by the connected ports, unless specified by via the -port
option or specified by a set_related_supply_pin command (see 6.28).
Syntax example:
set_net_related_supply domain_A -port {In1 Out2} -net {net1} -related_power_net VDDX -related_ground_net VSSX
•
•
•
•
•
(UPF) Feedback
•
•
•
•
RM-19
Page 54, line 31:
Current:
retention_name Retention strategy name (used only for reporting).
Proposed: retention_name Retention strategy name.
•
•
•
RM-20
Page 55, line 1-4:
Current: At least one of -power_net or -ground_net shall be specified. If
only -power_net is specified, the primary ground net shall be used as the
retention ground supply. If only -ground_net is specified, the primary power net
shall be used as the retention power supply. If both are specified, then these
options specify the supply nets to be used as the retention power and ground
nets.
Proposed: At least one of –retention_power_net or –
retention_ground_net shall be specified. If only –retention_power_net is
specified, the primary ground net shall be used as the retention ground supply. If
only –retention_ground_net is specified, the primary power net shall be used
as the retention power supply. If both are specified, then these options specify
the supply nets to be used as the retention power and ground nets.
•
(UPF) Feedback
•
•
•
•
•
•
•
RM-21
Page 55, line 12-14:
Current:
If -save_signal is specified, then -restore_signal shall be specified. If -save_signal is not specified, then
-restore_signal shall not be specified. If the save and restore signals are not specified, then they shall be
specified in a set_retention_control command (see 6.30).
Proposed: The save and restore signals of retention registers shall be specified in a set_retention_control
command (see 6.30).
•
•
•
•
RM-22
Page 56, line 13:
Current:
retention_name Retention strategy name (used only for reporting).
Proposed: retention_name Retention strategy name.
•
•
•
RM-23
Page 56, line 41-43:
Current: Excepting the set_retention_control command is executed within the current scope, the semantics
here are equivalent to having specified the retention control signals, senses, and assertions with the
set_retention command. See also: 5.3.2.
Proposed: Delete!
•
•
•
Page 91, line 25, class 1 or 2: Table B1—UPF logic value VHDL mapping
This table needs to be updated to reflect the change from the separate bit access of
supply_net_type.state(0) to reflect the change to the enumerated value of ON, OFF, and PARTIAL_ON
•
•
•
•
•
•
•
•
•
•
•
(UPF) Feedback
ER-sim
----------------------------------------------------------------------**Deferred Jan 30th issues (kept together for clarity in future resolution)
[any page/line #s reference the Jan 23rd draft]**
I'm OK with your clarification of the boolean operators permitted in 6. We had discussed the semantics of
an error if a control port is something other than 0 or 1. Although we must allow for this as an initial state,
but simulation tools can handle that.
For multiple driven nets, I agree that the implementation semantics are null. But, the simulation semantics
specify the situations that simulation tools can handle when switching is distributed. If the users create a
situation that isn't supported, they'll see an error or warning.
On PSTs, other people have pointed out that PSTs are a system-level specification. The UPF spec
provides no provisions nor defines any semantics for merging PSTs. If a tool wishes to support mutliple
inter-related PSTs, then that is currently outside the definition of UPF. They can do it, but UPF requires
them to create each independently and to re-specify overlapping state information. I agree with your
methodology recommendation of specifying the states on ports and not nets.
I attempted to specify the ability to define a "hierarchy" of PSTs. But, that didn't make the cut. I think it
would be beneficial to allow this or some other way of explicitly capturing relationships between PSTs
(merging). The user would specify a PST.state in the "upper level" PST row instead of a port or net
state. This would then allow users to create the relationships without reproducing redundant port/net state
information in 2 or more PSTs. Something we can look at providing in the next version.
-Steve Bailey
(UPF) Feedback
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
My comments are interspersed below. Arturo
Answers to the questions directed at me are embedded below.
BTW, the -lib_cells and -lib_cell_type issue would be a relatively substantive change. I wouldn't want to attempt to get that in during the review
period. But, we should come to agreement and get that fixed as soon as possible after the Accellera board approves and we move to the next
step.
I don't think the other ones (based on my response/understanding) require any changes to the spec right now. We could add clarification of the
limited boolean expressions for create_power_switch later -- primarily because I think the limitations are inherent in what is being specified so
there's no pressure to do it immediately. Similarly, we could add clarification for the implicit net in the map_isolation_cell case. Again, I'm not
worried because I can't think of any other way it could be done.
-Steve Bailey
Hi Joe, Ed, Andrew, Steve,
(1) To Ed:
I agree with you that the current wording in the document for –current_scope is misleading. We proposed a different wording in the feedback
doc, please check. We also think that –include_scope if a better name.
SIM-1
(2)Question for Andrew:
Get_supply_net: Can we specify that this command returns the logical net instead of logical net name? Since it is going to be used like
get_nets. The return value on the screen will be the name of the net of course.
SIM-2
(3) Question for Steve:
Since supply states are now inherited from supply port, and we allow multiple ports to drive a supply net based on resolution function, how do
we resolve states coming from different ports? This is not specified properly anywhere.
[SAB] Is there something missing from section 5.1.5? Note, Arturo wrote this section, I reviewed and thought it was complete.
Unresolved: Net can be connected only to a single output.
one_hot: Multiple outpus can be connected. At most, one of the outputs may be ON at any particular time. (Paragraph starting on line 34
provides more detail. What is missing?)
parallel: Multiple outpus connected to supply net. Any number of outputs may be ON at a particular time but they shall all supply the same
voltage value. (Paragraph starting at line 40 provides more detail. What is missing?)
(UPF) Feedback
•
•
•
•
•
•
•
•
•
Section 6.11 create_supply_net
An argument/option was added to specify the resolution (default is unresolved as specified in 5.1.5 -- should be
repeated here but at least it is specified in the doc).
[AS] I believe Renu’s question may have nothing to do with the resolution function. Note that other than the
unresolved restriction, which implementation tools may enforce, resolution is a concept applicable only to
simulation. Let me restate the question: Consider two or more ports, each of which includes a power state
specification (PST). If these ports are connected together (via one or more nets) what are the power-state
semantics of the resulting (interconnected) network? Can the PST’s be merged? If so how?
My personal bias – power states are global so the simplest (and safest) thing would be to make it an error to
specify PST on two or more interconnected ports. Several options to relax the above are possible: for example,
we could choose to allow merging of identical PST’s or PST’s that differ only in the name – but not on the
voltage values or states. Etc…
Typically, it’s better to start out with a more restrictive set of rules. Restrictions can always be relaxed at a latter
time without creating backward compatibility issues.
[RM] Actually, I am not thinking about the case where there are multiple drivers. But just states are put on
different supply ports, lets say one is the driver and the other is the load of the same supply net. Which one is
valid? How do we resolve conflicts?
[SAB2] Doesn't this get into mixed signal simulation? This is a topic we haven't addressed at all. I don't know
of anything similar in logic simulation today. Perhaps the closest is timing gate simulation with SDF annotation
where a tool outside the simulator determines the timing delays based on wire length, capacitive loading, etc. I
don't see this as an issue with what we have today. If more accurate modeling of the voltage levels, voltage
swings, etc. are required, we'll need a much more thorough analysis and solution then just this one aspect.
•
•
•
•
•
•
•
•
•
•
•
(UPF) Feedback
SIM-3
(4) Question for Steve:
Map_isolation_cell and map_retention_cell commands:
- lib_cell_type: Does this refer to a specific lib-cell attribute? This is not defined anywhere. Does this require a
change to the Liberty standard? This option is not properly defined and we suggest to remove it.
[SAB] Yes, it was to refer to a cell attribute in the implementation library. To further explain the background, the lib
cell model provides the functional specification. There can be a 1:Many mapping between the functionality and the
implementation cell. The attribute would be common to all implementation cells that share the same
functionality. The implementation cells differ only on other characteristics (timing, loading). It was expected that the
synthesis tool would choose the best one based on these other criteria.
[RM] My question remains, what attribute in .lib are we referring to?
[SAB2] I assumed there must have been an existing Liberty attribute that would be obvious to use. Your question
indicates there isn't one. So, we'll need to add that information to the standard.
- lib_cells: How does this option interact with -lib_cell_type? Are they both needed? Does one have precedence over
the other? I would suggest to have only -lib_cells and remove -lib_cell_type.
[SAB] I see where you are going with the question. I cannot say. This question needs to be put to the users. I don't
recall -lib_cells being part of the consideration and it might be left-over from previous contemplated usage. I would
need to defer to someone who recalls or the users to determine if both -lib_cell_type and -lib_cells are required.
You are running out of colors, and not wanting to add any more, I will just say that for Q4, I believe the intention for
the -lib_cell_type option wrt to retention cells was to use the power_gating_cell attribute in liberty. There isn’t really
anything comparable for isolation cells, there is an attribute to identify and isolation cell, but nothing else that I am
aware of. [Andrew]
-lib_model_name: I am not sure how we can give the net-name for each port on the lib_model, since there is one
net in the design that needs to split into 2 parts before inserting the iso cell. So we don't have a net name for the
new net (its tool decided).
[SAB] You are correct for isolation. The port being isolated has an implicitly created net (connects the original port
to the input data port of the iso cell). We can tighten the semantics here by specifying the port name is used to
connect to the input of the isolation cell where the port name refers to the implicit net that is created since ports
can't be directly connected. The original port itself must be connected to some logic net, the user can make that
explicit connection as well as the net already exists. I don't think there is any other reasonable way to approach
this.
•
•
•
•
•
•
•
•
•
•
•
•
•
(UPF) Feedback
SIM-4
(5) Question for Steve:
Map_retention_cell has same issues as map_isolation cell.
[SAB] Yes for -lib_cells and -lib_cell_type.
No for the port connections. There aren't any implicitly created nets that the user needs to explicitly connect. If they need to do an explicit
mapping, then it is assumed they know the clk/enable, reset, and other control signals. We don't change the original register's
connectivity (we aren't sticking a new driver in between the object and everything that uses it). We only save and restore its contents.
[RM]: There is no easy way for the simulator to know exactly what net will be connected to the reset/set pins on the lib cell. It almost needs
to do a mapping to figure this out and there is no guarantee this will match what synthesis will do anyway.
[SAB2]: The simulator does not connect the reset/set pins on the library cell, the synthesis tool does. The simulator needs to know what to
connect to the simulation model ports. While it is possible for a simulator to do a front-end synthesis and figure it out (at least under certain
situations such as a required port naming convention), the reason for requring the port mapping information is so a simulator is not required
to do that -- we've avoided requiring simulators to do synthesis. The user is burdened with that requirement if they are going to do an explicit
mapping and want the simulation to use a model that reflects the specific retention cell (type) behavior that will be used.
I see no other option to do this. If the user wants an accurate verification of what they are telling synthesis to use, they have to provide a
model that provides that accuracy and information as to how to connect it to logic nets in the design. If we do not do this, then we fail at
ensuring the UPF simulation matches the synthesis.
BTW, Jim and I had a similar discussion yesterday related to the set_pin_related_supply command. We'll need more discussion about that
command as well. It seems that set_pin_related_supply may be OK for synthesis. The concern is that the semantics are under-specified for
simulation -- that simulation may need more information to ensure that the existing simulation model for the hard macro is simulated with
expected power-aware behavior. The issue comes down to: The library implementation cell of the hard macro is power aware. The existing
simulation model is almost assuredly not power aware. Therefore, while synthesis is happy to know nothing about the internals of the cell, it
is likely that the user needs to augment the non-power aware HDL model with additional UPF information to ensure the power-aware
verification matches. Synthesis would ignore the additional information (as with the HDL model, if the user gets the behavioral specification
wrong -- inconsistent with the cell's real behavior -- that is the user's problem. UPF or tools supporting UPF wouldn't be able to tell the user
that there is a problem.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
(UPF) Feedback
SIM-5
(6) create_power_switch: what kind of Boolean operations do we allow? (Comment from Arturo):
Page 33, create power switch.
The Boolean function needs to be restricted to be only the following operators:
o
! => negation
o
& => logical conjunction
Any other operator shall be an error.
[SAB] Unfortunately, we didn't understand what was underlying Arturo's comment about constant boolean function (if I recall correctly) and couldn't get it clarified in
time. Now that I have time to think this over, I believe I understand Arturo's restrictions. The boolean function is always in terms of the control port(s). On, partial-on,
off and error states as well as the ack port value can always be specified simply as the current value of a single (perhaps multi-bit) supply port as in a one-hot
encoding: 00100. Or as a combined logical evaluation of multiple control ports (presumably of a single bit, but it isn't required to be single bit), using the same
example with positional naming: !cp0 & !cp1 & cp2 & !cp3 & !cp4.
The only problem is that if you wish to capture as error states when any control port bit is undefined (X or Z), then I don't think this restriction will suffice. For example,
if you want to explicitly catch 00x00 as a named error state, wouldn't you need to write the expression as (!cp0 & !cp1 & (cp2 === X) & !cp3 & !cp4)? So, if we added
the equivalency operator, I think we would cover everything.
[AS] I believe you understood the main gist of my comment. Let me clarify.
I believe that the intent of the switch function is to specify explicitly the conditions under which the various (internal) switches are conducting, in a tabular form. For
example, consider a 3-transistor power switch with 3 inputs: A, B, and C. The ON conditions could be written as:
!A & !B & C
!A & B & !C
A & !B & !C
These represent a one-hot mapping of the inputs, written in tabular form as:
A B C
0 0 1
0 1 0
1 0 0
But, the same functional behavior can be specified using the OR function: A | B | C.
The latter specification is indeed more succinct, but it also tends to hide much of the intent. Is it a 3-transistor power switch, or a 3-input OR gate controlling a one
transistor power switch?
The former (tabular) mapping makes it possible for tools to better determine the user’s intent – and perhaps even synthesize the corresponding switches. This might
enable more analysis and automation than the “catch-all” option of mapping the switch to a cell. A similar reasoning could be applied to the error states.
An additional concern is that the more general Boolean functions might lead to overlapping ON and ERROR states. The standard does not currently specify how to
deal with such ambiguity. A pedantic reading of the text might conclude that an overlap between ON and ERROR states is always resolved as on ON – which is just a
coincidence of how the text is written, and certainly not the intent. If we restrict the syntax to negation and conjunction, users will not be able to unwittingly specify
overlapping states. And, if they do, we should explicitly state which state takes precedence: On or Error.
As for specifying X or Z as error states on the control inputs of a switch, that is unnecessary as Section 5.1.2 already states:
“If any of the control signals is X or Z, or the control signals match one of the error-state Boolean functions, the behavior of the power switch is undefined; in this case,
implementations may issue a warning or an error.”
Hence, X or Z is by default an error condition so it’s not necessary for users to specify that as an error state. The conservative implementation is used to help users
avoid extraneous states in the power distribution logic. In this context, an X/Z means a simulation unknown; not a don’t-care.
•
•
•
(UPF) Feedback
**Deferred Feb 14th issues from John Biggs (kept together for clarity in future resolution) [any page/line #s reference the v0.9/d4 draft]**
JB-1
Actually I tried to create a UPF file which describes the power schema intrinsic to the design of an ARM core - ie just the implementation
independent parts of a complete UPF file. You could think of these as the power constraints inherent in the IP.
Specifically this seems to boil down to:
o create_power_domain
o set_isolation
o set_retention
o create_pst
All the rest of UPF seems to be extrinsic to the design - ie it is implementation specific as so is created and applied during the
implementation of the IP.
Here is some more feedback:
Problems:
o The Power State Table is to implementation specific.
- The power state table uses port_states which are defined as absolute voltages - unfortunately this is implementation specific and so
should not be specified in the design.
- We need to allow for an abstract "not off" state so that you can declare a things like "CORE=OFF & RAM=!OFF“ with out having to
specify the RAM voltage.
- Having the ability to declare "illegal states" might
be more concise eg illegal_state(CORE=!OFF & RAM=OFF)
SAB> I also believe the PST capabilities can be beefed up. I hadn't thought of an abstract state (ON, essentially ON with undefined
voltage level). However, I have thought that we need to support hierarchical PST specification or have a way of specifying relationships
between 2 or more PSTs. I think IP providers could benefit from that ability. For example, ARM could define a PST for a core and then
"export" the states of the core's PST so that a system integrator could define the system states, in part, by reference to the ARM core PST
states. Abstracting the voltage levels would add more value.
Which, brings me to a question. Would you really want to define no voltage level? Or would it be more appropriate to define a constraint
which would be a voltage range? If it all depends on the actual implementation, then even a voltage range would likely be too much
information.
(UPF) Feedback
•
o The set_isolation command should specify the power net used to power the clamp as again this is
implementation specific.
- All we really need is some form of assertion/constraint which says how a signal should be clamped if it is
clamped.
- Can we move the isoltaion_power_net part of set_isolation to the set_isolation_control command?
- Also it would be nice to be able to say everything is clamped LO *except* these few signals which are
clamped HI.
Unfortunately this is specifically declared to be an error as the same elements have been specified
twice.
SAB> In this case, I had made assumptions on usage/methodology. Perhaps I was the only one making
such assumptions. My assumption is that the IP provider would define supply ports for the isolation power
and ground supplies and then connect supply nets to them. The set_isolation command would then
reference those nets. The IP provider would specify everything they need to specify and leave it to the
system integrator to connect the actual supplies to be used for isolation to the supply ports.
On the 3rd bullet, it is definitely the intent to be able to do what you are asking. In reading the set_isolation
command text, I think the problem is that the error check is too rigid and doesn't allow this situation ("It is an
error if multiple isolation strategies specify the same design element, pins, ports or nets.") But, if you look
above this statement, the draft also says: "If there are multiple isolation strategies for one domain, then,
per strategy, -elements can be used to specify the elements to isolate. If -elements is specified, the
elements shall be in the domain_name. If -elements directly specifies a port by name (not implicitly, by
specifying the port's instance or an ancestor of that instance), then the isolation strategy shall apply to that
port regardless of whether the port's mode matches the one specified by the -applies_to option." This
almost captures the intent, but is too narrowly defined.
In any case, we can revisit the wording to clear up any confusion in this area. I'm confident that everyone
will agree that the intent is to allow you to do what you want to do.
•
(UPF) Feedback
Questions/comments:
JB-3
•
o Does merge_power_domain dissolve the clamps between the merged domains?
SAB> Literally, no. "All strategies and mappings defined for the list of power domains shall be applied prior
to the merge ..."
However, if implementation tools do not optimize away isolation cells made irrelevant by a
merge_power_domain command, then they wouldn't be doing a very good job. Verification (simulation)
tools could also optimize them away but the pressure for simulators to do it is less than for implementation
tools. The benefit in simulation would be slightly (perhaps imperceptible) faster simulation.
I don't see this any different than optimizing away unneeded level shifters and isolation cells based on PST
specification.
o I note that the UPF spec allows switches to be either inside or outside the power domain - this is not
obvious and I spent some time believing that they were only allowed outside the power domain. It is a pity
we couldn't agree on a definitive place for switches.
SAB> Actually, the spec is quite clear that switches are always inside a power domain. I believe you are
really referring to whether the switch is inside the power domain that utilizes the supply that the switch
controls or outside that domain within a "parent" domain. (I put parent in quotes as UPF does not really
define a nesting of power domains. The nesting comes from the design elements and scope of the power
domains.)
Personally, I tend to see the switches inside the power domain utilizing the supply it controls. But, it was
equally clear that other people see it the opposite way (excluding the top level domain). We intentionally
allowed either as we didn't want UPF to dictate this aspect of the methodology because there was no
consensus on enforcing one over the other.
o Given that we go into so much detail describing various power domain configurations (figs 4,5,6 & 7) I
think it would be worth describing in a bit more detail what it means to have switches inside and outside the
power domain.
•
(UPF) Feedback
SAB> My CS/software engineering background is responsible for my bias that you encapsulate information
local to where that information is needed. This reduces dependencies in other parts of the design so that
changes that should be local are indeed local. One example of this influence is my description above that
an IP provider would define supply ports for the isolation supply(ies). It is also why I view the switch as
usually being internal to a PD that uses the switched supply.
However, it seemed to me that the implementation guys seemed to have the opposite view of mine. It
might be tied to the point you raise below on what is the switch's auto-connected supplies.
o When the switches are inside the domain I assume it is illegal to have more than one "logical" switch however I don't see this mentioned anywhere in the spec.
SAB> No it isn't illegal. Is there a reason that it should be?
•
•
JB-4
o I note that a power domain is a collection of elements which share a common primary power supply and
that an element is defined as a verilog module then I guess switches created during implementation are
allowed in the power domain even though they have a different primary power as the are not strictly
"elements" in the design.
SAB> The supply of a switch was never discussed as far as I can recall. I believe the reason why is that
implementation tools should know enough about the switch from the context to know what supply it
requires.
And, an epiphany, this would be the relevance for domain location. Does the switch take its supply as the
primary supply for the domain or is its supply determined in some other way (for example, the driver of the
control signal(s)). I'll explore this question further with other SNPS and LAVA as they may have been
assuming something I wasn't. Whatever assumptions there are, the real point is that the semantics of the
switch supply auto-connection needs to be explicit.
- However if switches were to be instantiated in the RTL then they would be elements in the design and
so would not be allowed in the same power domain as the elements they switch as they have a different
primary power.
•
(UPF) Feedback
SAB> Well, they could be. But, the user would need to explicitly connect supplies other than the primary supplies to the switch and
the switch model would need to be supply-aware. UPF does allow that.
Typos:
o Section 5.3: pp23 ll11 the example of the set_retention is not consistent with the spec.
SAB> Fixed in current draft (v0.9_d4, attached). I haven't yet posted this on the web but will.
•
•
JB-5a
o Section 6.4: pp27 ll20 should refer to port state names and refer to section 6.3 not net state names and section 6.11
SAB> Correct but not fixed in current draft. We seemed to have missed this one.
•
•
JB-5b
o Section 6.12: pp37 ll36 what is the "-default_value" in the code example?
SAB> This is eliminated from the example as states are defined in a separate command (add_port_state). The default state is the
first state defined for the port. The default state is relevant only if the port is a "top-level" supply pad that has no supply net source
connected to it. It provides a state that simulation initializes the port to. This is described in section 5.1. However, I think we lost a
bit on consistency in the specification as 5.1 says by default they are ON but doesn't reference 6.3's default state which is what it
should do.
•
•
JB-5c
o Section 6.24: pp50 ll22 I think it would be clearer to say "applies to the same design element" than "specify the same design
element"
SAB> This is the specific wording that goes with the previous discussion. I think this statement plus the others I referenced above
need to be considered together to ensure the intent is clear. Personally, I don't think the error statement is needed as it simply states
the precedence rules defined elsewhere.
o Section 6.24: pp49 ll42 -elements includes pins/ports seems to be inconsistent with the definition of elements.
SAB> Yes, but I think we can live with it. The description is accurate. I think it is worth changing only if we need to know if it is a
design element or a port or pin (due to confusion in the name space).
(UPF) Feedback
•
•
•
•
•
JS-1
There are currently no auto-connect semantics for switches in UPF. What semantic is necessary
to supply power to a switch that has active elements such as acknowledge logic?
Switch supply ports are [only] connected to supply nets explicitly. A supply net argument is
required (not optional) for each supply port. Supply connections to switches do not have any
restrictions, assumptions, or enforced relationships with respect to primary supply or ground nets.
There were a variety of conceptions debated during the course of UPF development. The
most frequently discussed conceptual alternatives were essentially: "is the switch in the scope or
the extent of the power domain?" It was not so much a question of: "is the switch in the domain
or its parent?" Another strongly recommended (but ultimately rejected) conception was that the
switch could be an element of the logic hierarchy but did not necessarily have a requirement for
membership in a particular power domain at all. Again, the idea that: "switches may exist as
elements that exist in the logical hierarchy but not necessarily in any particular power domain"
was rejected by the UPF TSC.
What we did all agreed to in UPF is: "The create_power_switch command defines an instance
of a power switch in the power domain. The switch is created within the scope of the power
domain." Note that the scope of the power domain defines a completely unambiguous specific
location in the logic hierarchy.
•
•
(UPF) Feedback
RL-2
Regarding the set_pin_related_supply I think the "For simulation, “ should be remove from the below
paragraph as it also applies to implementation.
Current text: "For simulation, the -related_power_pin and -related_ground_pin define the supplies for the
drivers of the ports in the -pins list for all instances of the library_cell module. This overrides any autoconnection of primary retention and/or isolation supplies for the driver."
Proposed text: "The -related_power_pin and -related_ground_pin define the supplies for the drivers of the
ports in the -pins list for all instances of the library_cell module. This overrides any auto-connection of
primary retention and/or isolation supplies for the driver.“
•
There is insufficient information in the command for an implementation tool. But, there doesn't seem to be
sufficient information for a simulation tool.
The problem comes down to the fact that simply associating a supply with a pin doesn't give enough
information to a simulator for it to ensure the simulation results will match whatever is going to happen in the
real hardware. If the fan-in to the logic driving the output includes passage through a register (actually think of
2 registers in series), what assumptions can the simulator make on the supplies of the fan-in logic? What
value is propagated through to the driver of the output, etc?
The only situation that I think will work without ambiguity (given the current semantics) is the one you had
described before: A wire is passed through the domain but the input side is connected to the output via a
buffer or inverter (creates a driver in the domain). In this simple, case it should work fine as there is no
dependence on other signals or logic in the domain. However, the standard does not limit its use to this
simple case.
The thinking is that there would be no problem in implementation because the synthesis tool doesn't infer
anything. It is a hardmacro. So, what we need to review is whether specifying only this command is sufficient
to ensure the power-aware simulation behavior matches what the macro would actually do.
I'm hopeful that we can get this better defined so it works for both simulation and implementation. As to your
suggested change, it seems to be OK from my perspective as it looks to be a minor change (that is, it should
be the same for implementation tools).
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
(UPF) Feedback
RM-24
create_supply_port , etc. responses
I don't recall the standard specifying what scope is used (presumably the current scope, but it should be specified). Second, if the
need is to identify an existing HDL port to be used as a supply port, then we really aren't creating anything. We are just making
the HDL port "visible" to UPF. Primary purpose of doing so (I think) is to then identify a set of states that port can drive and to use
that information in the PST. This seems like a very useful thing to do (make the PA model white box to UPF). My concern is that
we really have insufficient information in the standard to make this a reality. (Perhaps we should parallel the power switch
situation where we have create_power_switch and set_power_switch? Define set_power_port which doesn't create a port but
identifies an existing HDL port as a supply port with all relevant information associated with it.)
One more thing for us to review more carefully in the near future.
-Steve Bailey
Hi, We did discuss that –domain should be optional for create_supply_port. We need to be able to read in RTL which has power
ports. And supply nets can connect to these existing ports. These ports are not specified as “belonging” to any power domain. So
the restriction does not work uniformly with RTL and UPF.
Regards, Renu.
Steve, I believe this was changed to an optional argument before we had the clear definition of scope / extent. Now we have
this I agree this should be a required argument. I.e. my interpretation on this is
create_supply_port VN1 –domain PD1 ;# This will create the port VN1 on the scope of the power domain PD1
Renu do you agree? I know in your original proposal many months back the intention was to be able to create ports on any logical
level. But with the semantics for extent / scope and the punch through capabilities we have agreed on I don’t see this as required
any more. Regards Andrew
Did we really intend to make -domain an optional argument for create_supply_port? I believe it is meant to be a required
argument.
(UPF) Feedback
• RM-25
• One more issue: Set_isolation –elements: elements
can be either port/pins or nets. Since ports and nets
can have the same names, it is unclear whether user
specified a port or net. Also, if the specified object is
a net with a large fanout, it is not clear where the
isolation should be put. Allowing nets is adding
ambiguity, so I am wondering if we can take out nets?
•
(UPF) Feedback
•
•
KK-1
Thanks Steve, I agree with Biggsy - once one starts incorporating hierarchical UPFs,
users need a way to link to PSTs/states that come with the IP. Kevin Kranen
•
-----Original Message----Yes. I think we should review this area as it might make sense to allow
specification of states on supply net for convenience even if every
power source really comes either off chip or from a switch or regulator
on chip. At a minimum, the changes you noted as to supply port vs. net
need to be incorporated.
I've also had a side discussion with Biggs and we believe that the PST
should also be able to specify states from another PST so that one PST
can be defined in terms of another. For example, an IP supplier can
identify the power states for their IP and a system integrator can
define the system PST in terms of supply port/net states and states
defined in another PST. -Steve Bailey
•
-----Original Message----Thanks Steve, Your explanation makes sense as long as users explicitly create ports
for every supply net that enters each domain - no automated port creation for supply nets.
Sounds like we need to make minor tweaks in add_pst_state.
The list of supply net state names (see 6.11),
Should read
The list of supply port state names (see 6.3),
Is that right ?
If so - one more question - should create_pst then have -supply_ports
as it's argument rather than supply_nets ?
Add more UPF feedback here