View Library View Table Of Contents View Index for This Manual View Previous Chapter in Book View Next Chapter in Book Open PDF to print book Email Comments Help Using Documentation Shut Down Cadence Documentation Server


Common Power Format Language Reference, Version 2.0


8                                                       


General CPF Commands



assert_illegal_domain_configurations

assert_illegal_domain_configurations -name mode
{ -domain_conditions domain_condition_list
| -group_modes group_modes_list
| -domain_conditions domain_condition_list -group_modes group_mode_list }

Asserts that a particular configuration of domain conditions and power mode control group conditions is illegal. The assertion is only checked against conditions explicitly specified. No assumptions are made about unspecified domains.

A verification tool will flag if the design enters a power mode that matches all of the domain and group conditions specified in this command.

An error message is issued if the design operates in a configuration of power domain conditions that have not been defined in a power mode.

Note:  Verification tools must issue an error message for illegal power modes, but implementation tools might use these power modes to permit optimization.

Options and Arguments

-domain_conditions domain_condition_list


Specifies the nominal condition of each power domain to be considered an illegal configuration.

Use the following format to specify a domain condition:

domain_name@nominal_condition_name

Note:  You can associate each power domain with only one nominal condition per command.

The power domains must have been previously defined with the create_power_domain command.

The condition must have been previously defined with the create_nominal_condition command.

-group_modes group_mode_list


Specifies the mode of each power mode control group.

Use the following format to specify the mode for a group:

group_name@power_mode_name

The specified group_name refers to the name of a power mode control group, previously defined with the set_power_mode_control_group command or to the name of the scope in case the power control group was automatically defined. The specified power_mode_name must have been defined in a create_power_mode command contained in the definition of the specified power mode control group.

-name string    

Specifies the name of the mode.

This power mode cannot be defined with the create_power_mode command.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.


Example

The following command declares that it is illegal for power domains PD1 and PD2 to have the nominal condition a at the same time.

assert_illegal_domain_configurations -name foo -domain_conditions {PD1@a PD2@a}

Related Information

Power Mode

create_nominal_condition

create_power_domain

create_power_mode

set_power_mode_control_group

Power Mode Control Groups



create_analysis_view

create_analysis_view
-name string
-mode mode
{ -domain_corners domain_corner_list
| -group_views group_view_list
| -domain_corners domain_corner_list -group_views group_view_list}
[ -user_attributes string_list] [-default]

Creates an analysis view. Associates a list of operating corners with a given mode.

The set of active analysis views represents the different design variations (MMMC, that is, multi-mode multi-corner) that will be timed and optimized.

A power design can have no analysis views, but if any are specified, one and only one can be the default. If you do not specify the default, the first view defined will be designated as the default.

Options and Arguments

-default

Designates the specified view as the default view.

Note:  For a given scope you can only have one analysis view as default.

-domain_corners domain_corner_list


Specifies the operating corner of the power domain to be considered in the specified mode.

Use the following format to specify a domain corner:

domain_name@corner_name

Specify a corner for each domain to be considered for the specified power mode.

Note:  You must also include the corner definition for a domain that is switched off in this view.

The power domain must have been previously defined with the create_power_domain command.

The corner must have been previously defined with the create_operating_corner command.

-group_views group_view_list


Specifies the view of each power mode control group to be considered with the specified analysis view.

Use the following format to specify the mode for a group:

group_name@view_name


The specified view_name must have been defined in a previous create_analysis_view command contained in the definition of the specified power mode control group (set_power_mode_control_group).

-mode mode   

Specifies a mode.

The mode must have been previously defined with the create_power_mode command.

-name string   

Specifies the name of the analysis view.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.

-user_attributes string_list


Associates a list of user-defined attributes with the analysis view. Specify a list of strings.


Example

The following example applies to a design with three power domains (PD1, PD2, and PD3). The design can operate in two modes (M1, M2).

The following table shows the nominal voltages for each power domain in each of the modes.


Power Mode

Power Domain

PD1

PD2

PD3

M1

1.2V

1.2V

1.0V

M2

1.2V

1.0V

0.0V


The best and worst corner voltage of each mode is +10 percent and -10 percent of the nominal voltage for a domain in that mode.

As a result the operating corner and the analysis view can be described as below.

create_operating_corner -name high_max -voltage 1.3 -library_set lib_1.3
create_operating_corner -name low_max -voltage 1.1 -library_set lib_1.1
create_operating_corner -name high_min -voltage 1.1 -library_set lib_1.1
create_operating_corner -name low_min -voltage 1.0 -library_set lib_1.0
create_operating_corner -name off -voltage 0.0 -library_set lib_1.0
create_analysis_view -name fast_M1 -mode M1 \
-domain_corners {PD1@high_max PD2@high_min PD3@low_max}
create_analysis_view -name slow_M1 -mode M1 \
-domain_corners {PD1@high_min PD2@high_min PD3@low_min}
create_analysis_view -name fast_M2 -mode M2 \
-domain_corners {PD1@high_max PD2@low_max PD3@off}

Related Information

Analysis View

create_operating_corner

create_power_mode



create_assertion_control

create_assertion_control
-name string
{ -assertions assertion_list
| -domains power_domain_list}
[ -exclude assertion_list]
[ -shutoff_condition expression]
[ -type {reset | suspend} ]

Inhibits evaluation of any selected assertion instance when its related power domain is powered down.

By default, assertions remain active when the power domain is powered down.

Note:  If the selected assertion instance belongs to an unswitched domain, the evaluation is not affected.

Methodology Implications

  1. An assertion instance is related to a power domain if it is associated with a hierarchical (module) instance that belongs to that power domain. An assertion instance is associated with a hierarchical (module) instance if it is bound to that instance, appears in that instance, or is bound to the module definition for that instance. Each assertion instance is associated with a unique power domain.

  2. An assertion that monitors the behavior of signals that are driven by logic entirely within a single power domain should be contained within, or bound to an instance of, the module containing that logic.

  3. An assertion that monitors the behavior of signals that are driven by logic contained in two or more power domains should be contained within, or bound to an instance of, a module associated with a power domain that is always on when any of the monitored power domains is on.

  4. An assertion that appears in or is bound to a testbench will be considered to be in an unswitched power domain.

Tools are not required to check that these methodology guidelines are followed. Designers need to make sure that assertions are created for the right power domain to check the expected behavior.

Options and Arguments

-assertions assertion_list


Selects only the assertions whose names are included in the assertion list.

Assertion names can contain wildcards.

-domains power_domain_list


Selects all assertions that appear in any hierarchical instance associated with one of the specified power domains.

The power domains must have been previously defined with the create_power_domain command.

-exclude assertion_list


Specifies to exclude the specified list of assertions from the list of already selected assertions through the -assertions or -domains option.

-name string    

Specifies the name of the assertion control.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.

-shutoff_condition expression


Specifies the condition when the selected assertions should be disabled.


By default, the selected assertions are disabled when the associated power domain of the assertion is powered down.

-type {reset|suspend}


Specifies whether to reset or suspend the assertions when the shutoff condition evaluates from true to false. The shutoff condition of a power domain controls evaluation of any selected assertion in that power domain.

If type is reset, all state information is cleared and the assertions will be evaluated from the reset state.

If type is suspend, evaluation of controlled assertions continues from where it left off previously.

Default: reset


Examples

In the following examples, a set_hierarchy_separator command has been included in the CPF file to specify that the slash ( / ) is the hierarchy separator.

Related Information

create_power_domain



create_bias_net

create_bias_net
-net net
[-driver pin]
[-user_attributes string_list]
[-peak_ir_drop_limit float]
[-average_ir_drop_limit float]

Specifies or creates a bias net to be used as a power supply to either forward or backward body bias a transistor.

Note:  Even if this net exists in the RTL or the netlist, it still must be declared through this command if the net is referenced in other CPF commands.

You can use the create_global_connection command to connect the net to the appropriate pins during physical implementation.

Options and Arguments

-average_ir_drop_limit float


Specifies the maximum allowed average voltage change on a bias net due to resistive effects in volt (V) for any mode.

Default: 0

-driver pin

Specifies the driver of the net. Specify a port or instance pin.

-net net    

Declares a bias net.

Note:  You can specify a hierarchical net name to infer a bias net in another scope.

-peak_ir_drop_limit float


Specifies the maximum allowed peak voltage change on a bias net due to resistive effects in volt (V) for any mode.

Default: 0

-user_attributes string_list


Attaches a list of user-defined attributes to the net. Specify a list of strings.


Example

Related Information

create_global_connection



create_global_connection

create_global_connection
-net net
{ -pins pin_list | -ports port_list | -pg_type pg_type_string }
[-domain power_domain | -instances instance_list]

Specifies how to connect a global net to the specified pins. A global net can be a data net, bias net, power net or ground net.

Given a list of pins, if a specified pin is already connected in Verilog, that pin is ignored for connection. For pins that are not connected in Verilog, the following priority determines the pin connection with the specified net:

This command allows to specify which pins must be connected. You can

Options and Arguments

-domain power_domain


Limits the pins to be connected to pins that belong to the specified power domain.

The power domain must have been previously defined with the create_power_domain command.

-instances instance_list


Limits the pins to which the specified global net should be connected to pins that belong to the specified instances. Specify the name with respect to the current design or top design.

You can use wildcards (*) to specify a pattern of instance names.

-net net    

Specifies the name of the global net for which you specify the global connection.

If the specified net does not exist in the design, you must have defined it with a create_bias_net, create_power_nets or create_ground_nets command.

-pg_type pg_type_string


Identifies the instance pins to connect to the specified global net by selecting those pins whose pg_type attribute in the corresponding Liberty cell pin definition matches the pg_type_string.

No wildcard characters are allowed.

-pins pin_list

Specifies the name of the LEF pin to connect to the specified global net.

If several pins of the same instance have names that match the specified names, all those pins will be connected to the specified global net.

You can use wildcards (*) to specify the pin names.

-ports port_list

Specifies the names of top-level module ports to connect to the specified global net.

You can use wildcards (*) to specify the port names.


Examples

Related Information

Object Lists

create_bias_net

create_ground_nets

create_power_domain

create_power_nets



create_ground_nets

create_ground_nets
-nets net_list
[-voltage {float | voltage_range}]
[-external_shutoff_condition expression | -internal]
[-user_attributes string_list]
[-peak_ir_drop_limit float]
[-average_ir_drop_limit float]

Specifies or creates a list of ground nets.

Note:  Even if this net exists in the RTL or the netlist, it still must be declared through this command if the net is referenced in other CPF commands.

The ground nets are created within the current scope.

Options and Arguments

-average_ir_drop_limit float


Specifies the maximum allowed average ground bounce on the specified ground nets due to resistive effects in volt (V) for any mode.

Default: 0

-external_shutoff_condition expression


When a specified ground net is connected to an external source, you can use a Boolean expression to specify under which condition the external source can be switched off.

In this case, the net must be connected to an I/O port or pad.

Note:  If neither this option nor the -internal option is specified, the ground source is assumed to be the primary source of an unswitched power domain.

-internal

Specifies that the nets must be driven by an on-chip ground switch. You must specify this option if this ground net is the primary ground net of an internal switchable power domain using ground (footer) switches.

-nets net_list


Declares a list of ground nets.

Note:  You can specify a hierarchical net name to infer a ground net in another scope.

-peak_ir_drop_limit float


Specifies the maximum allowed peak ground bounce on the specified grounds net due to resistive effects in volt (V) for any mode.

Default: 0

-user_attributes string_list


Attaches a list of user-defined attributes to the net. Specify a list of strings.

-voltage {float | voltage_range}


Identifies the voltage applied to the specified nets.

The voltage range must be specified as follows:

lower_bound:upper_bound

Specify the lower bound and upper bound, respectively.


Example



create_isolation_rule

create_isolation_rule
-name string
[-isolation_condition expression | -no_condition]
{ -force -pins pin_list
| -from power_domain_list | -to power_domain_list
| -from power_domain_list -to power_domain_list }
[-pins pin_list]
[-exclude pin_list]
[-isolation_target {from|to}]
[-isolation_output { low | high | hold | tristate |clamp_high | clamp_low}
[-isolation_control list_of_additional_controls]
[-secondary_domain power_domain]        

Defines a rule for adding isolation cells.

This command allows to indicate which domain crossings must be isolated. You can

If you use the -pins option to select the domain crossings to be isolated, you must always combine this option with the -force, -from, -to or -from and -to options.

Options and Arguments

-exclude pin_list


Specifies that those already selected domain crossings that are connected to, driven by, or driving the specified pins must be excluded from isolation.

You can specify ports and instance pins. If the specified port or pin is not connected to a net segment selected with the -from, -to and -pins options, it will be ignored.

-force

Specifies that isolation logic shall be inserted, even in situations in which the rule would normally be ignored (see When Can Implementation Tools Ignore An Isolation Rule).

Note:  If the isolation logic was already inserted, the tool will not insert the isolation logic again.

Note:  You must specify this option together with the -pins option.

-from power_domain_list


Specifies that the rule must be applied to those domain crossings driven by logic in the specified (from) domain and with at least one leaf load in another power domain.

The power domain must have been previously defined with the create_power_domain command.

-isolation_condition expression


Specifies the condition when the selected domain crossings should be isolated. The condition can be a Boolean function of pins and ports.

If neither this option or the -no_condition option is specified, the rule is considered incomplete. In this case, only domain crossings connected to the primary input ports of the current design or macro model can be selected.


To complete an incomplete isolation rule, the -default_isolation_condition option specified with the create_power_domain command for the originating (driving) power domain(s) of the selected domain crossings will be used as the isolation condition.

If the -default_isolation_condition option for the driving power domain of the selected domain crossings was not specified, the incomplete rule is treated as a design constraint.

-isolation_control list_of_additional_controls


Specifies a list of controls.

Use the following format to specify a control:

{ control_type expr }

control_type indicates the type of isolation control. Allowed types are:

  • sync_enable--can only be used with isolation types high and low. The corresponding expression needs to be true before the isolation condition can be asserted and deasserted. But the expression can be corrupted when the isolation condition is asserted.

  • set--can only be used with -isolation_output hold. When the expression is true, the stored value and isolation output will be set to 1 regardless of the stored state.

  • reset--can only be used with -isolation_output hold. When the expression is true, the stored value and isolation output will be set to 0 regardless of the stored state.

expr is a simple boolean expression to describe the driving function of the control logic.


It is an error if the isolation condition becomes true when sync_enable is false.

It is an error to specify both sync_enable and either set or reset types of isolation controls at the same time.

To implement a rule with a sync_enable type of control, an isolation cell definition must exist in which the -aux_enables option specifies only one pin, and that pin must relate to the switchable supply.

-isolation_output {low|high|hold|tristate|clamp_high|clamp_low}


Controls the output value at the output of the isolation gates when the isolation condition is true.

The output can be high, low, in the tristate, held to the value it had right before the isolation condition is activated, or clamped to a high or low value.

A tristate output is implemented using a tristate buffer whose enable signal is determined by the isolation enable condition.

Rules defined with the clamp_high or clamp_low value for the isolation output, must be implemented with isolation cells that are defined with the -clamp option. In addition, the isolation target must be from.

Note:  The clamp_high value can only be specified if the driving domain is ground switched. The clamp_low value can only be specified if the driving domain is power switched.

Default: low

-isolation_target {from | to}


Specifies when this rule applies.

  • from indicates that the rule applies when the power domain of the drivers of the specified pins is switched off.

  • to indicates that the rule applies when the power domain of the loads of the specified pins is switched off.

Default: from

Note:  If two isolation rules apply to the same domain crossing and differ in isolation target, two isolation cells can be inserted.

If you intend to use the isolation rule to isolate cells with open source input pins or to isolate power clamp cells, the isolation target must be to.

-name string

Specifies the name of the isolation rule.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.

-no_condition

Specifies that the isolation logic is automatically enabled when the power domains containing the drivers of the selected domain crossings are shut off.

Note:  To implement this type of rule, only isolation cells defined with the -no_enable option can be used.

-pins pin_list

Specifies to apply the rule to those domain crossings that are connected to, driven by, or driving the specified pins.

You can specify ports and instance pins.

-secondary_domain domain


Specifies the domain that provides the power supply for the isolation logic inferred by this rule.

If the isolation logic is implemented with an isolation cell with secondary power or ground pins, this domain determines the supplies to which the secondary power and ground pins of the cell must be connected.

-to power_domain_list


Specifies that the rule must be applied to those domain crossings that are connected to logic belonging to the specified (to) domain and that are driven by a signal from another power domain.

The power domains must have been previously defined with the create_power_domain command.


Example

The following command creates isolation rule iso2,that applies to all domain crossings that are driven by or connected to pins whose names start with DA and DB, and that belong to domain domainA. However the rule does not apply if the domain crossings are driven or connected by pins DA_Iso and DB_Iso of domain domainA.

create_isolation_rule -name iso2 -pins { DA* DB* } -exclude { DA_Iso DB_Iso }\
    -from domainA

Related Information

Isolation Cell

create_power_domain

update_isolation_rules



create_level_shifter_rule

create_level_shifter_rule
-name string
{ -force -pins pin_list
| -from power_domain_list | -to power_domain_list
| -from power_domain_list -to power_domain_list }
[-pins pin_list]
[-exclude pin_list][-bypass_condition expression]
[-input_domain power_domain] [-output_domain power_domain]

Defines a rule for adding level shifters. A specific rule allows you to indicate on which domain crossings to insert level shifters. You can

If you use the -pins option to select the domain crossings for level shifter insertion, you must always combine this option with the -force, -from, -to or -from and -to options.
The -input_domain and -output_domain options can be used to connect the power and/or ground pin of a level shifter to the non-default power and/or ground net of the power domain in which the level shifter is instantiated.

Options and Arguments

-bypass_condition expression


Specifies the condition when to bypass the voltage shifting functionality.

When the expression evaluates to true, the logic associated with the rule does not perform voltage level shifting (is bypassed).

Note:  To implement this rule, the tool must insert a bypass level shifter that was specified with the -bypass_enable option of the define_level_shifter_cell command.

-exclude pin_list


Specifies that those already selected domain crossings that are connected to, driven by, or driving the specified pins must be excluded from level shifter insertion.

You can specify ports and instance pins. If the specified port or pin is not connected to a net segment selected with the -from, -to and -pins options, it will be ignored.

-force

Specifies that a level shifter must be inserted, even when the rule would normally be ignored (see When Can Implementation Tools Ignore A Level Shifter Rule).

Note:  If the level shifter logic was already inserted, the tool will not insert the level shifter logic again.

Note:  You must specify this option together with the -pins option.

-from power_domain_list


Specifies to apply the rule to those domain crossings driven by logic in the specified (from) domain and with at least one leaf load in another power domain.

The power domain must have been previously defined with the create_power_domain command.

-input_domain power_domain


Specifies the input power domain of the level shifter inferred by this rule.

By default, the input power domain of a level shifter is the power domain of the logic that drives the net selected by this rule.

The input power and/or ground pin of the level shifter cell must be connected to the primary power and/or ground net of the input power domain of the level shifter.

Note:  For the case of high to low level shifting, the level shifter cell may have no dedicated input power and ground pins. In this case, the input power domain specification will be ignored.

-name string   

Specifies the name of the level shifter rule.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.

-output_domain power_domain


Specifies the output power domain of the level shifter inferred by this rule.

By default, the output power domain of a level shifter is the power domain of the logic driven by the level shifter.

The output power and/or ground pin of the level shifter cell must be connected to the primary power and/or ground net of the output power domain of the level shifter.

Note:  This option is required when an inferred level shifter drives logic that belongs to multiple power domains with different supplies.

-pins pin_list

Specifies to apply the rule to those domain crossings that are connected to, driven by, or driving the specified pins.

You can specify ports and instance pins.

-to power_domain_list


Specifies to apply the rule to those domain crossings that are connected to logic belonging to the specified (to) domain and that are driven by a signal from another power domain.

The power domain must have been previously defined with the create_power_domain command.


Example

The following command creates level shifter rule lsr1,that applies to all domain crossings that are driven by or connected to pins whose names start with DA and DB, and that belong to domain PD1 or PD2. However the rule does not apply if the domain crossings are driven or connected by pin DA_C of domain PD1 or PD2.

create_level_shifter_rule -name lsr1 -pins { DA* DB* } -exclude { DA_C }\
    -from PD1 -to PD2

Related Information

Level Shifter Cell

create_power_domain

define_level_shifter_cell

identify_power_logic

update_level_shifter_rules



create_mode

create_mode
-name string -condition expression
[-probability float] [-illegal]

Defines a mode of the design. Modes can be non-mutually exclusive, so multiple modes can be active simultaneously at a point in time. In addition, a mode definition does not require the explicit specification of the states of all power domains. As a result, this is a more general specification than power modes.

Options and Arguments

-condition expression


Specifies the condition when the design is in the specified mode. It can be described by a Boolean or arithmetic expression of the following objects:

  • Design pins and ports

  • Domain conditions in the following form:

    power_domain@nominal_condition
  • Other mode or power mode definitions in the form of @mode

-illegal

Identifies the mode as illegal. By default, a mode is legal.

-name string   

Specifies the name of the mode.

The name of a mode must be unique among other modes and power modes within the same design scope.

-probability float

Specifies a floating point value between 0 and 1 to indicate the probability of the design being in this mode.

Typically, the information is set by system architects and can be used by system level optimization tools to achieve power optimization by utilizing different mode configurations.


Example

In the following example, the design is in mode

Related Information

Mode

create_power_mode



create_mode_transition

create_mode_transition
-name string
-from power_mode -to power_mode
[-assertions assertion_list]
{ -start_condition expression [-end_condition expression]
  [ -cycles [integer:]integer -clock_pin clock_pin
  | -latency [float:]float ]
| -illegal }

Describes how the transition between two modes is controlled, and the time it takes for each power domain to complete the transition. The transition can be between either power modes or generic modes.

To determine the starting time of a specific mode transition for a power domain, use the following process:

  1. If the power domain is shut off at the end of a mode transition, the domain starts the transition when the shutoff condition changes to true.

  2. If the nominal condition of the ending state is specified in the -active_state_conditions of the power domain, the domain starts the transition to the ending state when the condition for this nominal condition changes to true

  3. If the power domain is shut off at the beginning of a mode transition, the domain starts the transition when the shutoff condition changes to false.

  4. For all other cases, the domain starts the transition as soon as the expression specified in -start_condition becomes true.

Mode transitions that start from the same mode cannot have the same start condition.

Options and Arguments

-assertions assertion_list


Selects only the assertions whose names are included in the assertion list. The assertions must evaluate to true for the specified mode transition to take place.

Assertion names can contain wildcards.

-clock_pin clock_pin


Specifies the name of the clock pin that controls the transition.

You can specify ports and instance pins.

-cycles [integer:]integer


Specifies an integer of number of clock cycles needed to complete the power mode transition.

If two numbers are specified, the first number indicates the minimum number of clock cycles, while the second number indicates the maximum number of clock cycles.

Note:  If you specify only one value, it is considered to be the maximum number.

-end_condition expression


Specifies the condition that acknowledges that the design is in the power mode specified by the -to option.

The expression is a Boolean function of pins and ports.

-from power_mode

Specifies the power mode from which to transit.

The mode must have been previously defined with the create_mode or create_power_mode.

-illegal

Identifies the power mode transition as an illegal one.

-latency [float:]float


Specifies the time needed to complete the power mode transition. Specify the time in the units specified by the set_time_unit command.

If two numbers are specified, the first number indicates the minimum time needed, while the second number indicates the maximum time needed.

Note:  If you specify only one value, it is considered to be the maximum number.

-name string   

Specifies the name of the power mode transition.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.

-start_condition expression


Specifies the condition that triggers the power mode transition.

-to power_mode

Specifies the power mode to which to transit.

The mode must have been previously defined with the create_mode or create_power_mode.


Related Information

Mode Transition

create_mode

create_power_mode



create_nominal_condition

create_nominal_condition
-name string
-voltage {voltage | voltage_list}
[-ground_voltage {voltage | voltage_list}]
[-state {on | off | standby}]
[-pmos_bias_voltage {voltage | voltage_list}]
[-nmos_bias_voltage {voltage | voltage_list}]
[-deep_pwell_voltage {voltage | voltage_list}]
[-deep_nwell_voltage {voltage | voltage_list}]

Creates a nominal operating condition with the specified voltage. For each voltage, you can specify a single value, two values, or three values:

Note:  A power domain is switched off if the voltage of its associated nominal condition is 0.

Options and Arguments

-deep_nwell_voltage {voltage | voltage_list}


Specifies either a single voltage or a voltage list for the deep nwell supply net in the domain that uses this condition.

The voltage must be specified in volts (V).

-deep_pwell_voltage {voltage | voltage_list}


Specifies either a single voltage or a voltage list for the deep pwell supply net in the domain that uses this condition.

The voltage must be specified in volts (V).

-ground_voltage {voltage | voltage_list}


Specifies either a single voltage or a voltage list for the ground net in the domain that uses this condition.

The voltage must be specified in volts (V).

-nmos_bias_voltage {voltage | voltage_list}


Specifies either a single voltage or voltage list for the body bias voltage of the n-type transistors in the domain that uses this condition.

The voltage must be specified in volt (V).

-name string   

Specifies the name of the nominal operating condition.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.

-pmos_bias_voltage float


Specifies either a single voltage or voltage list for the body bias voltage of the p-type transistors in the domain that uses this condition.

The voltage must be specified in volt (V).

-state {on | off | standby}


Specifies the state of a power domain when it uses this nominal condition.

Note:  In the description below, logic refers to logic in the associated power domain that does not depend on a secondary domain.


You can specify the following values:


  • on--indicates that all logic in the domain operates at operational speed. To improve performance in the on state, you can apply forward body biasing.

    To describe forward body biasing, you must specify -pmos_bias_voltage with a value smaller than the value of -voltage and -nmos_bias_voltage with a value greater than the value of -ground_voltage.


  • off--indicates that all logic in this power domain is shut down and does not retain its state.

  • standby--indicates that all logic in the domain retain their state values but that the logic cannot perform any normal operation. The standby state can be achieved by

    • reverse body biasing

      To describe reverse body biasing, you must specify -pmos_bias_voltage with a value larger than the value of -voltage and -nmos_bias_voltage with a value smaller than the value of -ground_voltage.

    • source biasing

      To describe source biasing, you must specify the voltage values for the power supply (-voltage) and ground supply (-ground_voltage) that cause the logic to be in the standby state.


By default, the state is considered on if the voltage specified for the -voltage option is non-zero.

-voltage {voltage | voltage_list}


Specifies either a single voltage or a voltage list for the power net in the domain that uses this condition.

The voltage must be specified in volt (V).


Example

The following example applies to a design with three power domains (PD1, PD2, and PD3). The design can operate in three modes (M1, M2, and M3).

This example shows that you can create an explicit nominal condition for a domain that is switched off.

The following table shows the voltages for each power domain in each of the modes.


Power Mode     

Power Domain

PD1            

PD2            

PD3            

M1

1.2V

1.2V

1.0V

M2

1.2V

1.0V

0.0V

M3

1.0V

0.0V

0.0V


create_nominal_condition -name high -voltage 1.2
create_nominal_condition -name low -voltage 1.0
create_nominal_condition -name off -voltage 0
create_power_mode -name M1 -domain_conditions {PD1@high PD2@high PD3@low}
create_power_mode -name M2 -domain_conditions {PD1@high PD2@low PD3@off}
create_power_mode -name M3 -domain_conditions {PD1@low PD2@off PD3@off}

Related Information

Nominal Operating Condition

create_power_mode

update_nominal_condition



create_operating_corner

create_operating_corner
-name corner
-voltage float [-ground_voltage float]
[-pmos_bias_voltage float] [-nmos_bias_voltage float]
[-process float]
[-temperature float]
-library_set library_set_list [-power_library_set library_set_list]

Defines an operating corner and associates it with a library set.

Note:  The voltage specified in the corner definition associated with a power domain in an analysis view must be consistent with the voltage specified in the nominal condition associated with this domain in the corresponding power mode of the analysis view.

Options and Arguments

-ground_voltage float


Specifies the ground supply voltage in volt (V).

-library_set library_set_list


References one or more library sets, where each library set is created for a specific PVT. Tools should automatically select the correct timing/power models to be used for the PVT specified by this command.

Each library set must have been previously defined with the define_library_set command.

Note:  These library sets are used for timing analysis and optimization. When the -power_library_set option is not specified, these library sets are also used for power analysis and optimization.

-name corner

Specifies the name of the operating corner you want to create.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.

-nmos_bias_voltage float


Specifies the body bias voltage of the n-type transistors in the domain that uses this corner.

The voltage must be specified in volt (V).

-pmos_bias_voltage float


Specifies the body bias voltage of the p-type transistors in the domain that uses this corner.

The voltage must be specified in volt (V).

-power_library_set library_set_list


Specifies one or more library sets for power analysis and optimization.

The library sets must have been previously defined with the define_library_set command.

Note:  If this option is not specified, the timing libraries specified with the -library_set option will be used for power analysis and optimization.

-process float

Specifies the process value of the corner. This value depends on the used technology process and is provided by the library vendor.

If this option is not specified, the value defaults to the value specified in the first library of the specified library set.

-temperature float

Specifies the temperature of the operating condition in degrees Celsius.

If this option is not specified, the value defaults to the value specified in the first library of the specified library set.

-voltage float   

Specifies the voltage of the operating condition in volt.


Example

The following example uses two library sets to create an operating corner.

define_library_set -name set1 -libraries {a1.lib b1.lib} 
define_library_set -name set2 -libraries {a2.lib b2.lib}
create_operating_corner -name ... -voltage ... -library_set {set1 set2}

Related Information

Operating Corner

define_library_set



create_pad_rule

create_pad_rule -name string
{-of_bond_ports port_list | -instances instance_list}
-mapping {mapping_list}

Defines how to map pin groups or power domains of pad instances to top-level power domains.

Options and Arguments

-instances instance_list


Specifies a list of instances of pad cells.

A selected instance can be defined as a pad cell or as a CPF macro model.

-mapping mapping_list


Specifies the mapping of each pin group of the pad cell definition or a power domain in macro model definition to a top-level domain.

Use the following format to specify a mapping:

{group_id_or_macro_model_domain power_domain}

where

group_id_or_macro_model_domain references

  • A pin group defined for the pad cell with the define_pad_cell command

  • A power domain when the pad cell is defined as CPF macro model

    If a cell is defined both as a pad cell and macro model, the macro model takes precedence .


power_domain is the name of a top-level power domain.

-name string

Specifies the name of the pad rule.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.

-of_bond_ports port_list


Selects pad cell instances that are connected to the specified list of top-level bonding ports.

A selected instance can be defined as a pad cell or as a CPF macro model.


Example

The following command defines cell VDDC_STGIN as a pad cell. It defines three pins in the CVDD pin group. The pins in this group are in the definition of pad rule pad1 mapped to the PD_CORE top domain. The remaining pins of the pad cell belong to the DEFAULT group.

define_pad_cells -cells VDDC_STGIN \
-pad_pins pad -pin_groups { CVDD:{ VDDCORE VDDC2CORE pad} }
...
create_pad_rule -name pad1 -of_bond_ports VDDC \
-mapping { {CVDD PD_CORE} {DEFAULT PD_PAD} }

Related Information

define_pad_cell

Modeling a Pad Cell in the Common Power Format User Guide



create_power_domain

create_power_domain
-name power_domain
[-instances instance_list] [-exclude_instances instance_list]
[-boundary_ports pin_list [-exclude_ports pin_list]] [-default]
[-shutoff_condition expression [-external_controlled_shutoff]]
[-default_isolation_condition expression ]
[-default_restore_edge expr | -default_save_edge expr
|-default_restore_edge expr -default_save_edge expr
|-default_restore_level expr -default_save_level expr ]
[-power_up_states {random|high|low|inverted} ]
[-power_down_states {low|high|random|inverted}]
[-active_state_conditions active_state_condition_list ]
[-base_domains domain_list] [-power_source]

Creates a power domain and specifies the instances and boundary ports and pins that belong to this power domain.

A pure virtual power domain is a power domain that is not specified as the default power domain, and for which no instances or boundary ports are defined.

By default, an instance inherits the power domain setting from its parent hierarchical instance or the design, unless that instance was associated with a specific power domain. In addition, all top-level boundary ports are considered to belong to the default power domain, unless they have been associated with a specific domain.

In CPF, power domains are associated with the design objects based on the order of the logical hierarchy. The order in which you create the power domains is irrelevant.

You must define at least one power domain for a design, and one (and only one) power domain must be specified as the default power domain. However, for macro models, power domains must only be specified if the macro models contain any logic. If the macro model consist of only power and ground nets, floating ports, and set_wire_feedthrough nets, a domain is not required.

The top design, identified by the first set_design command, belongs to the default power domain.

Power domains are scope-specific. If you change the scope to a hierarchical instance (using the set_instance command), a power domain definition can only apply to that hierarchical instance or to the instances (children) of that hierarchical instance. This rule also applies to the default power domain defined in this scope.

Options and Arguments

-active_state_conditions active_state_condition_list


Specifies the Boolean condition for each nominal condition or state at which the power domain is considered on or in standby state.

When a condition changes to true, the power domain starts the transition to the state specified by the nominal condition.

Use the following format to specify an active state condition:

nominal_condition_name@expression

The nominal_condition_name must have been specified with a create_nominal_condition command.

The expression is a regular CPF expression. The expression must be enclosed in braces.

List all nominal conditions that appear with the specified domain in a domain condition for any of the defined power modes.

Note:  None of the conditions can overlap and the domain must be either in one of the active states or be shut off.

Note:  This option is only needed if the power domain can operate on different supply voltages and its operation is controlled by a set of signals.

-base_domains domain_list


Specifies a list of base domains that supply external power and/or ground to the primary domain through some switch network.

When all base power domains are switched off, the power domain will be switched off irrespective of the shutoff conditions.

If one of the base domains is on or in standby state and the shutoff condition is false, the power domain is considered on or in standby state.

-boundary_ports pin_list


Specifies the list of data inputs and outputs that are considered part of this domain.

  • For inputs and outputs of the top-level design, specify ports.

    When you assign a port of a design to a power domain, it is implied that the logic outside the design that is connected to this port is powered by the power supply of this domain.

  • For inputs, outputs, and inouts of macro cell instances, specify a list of the instance pins that are part of the domain.

    When you assign a boundary port of a macro cell to a power domain, it is implied that the logic inside the macro cell connected to this port is powered by the power supply of this domain.

    Note:  Inout ports specified as boundary ports are only used for verification. No isolation cell or level shifter will be inserted on an inout port.

Note:  Hierarchical instance pins will be ignored if specified.

Note:  In case of a macro model, the following applies:

  • A boundary input port driving logic in multiple power domains can be associated with all those power domains.

  • All boundary pins will be specified in the macro model domain definition. As a result, you do not need to specify the boundary pins in the upper-level power domain. It is an error if the upper-level domain definition and the macro model domain definition have conflicting power domain specifications.

  • Power and ground ports of a macro model will be ignored when specified. They must be properly assigned to the power domain using the -primary_power_net and -primary_ground_net options of the update_power_domain command.

-default

Identifies the specified domain as the default power domain.

All instances of the design that were not associated with a specific power domain belong to the default power domain.

-default_isolation_condition expression


Specifies the default isolation condition for isolation rules without isolation condition that apply to net segments with leaf driver in this domain.

The expression is a Boolean function of pins. When the expression changes to true, the isolation logic is enabled.

-default_restore_edge expr (-default_restore_level expr)


Specifies the default condition when the states of the sequential elements need to be restored for all state retention rules created for sequential instances in this power domain.

If no state retention rules were created for this power domain or a list of sequential elements in this domain, this option is ignored.

The expression (expr) can be a Boolean function of pins and ports.

  • If the condition is edge-sensitive, the states are restored when the expression changes from false to true.

  • If the condition is level-sensitive, the states are restored as long as the expression is true.

-default_save_edge expr (-default_save_level expr)


Specifies the default condition when the states of the sequential elements need to be saved for all state retention rules created for sequential instances in this power domain.

If no state retention rules were created for this power domain, this option is ignored.

The expression (expr) can be a Boolean function of pins and ports.

  • If the condition is edge-sensitive, the states are saved when the expression changes from false to true.

  • If the condition is level-sensitive, the states are saved as long as the expression is true.

-exclude_instances instance_list


Specifies to exclude those instances already selected through the -instances option.

If the specified instance is not selected through the -instances option, it will be ignored.

-exclude_ports pin_list


Specifies to exclude those pins already selected through the -boundary_ports option.

If the specified pin is not selected through the -boundary_ports option, it will be ignored.

-external_controlled_shutoff


Specifies that the power domain being defined is an external switchable power domain.

-instances instance_list


Specifies the names of all instances that belong to the specified power domain.

If this option is specified together with the -boundary_ports option, it indicates that for any connection between a specified port and any instance inside the power domain, no special interface logic for power management is required.

Instances referred to in a create_power_domain between a set_design and end_design pair can be hierarchical instances or instances of any library cells, including standard cells and macro cells.

Instances referred to in a create_power_domain between a set_macro_model and end_macro_model pair can be registers in the behavioral model of the macro cell.

-name power_domain


Specifies the name of a power domain.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.

-power_down_states {low|high|random|inverted}


Specifies the value with which to overwrite the default corrupt semantics at the outputs of instances in a power domain after the domain is switched off.

  • high--the output values are set to1

  • low--the output values are set to 0

  • random--the output values are randomly set to 0 or 1

  • inverted--the output values are set to the inversion of the values before the power domain is switched off

Default: low.

When this option is ommitted, simulation tools should use the default power down semantics for simulation.

-power_source


Indicates that the power domain is a power source domain, that is, it models a supply from an on-chip regulator, such as a Low Dropout (LDO) regulator.

This option can only be specified for a power domain within a macro model.

See also Modeling a Voltage Regulator.

-power_up_states {random | high | low | inverted}}


Specifies the state to which the non-state-retention cells in this power domain must be initialized after powering up the power domain.

  • high: all non state-retention registers are initialized to1 after power-up

  • low: all non state-retention registers are initialized to 0 after power-up

  • random: all non state-retention registers are randomly initialized to 0 or 1 after power-up

  • inverted--all non state-retention registers are initialized to the inversion of the values before the power domain is switched off

Default: random.

If the option is ommitted, simulation tools should not initialize the states after powering up.

-shutoff_condition expression


Specifies the condition when a power domain is shut off. The condition is a Boolean function of pins and ports.


Examples

Note:  The primary supply voltage of the base domain can be different from the primary supply voltage of the power source domain.

Related information

Power Domain

For more information on modeling different power domain categories, refer to Power Domain Categories.

Referencing CPF Objects

create_global_connection

create_isolation_rule

create_nominal_condition

create_power_switch_rule

create_state_retention_rule

update_power_domain



create_power_mode

create_power_mode
-name string [-default]
{-domain_conditions domain_condition_list
|-group_modes group_mode_list
|-domain_conditions domain_condition_list -group_modes group_mode_list }
[-condition expression]

Defines a power mode.

If your design has more than one power domain, and you want to use the same CPF file for simulation, implementation, and verification purposes, you must define at least one power mode.

If you define any power mode, you must define one (and only one) power mode as the default mode within a scope.

A power mode that has any combination of power supplies that is not covered by a legal power mode is illegal.

You must ensure that any voltage that is contained in the voltage range of several nominal conditions associated with the same power domain, has the same state value in all these nominal conditions.

Note:  Illegal power modes should be treated as an error by verification tools, but may be used by implementation tools to permit optimization.

Options and Arguments

-condition expression


Specifies the condition when the design is in the specified power mode.

The expression is a Boolean function of pins and ports.

Note:  This option applies only to verification and simulation tools.

-default

Labels the specified mode as the default mode. The default mode is the mode that corresponds to the initial state of the design.

Note:  For a given power mode control group you can only have one power mode as default.

-domain_conditions domain_condition_list


Specifies the nominal condition of each power domain to be considered in the specified power mode.

Use the following format to specify a domain condition:

domain_name@nominal_condition_name

A domain is considered in an off state in the specified mode if

  • It is associated with a nominal condition whose state is off

  • It is not specified in the list of domain conditions

    In this case, the power supply voltage of the switched-off domain is considered to be 0.0V.

Note:  You can associate each power domain with only one nominal condition for a given power mode.


The power domains must have been previously defined with the create_power_domain command.

The condition must have been previously defined with the create_nominal_condition command.

-group_modes group_mode_list


Specifies the mode of each power mode control group to be considered with the defined mode.

Use the following format to specify the mode for a group:

group_name@power_mode_name


The specified group_name refers to the name of a power mode control group, previously defined with the set_power_mode_control_group command or to the name of the scope in case the power control group was automatically defined. The specified power_mode_name must have been defined in a create_power_mode command contained in the definition of the specified power mode control group.


If a power mode control group in a lower scope is not referred to by another power mode or analysis view in an upper scope, the power mode or analysis view at the block level will be ignored at the top level. However, if a power mode control group in a lower scope is referred by some other power mode or analysis view in an upper scope, but not by all, the power mode control group is supposed to be in the default mode in those modes in the upper scope where it is not referenced.

-name string   

Specifies the name of the mode.

This power mode cannot be defined with the assert_illegal_domain_configurations command.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.


Examples

Related Information

Power Mode

Illegal Domain Configurations

Power Mode Control Groups

create_nominal_condition

create_power_domain

set_power_mode_control_group

update_power_mode



create_power_nets

create_power_nets
-nets net_list
[-voltage {float | voltage_range}]
[-external_shutoff_condition expression | -internal]
[-user_attributes string_list]
[-peak_ir_drop_limit float]
[-average_ir_drop_limit float]

Specifies or creates a list of power nets.

Note:  Even if this net exists in the RTL or the netlist, it still must be declared through this command if the net is referenced in other CPF commands.

The power nets are created within the current scope.

Options and Arguments

-average_ir_drop_limit float


Specifies the maximum allowed average IR drop on the specified power nets due to resistive effects in volt (V) for any mode.

Default: 0

-external_shutoff_condition expression


When the specified power nets are powered by an external power source, you can use an expression to specify under which condition the power source can be switched off.

In this case, the net must be connected to an I/O port or pad.

Note:  If neither this option nor the -internal option is specified, the power source is assumed to be the primary source of an unswitched power domain.

-internal

Specifies that the nets must be driven by an on-chip power switch. You must specify this option if this power net is the primary power net of an internal switchable power domain using power (header) switches.

-nets net_list

Declares a list of power nets.


Note:  You can specify a hierarchical net name to infer a power net in another scope.

-peak_ir_drop_limit float


Specifies the maximum allowed peak IR drop on the specified power nets due to resistive effects in volt (V) for any mode.

Default: 0

-user_attributes string_list


Attaches a list of user-defined attributes to the net. Specify a list of strings.

-voltage {float | voltage_range}


Identifies the voltage applied to the specified nets.

The voltage range must be specified as follows:

lower_bound:upper_bound

Specify the lower bound and upper bound, respectively.


Example



create_power_switch_rule

create_power_switch_rule
-name string
-domain power_domain
{-external_power_net net | -external_ground_net net}

Specifies how a single on-chip power switch must connect the external power or ground nets to the primary power or ground nets of the specified power domain.

You can specify one or more commands for a power domain depending on whether you want to control the power domain by a single switch or multiple switches.

By default, the proper power switch cell will be selected from the cells specified through the define_power_switch_cell command. To use a specific cell, use the update_power_switch_rule command.

By default, the inversion of the expression specified for the shutoff condition of the power domain is used as the driver for the enable pin of the power switch cell. For complicated cells with multiple enable pins, or if you want to use a different signal to drive the enable pins, use the update_power_switch_rule command.

Options and Arguments

-domain power_domain


Specifies the name of a power domain.

The power domain must have been previously defined with the create_power_domain command.

-external_ground_net net


Specifies the external ground net to which the source pin of the ground switch must be connected. The drain pin must be connected to the primary ground net associated with the specified power domain.

You can only specify this option when you use a footer cell.

When you create a power switch rule for a macro cell, this option specifies the boundary port for the external supply of this ground switch in the macro cell. Otherwise, you must have declared this net using the create_ground_nets command.


Note:  A net specified as an external ground net in one domain can be specified as an primary ground net of another domain using the -primary_ground_net option of the update_power_domain command.

-external_power_net net


Specifies the external power net to which the source pin of the power switch must be connected. The drain pin must be connected to the primary power net associated with the specified power domain.

You can only specify this option when you use a header cell.

When you create a power switch rule for a macro cell, this option specifies the boundary port for the external supply of this power switch in the macro cell. Otherwise, you must have declared this net using the create_power_nets command.

Note:  A net specified as an external power net in one domain can be specified as an primary power net of another domain using the -primary_power_net option of the update_power_domain command.

-name string   

Specifies the name of the power switch rule.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.


Example

Related Information

Power Switch Cell

create_power_domain

define_power_switch_cell

update_power_domain

update_power_switch_rule



create_state_retention_rule

create_state_retention_rule
-name string
{-domain power_domain | -instances instance_list}
[-exclude instance_list]
[-required]
[ -restore_edge expr | -save_edge expr
    |-restore_edge expr -save_edge expr
    |-restore_level expr -save_level expr]
[-restore_precondition expr] [-save_precondition expr]
[-retention_precondition expr]
[-target_type {flop|latch|both}]
[-secondary_domain domain] [-use_secondary_for_output]

Defines the rule for replacing selected registers or all registers in the specified power domain with state retention registers.

Note:  To implement this rule, only cells defined with the define_state_retention_cell command can be used.

Options and Arguments

-domain power_domain


Specifies to apply the rule to all registers or non-state-retention sequential instances in this domain.

The rule is ignored if the specified power domain is always on or if the domain has no sequential elements.

The power domain must have been previously defined with the create_power_domain command.

-exclude instance_list


Specifies to exclude the specified list of instances from the list of selected instances that must be replaced with state retention elements.

An instance can be a

  • Leaf or hiearchical instance name in a gate-level netlist

  • Register variable or hiearchical instance in RTL

If you specify the name of a hierarchical instance, all registers or non-state-retention sequential elements in this instance and its children will be excluded.

-instances instance_list


Specifies the instances that you want to replace with a state retention register.

An instance can be a

  • Leaf or hiearchical instance name in a gate-level netlist

  • Register variable or hiearchical instance in RTL

If you specify the name of a hierarchical instance, all registers or non-state-retention sequential elements in this instance and its children will be replaced.

Note:  The specified instances can belong to several power domains. If they belong to different power domains, the same conditions will be applied to all of them.

-name string   

Specifies the name of the state retention rule.

Note:  The specified string cannot contain wildcards nor the hierarchy delimiter character.

-required

Indicates that the registers selected by this rule must be implemented using retention flops or latches.

If you omit this option, the selected registers may or may not be implemented as retention logic, depending on the top-level rule specification.

When any of the control conditions -save_level, -restore_level, -save_edge, or -restore_edge is specified, the rule must be implemented whether or not the -required option is specified.

It is an error if a register is selected by an incomplete retention rule (see State Retention Rules) with the -required option specified, and either

  • No other complete retention rule would select this register

  • No default condition is specified for the domain that owns the register: for example, -default_save_edge in the create_power_domain command

-restore_edge expr


Specifies that the states are restored when the expression changes from false to true.

The expression (expr) can be a Boolean function of the pin or port that directly controls the restore operation.

If you specify this option with the create_state_retention_rule and the -default_restore_edge option with the create_power_domain command, the option specified with this command takes precedence.

If this option is omitted but the -save_edge option is specified, the registers restore the saved values when the power is turned on.

If you omitted both the -restore_edge option and the -save_edge option, but you specified the -default_restore_edge option with the create_power_domain command for the corresponding power domain(s), then that condition will be used.

If this option is specified, the rule must be implemented whether or not the -required option is specified.

-restore_level expr


Specifies that the states are restored when the restore expression is true and the power is on.

The expression (expr) can be a Boolean function of the pin or port that directly controls the restore operation.

If you specify this option with the create_state_retention_rule and the -default_restore_level option with the create_power_domain command, the option specified with this command takes precedence.

If you omitted both the -restore_level option and the -save_level option, but you specified the -default_restore_level and -default_save_level options with the create_power_domain command for the corresponding power domain(s), then these conditions will be used.

If this option is specified, the rule must be implemented whether or not the -required option is specified.

-restore_precondition expr


Specifies an additional condition that must be met for the restore operation to be successful. The condition can be related to the clock, set and reset signals, but should not include signals that directly control the save and restore function of the cell.

If this option is not specified, the restore operation is performed when the restore_edge (restore_level) condition evaluates to true.

The operands of the expression (expr) can be pins, ports or nets. The pins or ports that control the save or restore operation should not be included in this expression.


This option is only intended for RTL simulation.

-retention_precondition expr


Specifies an additional condition that must be met (between the time that the power domain of the retention logic is powered down and powered up) for the retention operation to be successful. The condition can be related to the clock, set and reset signals, but should not include signals that directly control the save and restore function of the cell.

The expression (expr) can be a Boolean function of pins, ports and nets.

If the condition is violated, the retention operation will fail and the simulation tools will corrupt the saved values.

-save_edge expr  

Specifies that the states are saved when the expression changes from false to true and the power is on.

The expression (expr) can be a Boolean function of the pin or port that directly controls the save operation.

If you specify this option with the create_state_retention_rule and the -default_save_edge option with the create_power_domain command, the option specified with this command takes precedence.

If this option is omitted but the -restore_edge option is specified, the states are saved when the expression changes from true to false and the power is on.

If you omitted both the -restore_edge option and the -save_edge option, but you specified the -default_save_edge option with the create_power_domain command for the corresponding power domain(s), then that condition will be used.

If this option is specified, the rule must be implemented whether or not the -required option is specified.

-save_level expr 

Specifies that the states are saved when the save expression is true and the power is on.

The expression (expr) can be a Boolean function of the pin or port that directly controls the save operation.

If you specify this option with the create_state_retention_rule and the -default_save_level option with the create_power_domain command, the option specified with this command takes precedence.

If you omitted both the -restore_level option and the -save_level option, but you specified the -default_restore_level and -default_save_level options with the create_power_domain command for the corresponding power domain(s), then these conditions will be used.

If this option is specified, the rule must be implemented whether or not the -required option is specified.

-save_precondition expr


Specifies an additional condition that must be met for the save operation to be successful. The condition can be related to the clock, set and reset signals, but should not include signals that directly control the save and restore function of the cell.

If this option is not specified, the save operation is performed when the save_edge (save_level) condition evaluates to true.

The operands of the expression (expr) can be pins, ports or nets. The pins or ports that control the save or restore operation should not be included in this expression.


This option is only intended for RTL simulation.

-secondary_domain domain


Specifies the name of the power domain that provides the continuous power when the retention logic is in retention mode.

During implementation, the primary power and ground nets of this domain must be connected to the non-switchable power and ground pins of the state retention cells.

-target_type {flop | latch | both}


Specifies the type of sequential elements to convert to state retention registers.

If you specify both, then sequential elements of type flop and latch can be converted to state retention registers.

Default: flop

-use_secondary_for_output


Specifies that the output of the retention logic must retain the previous value when the primary domain is shut off and the secondary domain is on. In this case, the output pin of the instance is associated with the secondary domain of the instance.

By default, the output of the retention logic is corrupted when the primary domain is shut off and the secondary domain is on. In other words, the output of the instance is associated with the primary domain of the instance.

If both the primary and the secondary domain are off, then the output will be corrupted.


Example

In the following example, module IPBlock is instantiated as instance IPInst in design Top. Instance IPInst is part of a switchable power domain X.

IPblock.cpf is the CPF file for IPBlock:

set_design IPBlock
create_state_retention_rule -name sr1 -instances *
end_design

Consider the following 2 CPF files for the design Top:

  1. Case 1: Top.cpf

    set_design Top
    create_power_domain -name X -instance IPInst -shutoff_condition switch_en \
    -default_restore_edge restore_en
    set_instance IPInst
    include IPBlock.cpf

    In this case, all instances of IPInst will be converted to state-retention flops using the restore condition specified for domain X at the top-level design.

  2. Case 2: Top.cpf

    set_design Top
    create_power_domain -name X -instance IPInst -shutoff_condition switch_en 
    set_instance IPInst
    include IPBlock.cpf

    The state retention rule created for IPBlock is ignored because the -restore_edge option is not defined with the create_state_retention_rule command, nor is the -default_restore_edge option defined with the create_power_domain command for domain X.

Related Information

State Retention Cell

How to Model Different Types of State Retention Control

create_power_domain

define_state_retention_cell

update_state_retention_rules



define_library_set

define_library_set
-name library_set
-libraries list
[-user_attributes string_list]

Creates a library set.

Options and Arguments

-libraries list


Specifies a list of library files (.lib files) or library groups.

A library group is a list of library files enclosed in braces.

Use a library group if you want to interpolate voltage values from libraries characterized for different voltages.

Note:  File lists cannot contain wildcards.

-name library_set


Specifies the name of a library set.

Note:  The specified string cannot contain wildcards.

-user_attributes string_list


Attaches a list of user-defined attributes to the library set. Specify a list of strings.


Example

define_library_set -name PD1_set -libraries {pads_1v.lib {ss_1v.lib ss_1v2.lib} }

Related Information

Library Group

Library Set



end_design

end_design
[power_design_name]

Used with a set_design or update_design command, groups a number of CPF commands defining power intent that will be applied to the top module or to instances of one or more logic modules.

Options and Arguments

power_design_name

Specifies the name of the power design used with either the set_design or update_design command.

Note:  The name must match the name specified in the immediately preceding set_design or update_design command.


Example

Top
    Inst_A (mod_A)
        Inst_B (mod_B)

The names in parentheses are the corresponding module names.

set_design mod_B
# the following commands apply to hierarchy under mod_B
...
end_design mod_B
set_design Top
# the following commands apply to Top
...
# change scope to Inst_A
set_instance Inst_A
set_design mod_A
# the following command apply to hierarchy under mod_A
...
set_instance Inst_B -design mod_B
# the following commands still apply to hierarchy under mod_A
...
# change scope to Top
end_design mod_A
# the following commands apply to Top
...
end_design Top

Related Information

CPF Modeling for Hierarchical Design

set_design

set_instance

update_design



end_macro_model

end_macro_model
[macro_mode_name]

Used with a set_macro_model command, groups a number of CPF commands that define power intent that will be applied to instances of one or more macro cells.

Options and Arguments

macro_model_name

Specifies the name of the macro model used with the set_macro_model command.

Note:  The macro model name must match the name specified in the immediately preceding set_macro_model command.


Related Information

Modeling a Macro Cell

set_macro_model



end_power_mode_control_group

end_power_mode_control_group

Used with a set_power_mode_control_group command, groups a set of CPF commands that define the power modes and power mode transitions that apply to the group defined by the preceding set_power_mode_control_group command.

Related Information

Power Mode Control Groups

set_power_mode_control_group



find_design_objects

find_design_objects pattern
[-pattern_type {name | cell | module}]
[-scope hierchical_instance_list]
[-object {inst | port | pin | net}] [-direction {in | out | inout}]
[-leaf_only | -non_leaf_only ]
[-hierarchical] [-exact | -regexp] [-ignore_case]

Searches for and returns design objects that match the specified search criteria in the specified scope. This provides a general way to select design objects for use in CPF commands. All objects are returned with respect to the current scope.

Options and Arguments

-direction {in | out | inout}


Returns only pins or ports with the specified direction.

Applies only if the -object option is specified with pin or port. This option is ignored when used with other object types, and tools can choose whether or not to report a warning.

When you omit this option and you specify the -object option with either pin or port, all matching pins or ports will be returned, irrespective of the direction.

-exact

Returns only objects whose names exactly match the pattern value.

No wildcard expansion is performed.

-hierarchical

Specifies to perform a recursive search in the specified scopes and all children of those scopes.

By default, the search only applies to the specified scopes, not including its children.

-ignore_case

Specifies to perform a case insensitive search for both the pattern and the string specified by the -scope option.

By default, the search pattern is case sensitive.

-leaf_only | -non_leaf_only


Specifies that only instances without children (-leaf_only), or with children (-non_leaf_only) should be returned.


Applies only if the -object option is specified with inst or if the -object option is omitted. Either of these options is ignored when used with an object type other than inst, and tools can choose whether or not to report a warning.

By default, all matched inst objects are returned.

-object {inst | port | pin | net}


Specifies the type of design objects to be returned.


  • inst--Returns instances.

  • port--Returns ports of the modules in the current scope.

    When you specify this type, the -scope and -hierarchical options are ignored. Some tools might report a warning in this case.

  • pin--Returns pins.

  • net--Returns nets.


Default: inst

pattern

Specifies the search string. By default, it is a Tcl global expression.

-pattern_type {name | cell | module}


Specifies the type of name to be matched by the pattern string.


  • name--Returns objects whose names match the pattern.

    This pattern type is allowed for any object type.


  • cell--Returns objects that are instances of library cells whose names match the pattern.

    This pattern type is only allowed if -object is specified with the inst value or if the -object option is omitted.


  • module--Returns objects that are instances of modules whose names match the pattern.

    This pattern type is only allowed if -object is specified with the inst value or if the -object option is omitted.


Default: name

-regexp

Indicates that the specified pattern is a regular expression.

-scope hierarchical_instance_list


Specifies the scope or scopes from which the search must start. You can only reference the current scope and its children.

You can specify a list of hierarchical instances, but you cannot use wildcard characters or regular expressions.

When omitted, the search begins in the current scope.

It is an error if the specified hierarchical instances cannot be found within the current scope.


Examples

Assume the current scope is top with the following hierarchy:

top
    a
        a (inst of cell AND)
find_design_objects a 

Returns a

find_design_objects a -hierarchical 

Returns a and a.a

find_design_objects a -hierarchical -leaf_only 

Returns a.a

find_design_objects a -hierarchical -non_leaf_only 

Returns a

find_design_objects a -object inst -hierarchical R

Returns a and a.a

find_design_objects AND -hierarchical -object inst -pattern_type cell 

Returns a.a

find_design_objects AND -hierarchical -object inst -pattern_type module 

Returns {}

Related Information

Instance

Module

Net

Pin

Port

scope



get_parameter

get_parameter parameter_name

Returns the value of a predefined parameter in the current design.

An error message will be given if the parameter is not defined for the current design.

Options and Arguments

parameter_name

Specifies a parameter name.

The parameter must have been defined with the -parameters option of the set_design command for the current design.


Example

IP block fooMod has two parameter values defined, parameter x with default value 0 and parameter y with default value on. When the module is instantiated as fooInst, the corresponding CPF model is also loaded but the parameter value of x is changed to 1 and the parameter value of y is changed to off.

set_design fooMod -ports ... -parameters { {x 0} {y on} }
....
if { [get_parameter y] == "off" } {
    if { [get_parameter x] == 0} {
        create_isolation_rule ... -output_type 0
    } else {
        create_isolation_rule ... -output_type 1
    }
}
end_design
set_design top
...
set_instance fooInst -design fooMod -domain_mapping ... \
-port_mapping ... -parameter_mapping { { x 1} { y off}}
...
end_design

Related Information

set_design

set_instance



identify_always_on_driver

identify_always_on_driver
-pins pin_list [-no_propagation]

Specifies a list of pins in the design that must be driven by always-on buffer or inverter instances.

By default, all the inverter or buffer drivers of the transitive fanin cone of the specified pins are considered as always-on driver as well.

Options and Arguments

-no_propagation


Considers only the leaf-level driver of the specified pin must be the output pin of an always-on buffer or inverter instance.

-pins pin_list


Specifies the names of top-level ports or instance pins.

In case of a pin, specify the full hierarchical path of the pin.

Note:  A bidirectional pin can also be considered as a driving pin.




identify_power_logic

identify_power_logic
-type isolation
{-instances instance_list | -module name}

Identifies any generic logic used for isolation that is instantiated in RTL or the gate-level netlist.

You can identify the isolation logic by listing all instances, or if all instances are instantiations of the same module, you can specify the module name.

Note:  Any instances of special low power cells (such as level shifter cells, isolation cells, and so on) instantiated in RTL or the gate-level netlist that are defined through any of the library cell-related CPF commands are automatically identified.

Options and Arguments

-instances instance_list


Specifies the names of all instances of the power logic selected through the -type option.

-module name

Specifies the name of the RTL module whose instances represent the isolation logic.

-type

Specifies the type of power logic to be identified.

Currently, the only valid option is isolation.


Example

Assume the following Verilog module is used in the design for the purpose of isolation:

module iso (in, out, en); 
input [7:0] in;
output [7:0] out;
    assign out = en ? 1 : in;
endmodule

To identify the isolation logic in the design, use the following command in the CPF file:

identify_power_logic -type isolation -module iso


identify_secondary_domain

identify_secondary_domain
-secondary_domain domain
{-instances instance_list | -cells cell_list }
[ -domain power_domain [-from power_domain | -to power_domain]]

Identifies the secondary power domain for the selected instances with multiple power and ground pins. The primary power and ground nets of this secondary power domain are connected to the non-switchable power and ground pins of the identified instances.

By default, the secondary power domain for any instance that has both switchable and non-switchable power and ground pins is the secondary power domain defined for the power domain that the instance belongs to.

If several occurrences of this command apply to the same design object, the -instances option has a higher priority than the -cells option, which in turn has a higher priority than the -domain option.

Note:  The targeted instances are instances that already existed in the netlist, that is, before the tools insert new low power logic based on the CPF rules.

Options and Arguments

-cells cell_list


Identifies the secondary power domain for the instances of the specified library cells.

The cells must be defined with both switchable power and ground pins and non-switchable power and ground pins. Examples of these types of cells are always on cells, power switch cells, retention cells, and so on.

-domain power_domain


Limits the selected instances to the instances that are part of the specified power domain.

The power domain must have been previously defined with the create_power_domain command.

-from power_domain


Limits the selected instances to the instances that are

  1. Part of the domain specified with the -domain option

  2. Driven by instances in the domain specified by this option.

The power domain must have been previously defined with the create_power_domain command.

-instances instance_list


Specifies the list of the selected instances. If the selected instance is a hierarchical instance, all leaf instances and registers in its hierarchy but not of its children are selected.

-secondary_domain domain


Specifies the name of the secondary power domain. The power domain must have been previously defined.

Note:  The specified string cannot contain wildcards.

-to power_domain


Limits the selected instances to the instances that are

  1. Part of the domain specified with the -domain option

  2. Driving instances in the domain specified by this option.

The power domain must have been previously defined with the create_power_domain command.


Related Information

Secondary Power Domain



include

include file

Includes a CPF file or a Tcl file within a CPF file.

The path name to the file can contain a period (.) to refer to current directory of the CPF file being read and ".." to refer to the parent directory of the current directory of the CPF file being read.

Note:  This command differs from the source command in Tcl syntax where a period (.) always refers to the working directory of the tool reading the top level CPF file and ".." refers to the parent of the working directory of the tool reading the top level CPF file.

Options and Arguments

file

Specifies the path name of the file to be included.


Examples

Consider the following file structure:

home
   	 | models
   	    	 | impl   	      	 --> impl.cpf 
        | sim      -->     sim.cpf
   	 | tmp   	   --> top.cpf
   	    	 | IP_block     	 --> IP.cpf 
        | tech      -->     tech.cpf


set_analog_ports

set_analog_ports port_list
[-user_attributes string_list]

Identifies a list of top-level analog ports in a power design or a list of analog ports in a macro model.

The specified analog ports must be connected to other ports or pins that were declared as analog ports by the same command or as analog pins in a pad cell.

Analog ports can be associated with a power domain of a macro.

Options and Arguments

port_list


Specifies a list of analog signal ports.

Note:  Do not include ports that are driving or are driven by analog circuitry if they can be connected to a digital port.

Note:  Do not declare power and ground pins of a macro model as analog ports, because they are treated as analog ports by default.

-user_attributes string_list


Associates a string or list of strings with an analog port.

These strings can be used to check if the ports are connected to ports with the same strings.


Related Information

define_pad_cell

set_macro_model

end_macro_model



set_array_naming_style

set_array_naming_style
[string]

Specifies the format used to name the design objects in the netlist starting from multi-bit arrays in the RTL description. For sequential elements, the bit information is appended to the instance name which is determined by the set_register_naming_style command.

The command returns the new setting or the current setting in case the command was specified without an argument.

Options and Arguments

string

Specifies the format of the bit information. The string must have the following format:

[character]%d[character]

You can use angle brackets, square brackets, or underscores.

Default: \[%d\]


Example

set_array_naming_style <%d>

Related Information

Specifying the Representation of the Bits

Information Inheritance



set_cpf_version

set_cpf_version
[value]

Specifies the version of the format.

The command returns the new setting or the current setting in case the command was specified without an argument.

If specified, this command must be the first CPF command in a CPF file.

You cannot have multiple occurrences of this command with different values set in the same scope.

Multiple occurrences are allowed in different scopes, but the CPF version of a lower scope cannot be newer than the CPF version of the parent scope.

if your design has different versions of CPF files, the semantics of the newest version takes precedence.

Options and Arguments

value

Specifies the version. Use a string.

Currently allowed values are 1.0, 1.0e, 1.1, and 2.0.

Default: 1.1


Example

set_cpf_version 1.1



set_design

set_design
power_design [-modules module_list]
[-ports port_list] [-input_ports port_list]
[-output_ports port_list] [-inout_ports port_list]
[-honor_boundary_port_domain]
[-parameters parameter_value_list]
[-testbench] ...

Begins the definition of a power design, identified by a name that is unique among power designs within the same scope.

The power intent represented by the power design is defined by the CPF commands between this command and a matching end_design command.

A power design can be applied to a top module or to instances of one or more logic modules.

Options and Arguments

-honor_boundary_port_domain


Specifies to treat each boundary port domain assignment as a design constraint at the top level after the block is instantiated at the top. At the top level, each corresponding hierarchical pin becomes a virtual leaf level driver or leaf level load and its power domain corresponds to the power domain definition for the boundary port. In this case, the netlist traversal stops at this pin.

If this option is omitted, the tools should traverse through the hierarchical pin to find the real leaf level driver or leaf level load of the net connected to the hierarchical pin.

Note:  This option only applies to the primary inputs and primary outputs of the current design.

-inout_ports port_list


Specifies a list of virtual inout ports in a module to which this power design applies.

-input_ports port_list


Specifies a list of virtual input ports in a module to which this power design applies.

-modules module_list


Specifies the names of the modules to which the power design applies. The power design can only be applied to instances of a logic module whose name exactly matches one of the specified names.

When omitted, the power design can be applied to instances of any logic module.

The module names cannot contain wildcards.

-output_ports port_list


Specifies a list of virtual output ports in a module to which this power design applies.

-parameters parameter_value_list


Specifies a list of parameters with their default values.

Use the following format for each parameter:

{parameter_name default_value}

The default value can be a number of a string.

-ports port_list

Specifies a list of virtual ports in the specified module.


Virtual ports do not exist in the definition of this module but will be needed for the control signals of the low power logic such as isolation logic, state-retention logic, and so on.


Note:  For backward compatibility, -ports is the same as -input_ports. -ports will be obsolete in a future release.

power_design

Specifies a name for the power intent described by this command.

The name must be unique among power designs created in the same scope.

-testbench

Specifies that the power design applies to a testbench module.

Use this option to create a testbench-level CPF to drive power domains for designs under test, without the need to create power domains or modes in the testbench level CPF.

Note:  You can only specify a top-level design with this option. That is, the model cannot be a hierarchical CPF model, loaded after a set_instance command.


Note:  When specified, the ports of the design under test (DUT) module must be treated as the leaf level drivers or loads when considering the isolation or level shifter rules in the CPF for the DUT module.


Examples

Related Information

Power Design

Virtual Port in

end_design

find_design_objects

get_parameter

set_instance

update_design



set_diode_ports

set_diode_ports
{-positive pos_port_list -negative neg_port_list
|-positive pos_port_list | -negative neg_port_list}

Specifies a list of ports of a macro cell that connect to the positive and negative pins of a diode inside a macro cell.

When you specify both the -positive and -negative options, the specified macro model ports are connected through diodes. You can specify a single positive port and multiple negative ports, or multiple positive ports and one negative port. You cannot specify multiple positive and multiple negative ports when both options are used.

When you specify only the -positive option, each port specified is connected to the anode of a power clamp diode and the cathode of the diode is connected to the primary power of the associated domain of the port.

When you specify only the -negative option, each port specified is connected to the cathode of a ground clamp diode and the anode of the diode is connected to the primary ground of the associated domain of the port.

A port can appear in multiple set_diode_ports commands. However, it is an error if the same port appears in both the -negative and -positive options of the same command.

Note:  A port can be declared as a member of a power domain and as a diode port. If a port is only declared as a diode port and not associated with a power domain, it is considered to be a floating port.

Options and Arguments

-negative port_list 


Specifies the names of the ports that connect to the negative inputs or cathode of a diode.

-positive port_list 


Specifies the names of the ports that connect to the positive inputs or anode of a diode.


Examples

set_macro_cell foo
...
set_diode_ports -positive a -negative {z1 z2}
...
end_macro_cell

Related Information

set_macro_model



set_equivalent_control_pins

set_equivalent_control_pins
-master pin
-pins pin_expression_list
{ -domain domain| -rules rule_list }

Specifies a list of pins that are equivalent with a master control pin. The master control pin is part of the definition of a shutoff condition, isolation condition or state retention condition. The referred condition can contain only the master control pin in its expression.

The following requirements apply to the pins:

A common usage of equivalent control pins is to generate time-staged control signals (control signals with different arrival times) to control the rush current when simultaneously turning on multiple devices at once.

Options and Arguments

-domain power_domain


Specifies the name of the domain for which the master control pin is part of either

  • the shutoff condition

  • the active state condition

  • the default isolation condition

  • the default save/restore condition

  • the enable condition for a power switch rule (for verification only)

The power domains must have been previously defined with the create_power_domain command.

-master pin

Specifies the name of the master control pin.

You can specify a port or an instance pin.

-pins pin_expression_list


Specifies the pins that are equivalent to the master control pin and that drive staged control signals with respect to the control signal driven by the master control pin.


You can specify ports and instance pins and the negation operator to indicate the inverted polarity of the pin or port.


The list can contain wildcards, but the wildcard cannot be used with the negation (!) operator.

-rules rule_list

Specifies the rules for which you specify the equivalent control pins. You can only list isolation rules and state retention rules that are considered complete.

The list can contain wildcards.


Examples

Related Information

Chapter 6, "Precedence and Semantics of the Rules"

create_isolation_rule

create_power_domain

create_state_retention_rule



set_floating_ports

set_floating_ports port_list

Specifies a list of ports of a macro cell that are not connected to any logic inside the macro cell.

These ports are excluded from any power domain defined for the macro cell.

Options and Arguments

port_list

Specifies the names of the ports that can be floating.

The ports must be valid ports of the macro cell.

The list can contain wildcards.


Related Information

end_macro_model

set_input_voltage_tolerance

set_macro_model

set_wire_feedthrough_ports



set_hierarchy_separator

set_hierarchy_separator
[character]

Specifies the hierarchy delimiter character used in the CPF file.

The command returns the new setting or the current setting in case the command was specified without an argument.

Options and Arguments

character

Specifies the hierarchy delimiter character.

Default:.


Related Information

Hierarchy Delimiter

Information Inheritance



set_input_voltage_tolerance

set_input_voltage_tolerance
{ -power lower[:upper] | -ground [lower:]upper
| -power lower[:upper] -ground [lower:]upper }
[-domain power_domain] [-pins pin_list]

Specifies the input supply voltage tolerance constraint at the selected input pins. If the driver and receiver voltage difference is more than the tolerance voltage, a power (ground) level shifter is required.

Note:  If the command is used In the hierarchical flow without -pins option, the specified voltage tolerance only applies to the selected pins of the scope in which the command is used.

Options and Arguments

-domain power_domain


Indicates that the specified voltage tolerance applies to the input pins of the specified power domain.

The power domains must have been previously defined with the create_power_domain command.

Note:  If this option is specified with the -pins option, the pins that are not input pins of this domain will be ignored.

-ground [lower:]upper


Specifies a lower and upper bound for the ground voltage tolerance of the selected pins.

The following relation applies:

where

voltagereceiver is the ground voltage of the receiving power domain

voltagedriver is the ground voltage of the driving power domain


If the relationship is violated a ground up-shifter or ground down-shifter is required.

  • lower must be smaller than or equal to zero.

    Default: negative infinity

  • upper must be larger than or equal to zero.

    Default: 0


Note:  The default values apply to all input pins of the current design.

-pins pin_list

Specifies the input pins or top-level output ports to which the voltage tolerance applies.

Note:  If you specify neither this option, nor the -domain option, the voltage tolerance applies to all input pins in the current scope.

-power lower[:upper]


Specifies a lower and upper bound for the power voltage tolerance of the selected pins.

The following relation applies:

where

voltagereceiver is the power voltage of the receiving power domain

voltagedriver is the power voltage of the driving power domain

If the relationship is violated a power up-shifter or power down-shifter is required.

  • lower must be smaller than or equal to zero.

    Default: 0

  • upper must be larger than or equal to zero.

    Default: positive infinity


Note:  The default values apply to all input pins of the current scope.


Examples

Related Information

define_level_shifter_cell

end_macro_model

set_macro_model



set_instance

set_instance
[ instance
  [-design power_design | -model macro_model]
  [-port_mapping port_mapping_list]
  [-domain_mapping domain_mapping_list]
  [-parameter_mapping parameter_mapping_list] ]

Changes the scope to the specified instance or links a previously defined CPF power design or macro model to the specified instance.

The command returns the current scope in case the command was specified without an argument. If the current scope is the top design, the hierarchy separator is returned.

If the command is specified with an instance name only, it will change the design scope for the purpose of searching design objects referenced in the commands after it.

If the command is specified with an instance name, and without the -design or -model options, but with some other options, it must be followed by a set_design command or a set_macro_model command. Some commands are allowed between set_instance and set_design or set_macro_model. These commands are shown in the Command Dependency table before the set_design command.

The scope is used for naming resolution and affects

All CPF objects referred to in the library cell-related CPF commands are scope insensitive.

Any rule created in the block-level CPF file that references a virtual port that is declared using the -inout_ports, -input_ports, -output_ports or -ports option of the set_design command, but whose mapping is not specified through the -port_mapping option, will be ignored.

Options and Arguments

-design power_design


Specifies to link a previously defined power design to the specified instance. The scope is not changed when this option is used.

A bound power design is associated with either

  • an instance through the set_instance command

  • the top level module of a design

To bind a power design to the top level module of a design,

  • you can specify the power design name at the command level when reading or elaborating the CPF

  • a tool can select the only power design that is not bound to any instance.

It is an error to bind multiple power designs to the same instance.

-domain_mapping domain_mapping_list


Specifies the mapping of the domains in the current scope to the domains for the specified design or macro model.

Use the following format to specify a domain mapping:

{domain_in_child_scope domain_in_parent_level_scope}

The power domains must have been previously defined with the create_power_domain command.

instance

Specifies an instance. The instance must be a valid instance in the current scope.

If the name is not followed by either the -design or -model option, the set_instance command changes the scope to the specified instance.

-model macro_model


Specifies to use a previously loaded CPF description for the specified macro model.

This description must precede the current set_instance command and is contained between a set_macro_model macro_model command and the next end_macro_model command.

In this case, the scope does not change.

-parameter_mapping parameter_mapping_list


Specifies the mapping of the parameters specified in the set_design command to the local values.

Note:  It is an error if the parameter is not specified in the set_design command.

Use the following format to specify a parameter mapping:

{parameter_name local_value}

-port_mapping port_mapping_list


Defines the connection between a pin of the specified instance and a pin or port visible in the current scope.

The instance pin must be a pin corresponding to the virtual port defined in the set_design command or a real pin from the cell or module definition.

Note:  It is an error if the specified connection conflicts with any existing netlist connection.

Use the following format to specify a port mapping:

{block_instance_pin current_scope_driving_pin}

{macro_port parent_level_driver}


Examples

Related Information

Design Objects

Power Design

CPF Modeling for Hierarchical Design

Command Dependency

set_design



set_macro_model

set_macro_model macro_model_name [-cells cell_list]

Indicates the start of the CPF content of a custom IP.

A simulation tool that has a behavioral simulation model can take the full description of the macro model and perform power-aware simulation. Tools for static verification and implementation can only use the interface definitions because to them, the macro model is a blackbox.

Only following CPF commands are allowed in a macro model definition:

create_isolation_rule
create_mode_transition
create_nominal_condition
create_power_domain
create_power_mode
create_power_switch_rule
create_state_retention_rule
set_analog_ports
set_diode_ports
set_floating_ports
set_input_voltage_tolerance
set_pad_ports
set_power_source_reference_pin
set_sim_control
set_wire_feedthrough_ports
update_power_domain

Commands issued from inside a macro model are not intended to drive the implementation of the macro, but rather they are intended to describe the behavior of the macro model.

Note:  A macro model specification should explicitly associate each non power and ground port to a power domain, or declare it as a floating port, a feedthrough port, or a diode port.

Within a macro model definition, you cannot have another CPF model.

Options and Arguments

-cells cell_list


Lists the names of the cells to which the macro model applies. The model can only be applied to instances of a cell whose name exactly matches one of the specified names.


When this option is omitted, the macro model can be applied to instances of any library cell.

This option allows you to create one macro model representing a family of macro cells. This model can be reused for all instances of these cells. See the example using the -cells option, below.

The cell names cannot contain wildcards.

macro_model_name

Specifies the name of the macro for which the CPF description follows.


Examples

set_macro_model CellA 
create_power_domain -name PD_VDD1 -boundary_ports {iso[0] psw[0]} -default
create_power_domain -name PD_VDD2 -boundary_ports {iso[1] psw[1] srpg}
create_power_domain -name PD_VDD1_SW -boundary_ports {M X} \
-shutoff_condition { !psw[0] }
create_power_domain -name PD_VDD2_SW -boundary_ports {Y N} \
-shutoff_condition { !psw[1] }
create_power_switch_rule -name switch1 -domain PD_VDD1_SW \
-external_power_net VDD1
create_power_switch_rule -name switch2 -domain PD_VDD2_SW \
-external_power_net VDD2
update_power_domain -name PD_VDD1 -primary_power_net VDD1 \
-primary_ground_net VSS1
update_power_domain -name PD_VDD2 -primary_power_net VDD2 \
-primary_ground_net VSS1
end_macro_model

Related Information

Modeling a Macro Cell

end_macro_model

set_floating_ports

set_input_voltage_tolerance

set_instance

set_wire_feedthrough_ports



set_pad_ports

set_pad_ports pin_list

Specifies a list of ports of a macro cell that connect directly to a bonding port at the chip level.

Use this command if the macro cell models a pad cell or the input of the macro cell has internal pad logic.

Options and Arguments

pin_list 

Specifies the names of the ports that connect to bonding ports.


Related Information

create_analysis_view

set_macro_model



set_power_mode_control_group

set_power_mode_control_group -name group
{ -domains domain_list
| -groups group_list
| -domains domain_list -groups group_list}

Groups a list of power domains and other power mode control groups.

This command together with the end_power_mode_control_group command groups a set of CPF commands that define the power modes and power mode transitions that apply to this group only.

Only following CPF commands are allowed in a power mode control group definition:

create_analysis_view
create_mode_transition
create_power_mode
update_power_mode

Note:  By default, all power modes and power mode transitions within a lower scope belong to an automatic defined power mode control group named after the scope.

Options and Arguments

-domains domain_list


Specifies the list of power domains controlled by the power control manager associated with the specified group.

The power domains must have been previously defined with the create_power_domain command.

-groups group_list


Specifies the list of power mode control groups whose power control manager is controlled by the power control manager associated with the specified group.

The specified group must have been previously defined with another set_power_mode_control_group command.

-name group      

Specifies the name of the power mode control group.


Example

The following example defines a group CORE with three power domains.

set_power_mode_control_group  -name CORE  -domains {CPU FPU CACHE} 
create_power_mode -name M1 -domain_conditions { CPU@low CACHE@on}
create_power_mode -name M2 -domain_conditions { CPU@high CACHE@on} create_power_mode -name M3 -default -domain_conditions { CPU@high CACHE@on FPU@on}
create_mode_transition -name CT1 -from M1 -to M2 -start_condition ...
create_mode_transition -name CT2 -from M2 -to M3 -start_condition ...
create_mode_transition -name CT3 -from M3 -to M2 -start_condition ...
create_mode_transition -name CT4 -from M3 -to M1 -start_condition ...
end_power_mode_control_group

Related Information

Power Mode Control Groups

end_power_mode_control_group



set_power_source_reference_pin

set_power_source_reference_pin pin
-domain power_domain -voltage_range min:max

Specifies an input pin of the macro cell as the voltage reference pin for a power source domain.

Options and Arguments

-domain power_domain


Specifies the name of the power source domain.

The domain must have been previously defined with the -power_source option of the create_power_domain command.

pin

Specifies the name of the voltage reference pin.

-voltage_range min:max


Specifies the required voltage range for the voltage reference pin. The range includes the minimum and maximum values.


Example

The following example declares pin AVDD as the voltage reference pin for power source domain PDVOUT.

set_macro_model regulator
create_power_domain -name PDVOUT -default -base_domains {PDVIN} -power_source
...
create_nominal_condition -name LDO_range -voltage 1.1 -pmos_bias_voltage {1.1 1.3}
...
create_power_mode -name PM -default -domain_conditions \
    { PDREF@REF PDVIN@HVDD PDVOUT@LDO_range }
..
set_power_source_reference_pin AVDD -domain PDVOUT voltage_range 1.0:1.1
...
end_macro_model regulator

Note:  For proper working of the voltage regulator, the voltage values of pin AVDD must be between 1.0 and 1.1 Volt.

Related Information

Power Source Domain

Modeling a Voltage Regulator in the Common Power Format User Guide

set_macro_model



set_power_target

set_power_target
{ -leakage float | -dynamic float
| -leakage float -dynamic float

Specifies the targets for the average leakage and dynamic power of the current design across all the power modes. All power targets must be specified in the units specified by the set_power_unit command.

Options and Arguments

-dynamic float

Specifies the target for the average dynamic power.

-leakage float

Specifies the target for the average leakage power.


Specifies the view for which the target is set.

The analysis view must have been previously defined with the create_analysis_view command.


Related Information

set_power_unit



set_power_unit

set_power_unit
[pW|nW|uW|mW|W]

Specifies the unit for all power values in the CPF file.

The command returns the new setting or the current setting in case the command was specified without an argument.

Options and Arguments

[pW|nW|uW|mW|W]

Specifies the power unit. You can specify any of these five values.

Default: mW


Related Information

Information Inheritance

set_power_target



set_register_naming_style

set_register_naming_style
[string%s]

Specifies the format used to name flip-flops and latches in the netlist starting from the register names in the RTL description.

The command returns the new setting or the current setting in case the command was specified without an argument.

Options and Arguments

string

Specifies the suffix to be appended to the base name of a register. The %s represents the bit information.

Default: _reg%s


Related Information

Specifying the Representation of the Base Name

Information Inheritance



set_sim_control

set_sim_control [-targets target_list [-exclude target_list]]
{-action power_up_replay [-controlling_domain domain ]
|-action disable_corruption -type { real | wreal | integer | reg | module |    instance}
|-action {disable_isolation | disable_retention} }
[-domains domain_list | -instances instance_list]
[-modules module_list | -lib_cells lib_cell_list]

Specifies the action to be taken on the selected targets during simulation when the power is switched off or restored.

You can specify this command in a block-level CPF. It is equivalent to a command at the top level with the -instances or -domain options to restrict the target selection.

You must specify a list of targets for a specific action with a given type.

You can combine either the -modules or -lib_cells option with the -instances and -domains options to filter the list of targets selected with the -target and -type options.

You can use the -exclude option to further filter the selected targets.

To control the action of initial blocks when the power is restored from shutoff, use the -action power_up_replay to specify such initial statements.

Note:  Initial blocks are non-synthesizable code used in simulation to create proper startup conditions at time zero of the simulation.

Options and Arguments

-action {power_up_replay | disable_corruption | disable_isolation | disable_retention}


Specifies the action to be taken during simulation. This option can have the following values:

  • disable_corruption--specifies that the simulator must ignore the default simulation corruption semantics applicable to the selected targets.

  • disable_isolation--specifies that the simulator must ignore the virtual isolation logic inferred from the selected rules during simulation.

  • disable_retention--specifies that the simulator must ignore the virtual state retention logic inferred from the selected rules during simulation.

  • power_up_replay--specifies that the selected initial blocks will be replayed immediately after power is restored to the domains that contain the initial blocks.

    By default, initial blocks are ignored when the domain in which they are located is powered up.

Note:  For a design with mixed RTL and netlist, you can use the disable_isolation and disable_retention options to disable the CPF simulation semantics applied to the netlist in which the isolation and retention logic is already inserted, but still enable the CPF simulation semantics on other RTL blocks.

-controlling_domain domain


Specifies the power domain that controls the action on the selected initial blocks.

For example, for initial block replay, the replay occurs when the specified domain changes from power-down to power-up state.


Default: The default controlling domain is the power domain of the logic hierarchy containing the selected initial block.


Note:  This option can only be used with the power_up_replay action.

-domains domain_list


Specifies the domains from which the targets must be selected.


Domain names can contain wildcards.


The power domains must have been previously defined with the create_power_domain command.

-exclude target_list


Excludes the specified list of targets from the list of already selected targets.


The targets can contain wildcards.


Note:  Any target specified with this option will be ignored if is not in the list of the selected targets.

-instances instance_list


Specifies the list of hierarchical instances from which the targets must be selected.


Instance names can contain wildcards.

-lib_cells lib_cell_list


Specifies a list of cells from which the targets must be selected.


The selected scope is either the current CPF scope or the scope specified with the -instances or the -domains options.


Cell names can contain wildcards.


Note:  The specified names cannot be specified with the -modules option.

-modules module_list


Specifies a list of modules.Targets are selected from all instances of these modules within the selected scope.


The selected scope is either the current CPF scope or the scope specified with the -instances or the -domains options.


Module names can contain wildcards.

-targets target_list


Specifies a list of object names in the selected scope.

  • If the action is either disable_isolation, or disable_retention, the targets are rules.

  • If the action is power_up_replay, the targets are initial blocks.

  • If you omit this option, all targets of the type identified by the action are selected.

Specify the full hierarchical path for the object name. For example, a.b.c.thisBlock. If the type is an initial block, it is referenced by the label of the statement inside.


Note:  You can use wildcards. If you use wildcards and you specify -action power_up_replay, all initial blocks (even the ones without labels) in the specified scope are selected.

-type {real | integer | reg | module | instance}


Specifies the type of the target. The type depends on the specified action.

  • real-- selects only real variables from RTL

  • wreal-- selects only real variables from RTL

  • integer--selects only integer variables from RTL

  • reg--selects only 'reg' type variables from RTL

    When you specify either the integer or reg type, you can only use the command in macro models. Otherwise it is an error. It is also an error if the selected variable is also covered by a state retention rule.


  • module--selects instances of the specified modules

  • instance--selects the specified instances

    When you specify the module (instance) type, the -modules (-instances) option is not allowed.


Using the disable_corruption action with type module and instance may cause mismatch between simulation verification and implementation.

When used with the disable_corruption action, these two options can only be used for simulation models that already include the power-aware functionality to disable default corruption semantics. This is useful in cases where the design has a mixture of power-aware and non power-aware simulation models.


Examples



set_switching_activity

set_switching_activity
{-all | -pins pin_list | -instances instance_list [-hierarchical]}
{ -probability float -toggle_rate float
| [-clock_pins pin_list] -toggle_percentage float }
[-mode mode]

Specifies activity values (toggle rate and probability) for the specified pins.

The toggle rate is the average number of toggle counts per time unit of a net during a given simulation time.

The probability is the probability of a net being high during a given simulation time.

Options and Arguments

-all

Indicates to apply the specified activity values to all pins.

-clock_pins pin_list


Indicates to apply the specified activity values only to data signals associated with the specified clock pins.

-hierarchical

Indicates to traverse the hierarchy of all specified hierarchical instances to apply the specified activity values to the outputs of all leaf instances in the hierarchy.

-instances instance_list


Indicates to apply the specified activity values to all outputs if the specified instances are non-hierarchical instances.

For hierarchical instances, it indicates to apply the specified activity values to the outputs of the leaf instances in the specified hierarchical instances (without traversing the hierarchy).

-mode mode      

Specifies the mode to which these values apply.

If this option is not specified, the specified value applies to all modes for which no specific values were specified.

-pins pin_list 

Indicates to apply the specified activity values to the specified pins.

-probability float


Specifies the probability value.

The probability is a floating value between 0 and 1.

-toggle_percentage float


Specifies to compute the toggle rate as the multiplication of the specified value and the toggle rate of the related clock. If multiple clocks are related to the specified data pin, the clock with the worst frequency is used. If no clock is related to the data pin, the worst clock of the design is used.

The value must be a float between 0 and 100.

If you specify clock pins through the -clock_pins option, the computed toggle rate is only applied to the data pins related to those clock pins.

If you did not specify any clock pins, a computed toggle rate is applied to all data pins and the value for each data pin will be based on its related clock pin.

-toggle_rate float


Specifies the number of toggles per time unit.

A value of 0.02 using a time unit of ns, indicates that the pin toggles 0.02 times per nanosecond or at a frequency of 10MHz.




set_time_unit

set_time_unit
[ns|us|ms]

Specifies the unit for all time values in the CPF file.

The command returns the new setting or the current setting in case the command was specified without an argument.

Options and Arguments

[ns|us|ms]

Specifies the time unit. You can specify any of these three values.

Default: ns


Related Information

Information Inheritance



set_wire_feedthrough_ports

set_wire_feedthrough_ports port_list

Specifies a list of input ports and output ports of a macro cell that are internally connected to each other by a physical wire only.

These ports are excluded from any power domain defined for the macro cell.

Options and Arguments

port_list

Specifies the ports in the macro that are connected by a wire only.

The list can contain wildcards.


Related Information

end_macro_model

set_floating_ports

set_input_voltage_tolerance

set_macro_model



update_design

update_design
-name power_design

Appends the power intent specified between this command and a matching end_design to the previously declared power design identified by the power_design_name.

An example use for update_design is an existing CPF file that is clean and validated, but later on requires additional power intent for new logic added as a result of DFT.

The following commands are not allowed between update_design and end_design:

Options and Arguments

-name power_design


Specifies the name of a previously declared power design.


Related Information

end_design

set_design



update_isolation_rules

update_isolation_rules -names rule_list
{ -location {from | to | parent | any}
| -within_hierarchy instance
| -cells cell_list [-use_model -pin_mapping pin_mapping_list
    [-domain_mapping domain_mapping_list] ]
| -prefix string
| -suffix string
| -open_source_pins_only}...

Appends the specified isolation rules with implementation information.

Note:  You must specify at least one of the options besides -names, but you can also combine several options.

This command is only needed if you have special implementation requirements for the specified rules. If this command is not specified, the tools will automatically determine the correct cell and location according to the specifications in the define_isolation_cell command.

Options and Arguments

-cells cell_list


Specifies the names of the library cells that must be used as isolation cells for the selected pins.

By default, the appropriate isolation cells are chosen from the isolation cells defined with the define_isolation_cell command.

It is an error if the function of a specified cell conflicts with the expected isolation output specified by the -isolation_output option in the create_isolation_rule command.

Note:  If the isolation rule was specified with the -no_condition option, the specified cells must have been defined with the -no_enable option.

-domain_mapping domain_mapping_list


Specifies the mapping of the domains in the macro model to the top-level domains.


This option can be used if there is a CPF macro model with the same name as the first name specified in -cells.


Use the following format to specify a domain mapping:

{domain_in_child_scope domain_in_parent_level_scope}


The specified domain mapping applies to all instantiations of the specified isolation cell.


If the macro model has multiple power domains defined, this option must be used.


The power domains must have been previously defined with the create_power_domain command.

-location {to|from|parent|any}


Specifies where to insert the isolation logic.

  • any--indicates that the isolation logic can be inserted in any power domain to which the specified logic hierarchy belongs. This option can only be used if you specified the -within_hierarchy option.

  • from--inserts the isolation logic inside a hierarchy belonging to the originating power domain. Unless further constrained, the location will be the outermost logic hierarchy of the originating power domain.


  • parent--inserts the isolation logic in the parent hierarchy as follows:

    • If the rule is specified without the -to option, the parent hierarchy corresponds to the top-most logic hierarchy of the originating power domain.

    • If the rule is specified with the -to option, the parent hierarchy corresponds to the top-most logic hierarchy of the destination power domain

    Note:  This is the only value allowed if the original rule was specified with the -force option.


  • to--inserts the isolation logic inside a hierarchy belonging to the destination power domain. Unless further constrained, the location will be the outermost logic hierarchy of the destination power domain.


Default:

  • to--if the original rule was specified without the -force option

  • the hierarchical instance to which the pin belongs--if the original rule was specified with the -force option

    Note:  If the hierarchical instance is a macro model or blackbox, the isolation logic is inserted in the parent hierarchy of that instance.


If you specify this option without the -cells option, the implementation tools can only use isolation cells whose valid location (specified through the -valid_location option in the define_isolation_cell command) matches or is compatible with the location specified through -location.

If you specify this option with the -cells option, the -valid_location value of the cells specified in the define_isolation_cell command must match (or be compatible with) the value of this option. Otherwise an error will be given.


If the original rule was specified with the -force option,

-names rule_list


Specifies the names of the rules to be updated.

The name can contain wildcards.

The rule must have been previously defined with the create_isolation_rule command.

-open_source_pins_only


Limits the pins to be isolated to the open source pins that belong to a power domain that is switched off while the driver domain remains powered on.

This implies that only those rules that were created with the -isolation_target option set to to can be updated.

-pin_mapping pin_mapping_list


Specifies a list of pin mappings for a complicated isolation cell that cannot be modelled using the define_isolation_cell command. The cell refers to the first cell specified by -cells.


Use the following format to specify a pin mapping:

{cell_pin design_pin_reference}


  • cell_pin is the name of the pin in the cell definition


  • design_pin_reference is one of the following:

    • the name of a design port or instance pin--You can prepend the "!" character to the name if the inverse of the port/pin is used to drive the cell pin


    • isolation_signal, which refers to the expression in -isolation_condition


The pin mapping cannot refer to the data input port or the data output port of the cell.

The cell data input port that is not specified in the pin mapping must be connected to the signal being isolated.

The cell data output port that is not specified in the pin mapping must be connected to the logic that is driven by the signal being isolated.

-prefix string

Specifies the prefix to be used when creating the isolation logic.

Default: CPF_ISO_

-suffix string

Specifies the suffix to be used when creating the isolation logic.

-use_model

Indicates that a simulation tool must use the functional model of the first cell specified in the -cells option.

When this option omitted, a simulation tool can apply the default isolation logic based on the create_isolation_rule semantics.

-within_hierarchy instance


Specifies to insert the isolation logic (with or without wrapper) in the specified instance.

Use a single hierarchical separator if the logic must be inserted at the top of the current scope.


If you specify this option with the -cells option, the -valid_location of the cells specified in the define_isolation_cell command must be compatible with the power domain of the hierarchical instance specified with this option. Otherwise an error will be given.


Note:  The power domain of the specified instance takes precedence over the power domain of the selected location.


Note:  You cannot use this option if the original rule was specified with the -force option.


Related Information

Isolation Cell

Isolation Rules

Isolation insertion

create_isolation_rule

define_isolation_cell

identify_power_logic



update_level_shifter_rules

update_level_shifter_rules
-names rule_list
{ -location {from | to | parent | any}
| -through power_domain_list
| -within_hierarchy instance
| -cells {cell_list | list_of_cell_lists}
| -prefix string
| -suffix string}...

Appends the specified level shifter rule with implementation information.

Note:  You must specify at least one of the options besides -names, but you can also combine several options.

This command is only needed if you have special requirements for implementation of the specified rules. If this command is not specified, the tools will automatically determine the correct cell and location according to the specifications in the define_level_shifter_cell command.

Options and Arguments

-cells {cell_list | list_of_cell_list}


Specifies the names of the library cells to be used to bridge the specified power domains.

  • If single-stage level shifters must be used, you can specify a single cell or one list of cells.

  • If multi-stage level shifters are required, you can specify one cell or a list of N cell lists.

    • If a single cell is specified, it must have been defined with the -multi_stage option in the define_level_shifter_cell command.

    • Otherwise, you must specify an ordered list of N cell lists, where N is the number of stages in the level-shifting. Each list contains the cells appropriate for its stage.


By default, the appropriate level shifter cells are chosen from the cells defined with the define_level_shifter_cell command.

-location {to|from|parent|any}


Specifies where to insert the single-stage level shifters.

  • any--indicates that the level shifter can be inserted in any power domain to which the specified logic hierarchy belongs. This option can only be used if you specified the -within_hierarchy option.

  • from--inserts the level shifter inside a hierarchy belonging to the originating power domain. Unless further constrained, the location will be the outermost logic hierarchy of the originating power domain.

  • parent--inserts the level shifter in the logic hierarchy as follows:

    • If the rule is specified without the -to option, the parent hierarchy corresponds to the top-most logic hierarchy of the originating power domain.

    • If the rule is specified with the -to option, the parent hierarchy corresponds to the top-most logic hierarchy of the destination power domain

    Note:  This is the only value allowed if the original rule was specified with the -force option.

  • to--inserts the level shifter inside a hierarchy belonging to the destination power domain. Unless further constrained, the location will be the outermost logic hierarchy of the destination power domain.

Default:

  • to--if the original rule was specified without the -force option

  • the hierarchical instance to which the pin belongs--if the original rule was specified with the -force option

If you specify this option without the -cells option, the implementation tools can only use level shifter cells whose valid location (specified through the -valid_location option in the define_level_shifter_cell command) matches or is compatible with the location specified through -location.


If you specify this option with the -cells option, the -valid_location of the cells specified in the define_level_shifter_cell command must match (or be compatible with) the value of this option. Otherwise an error will be given.

This option is ignored in case multi-stage level shifters are required.

-names rule_list


Specifies the names of the level shifter rules to be updated.

The name can contain wildcards.

The rule must have been previously defined with the create_level_shifter_rule command.

-prefix string 

Specifies the prefix to be used when creating this logic.

Default: CPF_LS_

-suffix string 

Specifies the suffix to be used when creating this logic.

-through power_domain_list


Specifies that the level shifting must occur in multiple stages and be placed in the order of the specified domains.

The first stage is from a domain specified with the -from option in the corresponding create_level_shifter_rule command to the first domain specified with the -through option.

The last stage is from the last domain specified with the -through option to a domain specified with the -to option in the corresponding create_level_shifter_rule command.

The other stages are between the domains specified with the -through option in the order that they are specified.

Note:  You can only specify this option when both the -from and -to options were specified the corresponding create_level_shifter_rule command. In addition, only one of the two options can contain a power domain list.


The power domains must have been previously defined with the create_power_domain command.

-within_hierarchy instance


Specifies to insert the level shifters (with or without wrapper) in the specified instance.

Use a single hierarchical separator if the level shifters are to be inserted at the top of the current scope.


If you specify this option with the -cells option, the -valid_location of the cells specified in the define_level_shifter_cell command must be compatible with the power domain of the hierarchical instance specified with this option. Otherwise an error will be given.


Note:  The power domain of the specified instance takes precedence over the power domain of the selected location.

Note:  You cannot use this option if the original rule was specified with the -force option.

This option is not allowed with multi-stage level-shifting.

Related Information

Level Shifter Cell

Level Shifter Insertion

Modeling Level Shifters in the Common Power Format User Guide

create_level_shifter_rule

define_level_shifter_cell



update_nominal_condition

update_nominal_condition
-name condition
-library_set library_set [-power_library_set library_set]

Associates a library set with the specified nominal operating condition.

Options and Arguments

-library_set library_set


References the library set to be associated with the specified condition.

The library set must have been previously defined with the define_library_set command.

Note:  This library set is used for timing analysis and optimization. When the -power_library_set option is not specified, this library set is also used for power analysis and optimization.

-name condition

Specifies the name of the nominal operating condition.

Note:  The specified string cannot contain wildcards.

The condition must have been previously defined with the create_nominal_condition command.

-power_library_set library_set


References the power library set to be associated with the specified condition.

The library set must have been previously defined with the define_library_set command.

Note:  If this option is not specified, the timing libraries specified with the -library_set option will be used for power analysis and optimization.


Related Information

create_nominal_condition

define_library_set



update_power_domain

update_power_domain
-name domain
[-instances instance_list ] [-boundary_ports port_list ]
{ -primary_power_net net | -primary_ground_net net
| -equivalent_power_nets power_net_list
| -equivalent_ground_nets ground_net_list
| -pmos_bias_net net | -nmos_bias_net net
| -deep_nwell_net net | -deep_pwell_net net
| -user_attributes string_list
| -transition_slope [float:]float |
| -transition_latency {from_nom latency_list}
| -transition_cycles {from_nom cycle_list clock_pin} } ...

Specifies implementation aspects of the specified power domain.

If a power domain is implemented in multiple disjoint physical regions, each region has its own power and ground nets. Use the -equivalent_power_nets and -equivalent_ground_nets options to declare these power and ground nets equivalent to the primary power and ground nets. In this case, the following applies:

Note:  You must specify at least one of the options besides -name, but you can also combine several options.

A domain can be updated multiple times with -transition_latency and -transition_cycles without overwriting the previous command. In this case, all unique transitions (with different starting and ending states or nominal conditions) will be appended to form a complete state transition table for this domain. If any specific transition is specified more than once, the transition time or cycle specified in the last update_power_domain command will be used.

Options and Arguments

-boundary_ports pin_list


Incrementally updates a power domain's boundary port membership with the specified list. The effect of this option is the same as the -boundary_ports option in the create_power_domain command.

You can use this option to assign boundary ports created during implementation to the correct power domain.

-deep_nwell_net net


Specifies the net to be used for the deep nwell connection.

The net must have been previously defined with the create_bias_net command.

-deep_pwell_net net


Specifies the net to be used for the deep pwell connection.

The net must have been previously defined with the create_bias_net command.

-equivalent_ground_nets ground_net_list


Specifies a set of ground nets that are equivalent to the primary ground net of the power domain.

You can use wildcards (*) to specify a list of ground nets.

For macro cell power domains, this option specifies the boundary ports for the equivalent ground nets in the macro cell.

-equivalent_power_nets power_net_list


Specifies a set of power nets that are equivalent to the primary power net of the power domain.

You can use wildcards (*) to specify a list of power nets.

For macro cell power domains, this option specifies the boundary ports for the equivalent power nets in the macro cell.

-instances instance_list


Incrementally updates a power domain's instance membership with the specified list. The effect of this option is the same as the -instances option in the create_power_domain command.

You can use this option for correct power domain assignment of instances created during implementation.

For example, top-level buffering during physical implementation can introduce buffers in the top module; however, the power domain assignment of these buffers should be the power domain of the driving or receiving logic, not the power domain of the top module.

-name domain


Specifies the name of the power domain.

The power domain must have been previously defined with the create_power_domain command.

-nmos_bias_net net


Specifies the net to be used to body bias the n-type transistors of all functional gates in this power domain.

You must have declared this net using the create_bias_net, create_power_nets or create_ground_nets command, except when it is used in macro model. In a macro model, you can specify a cell port with this option to indicate that the net connected to this port is used as the bias net for this domain internally.

-pmos_bias_net net


Specifies the net to be used to body bias the p-type transistors of all functional gates in this power domain.

You must have declared this net using the create_bias_net, create_power_nets or create_ground_nets command, except when it is used in macro model. In a macro model, you can specify a cell port with this option to indicate that the net connected to this port is used as the bias net for this domain internally.

-primary_ground_net net


Specifies the primary ground net for all functional gates in the specified power domain.

You must have declared this net using the create_ground_nets command, except when it is used in a macro model.

For macro cell power domains, this option specifies the boundary port for the primary ground net in the macro cell.

-primary_power_net net


Specifies the primary power net for all functional gates in the specified power domain.

You must have declared this net using the create_power_nets command, except when it is used in a macro model

For macro cell power domains, this option specifies the boundary port for the primary power net in the macro cell.

-transition_cycles {from_nom cycle_list clock_pin}


Specifies the nominal condition of the starting power state, followed by a list of transition cycles to complete the transition to the next power state, followed by the clock pin.

Use the following format to specify the cycle_list:

to_nom@[integer:]integer [to_nom@[integer:]integer]...

where to_nom is the nominal condition of the next power state.

If two numbers are specified, the first number indicates the minimum number of clock cycles needed to complete the transition, while the second number indicates the maximum number of cycles needed to complete the transition.

Note:  If you specify only one value, it is considered to be the maximum number of cycles.

clock_pin specifies the name of the clock pin whose clock cycle is used to determine the power state transition time.

-transition_latency {from_nom latency_list}


Specifies the nominal condition of the starting power state, followed by a list of transition times to complete a transition to the next power state.

Use the following format to specify the latency_list:

to_nom@[float:]float [to_nom@[float:]float]...

where to_nom is the nominal condition of the next power state.

If two numbers are specified, the first number indicates the minimum time needed to complete the transition, while the second number indicates the maximum time needed to complete the transition.

Note:  If you specify only one value, it is considered to be the maximum time.

Specify the time in the units specified by the set_time_unit command.

-transition_slope [float:]float


Specifies the transition rate(s) for the supply voltage of the domain during any state transition of the domain.

Note:  Supply refers to the power supply, ground supply, and the body bias supply. If a domain state transition involves a change in multiple supplies, the voltage used to compute the transition time is in the following order: power, ground, body bias.

If two numbers are specified, the first number indicates the minimum transition rate, while the second number indicates the maximum transition rate.

Note:  If you specify only one value, it is considered to be the maximum slope.

The unit for a transition rate is volt per time unit (specified by the set_time_unit command).

-user_attributes string_list


Attaches a list of user-defined attributes to the domain. Specify a list of strings.


Example

Related Information

create_bias_net

create_ground_nets

create_power_domain

create_power_nets



update_power_mode

update_power_mode
-name mode
{ -activity_file file -activity_file_weight weight
| { -sdc_files sdc_file_list
  | -setup_sdc_files sdc_file_list
  | -hold_sdc_files sdc_file_list
  | -setup_sdc_files sdc_file_list -hold_sdc_files sdc_file_list}
| -peak_ir_drop_limit domain_voltage_list
| -average_ir_drop_limit domain_voltage_list
| -leakage_power_limit float
| -dynamic_power_limit float}...

Specifies the constraints for the power mode.

Note:  You must specify at least one of the options besides -name, but you can also combine several options.

Options and Arguments

-activity_file file


Specifies the path to the activity file. Supported formats for the activity files are VCD, TCF, and SAIF.

Note:  You must use the correct file extension to identify the format: vcd, tcf, saif. The extension is case insensitive. To indicate that the file is gzipped, use the .gz extension.

-activity_file_weight weight


Specifies the relative weight of the activities in this file in percentage. Use a positive floating number between 0 and 100.

To estimate the total average chip power over all modes, the activity weights are used to adjust the relative weight of each power mode.

Note:  If the weights specified for the activity files for the different power modes do not add up to 100, an adjusted weight is used.

-average_ir_drop_limit domain_voltage_list


Specifies the maximum allowed average voltage change on a power net due to resistive effects in volt (V) for the specified power mode. This net must be the primary power net of the power domain to be considered in the specified mode.

Use the following format to specify the maximum allowed average voltage change in the domain:

domain_name@voltage

Use a floating value for the voltage.


If a domain is omitted from this list, the value for the primary power net of this domain will be 0, unless you specified a value using the -average_ir_drop_limit option of the create_power_nets command.


The power domains must have been previously defined with the create_power_domain command.

-dynamic_power_limit float


Specifies the maximum allowed average dynamic power in the specified mode.

Default: 0 mW

-hold_sdc_files sdc_file_list


Specifies a list of SDC files to be used for the specified mode. Use this option if the SDC files contain only hold constraints.

You cannot combine this option with the -sdc_files option.

Note:  File lists cannot contain wildcards.

-leakage_power_limit float


Specifies the maximum allowed average leakage power in the specified mode.

Default: 0 mW

-name mode   

Specifies the name of the mode.

-peak_ir_drop_limit domain_voltage_list


Specifies the maximum allowed peak voltage change on a power net due to resistive effects in volt (V) for the specified power mode. This net must be the primary power net of the power domain to be considered in the specified mode.

Use the following format to specify the maximum allowed peak voltage change in the domain:

domain_name@voltage

Use a floating value for the voltage.

If a domain is omitted from this list, the value for the primary power net of this domain will be 0, unless you specified a value using the -average_ir_drop_limit option of the create_power_nets command.


The power domains must have been previously defined with the create_power_domain command.

-sdc_files sdc_file_list


Specifies a list of SDC files to be used for the specified mode. Use this option if the SDC files contain both setup and hold constraints.

You cannot combine this option with either the -setup_sdc_files or -hold_sdc_files options.

Note:  File lists cannot contain wildcards.

-setup_sdc_files sdc_file_list


Specifies a list of SDC files to be used for the specified mode. Use this option if the SDC files contain only setup constraints.

You cannot combine this option with the -sdc_files option.

Note:  File lists cannot contain wildcards.


Example

update_power_mode -name PM2 -sdc_files ../SCRIPTS/cm1.sdc \
-activity_file top_pm2.tcf -activity_file_weight 25

Related Information

Power Mode

Object Lists

create_power_mode



update_power_switch_rule

update_power_switch_rule
-name string
{ -enable_condition_1 expression [-enable_condition_2 expression]
| -acknowledge_receiver_1 expression [-acknowledge_receiver_2 expression]
| -cells cell_list
| -gate_bias_net power_net
| -prefix string
| -peak_ir_drop_limit float
| -average_ir_drop_limit float }...

Appends the specified rules for power switch logic with implementation information.

Options and Arguments

-acknowledge_receiver_1 (-acknowledge_receiver_2) expression


Specifies the active value of the acknowledge receiver pin.

Use a unary expression to express the value. The expression is a Boolean function of an input pin a power controller.

When all acknowledge receiver pins are active, this signals to the power controller that the power switch network is turned on completely.

An acknowledge receiver pin is driven by the corresponding output pin of the last power switch cell in the power switch network used to implement this rule.

The output pin is specified through the -stage_x_output option of the define_power_switch_cell command.

-average_ir_drop_limit float


Specifies the maximum allowed average voltage change across a power switch due to resistive effects in volt (V).

Default: 0

-cells cell_list

Specifies the name of the library cells that can be used as power switch cells.

A power switch cell must have been defined with the define_power_switch_cell command.

-enable_condition_1 (-enable_condition_2) expression


Specifies the condition when the power switch should be enabled. The condition is a Boolean expression of one or more pins.

If only -enable_condition_1 is specified, the expression is used as the enable signal for all enable pins of the power switch cell.

If both options are specified, the expression of the -enable_condition_1,-enable_condition_2 will be used respectively as enable signal for the enable pin of stage 1 and stage 2 of the power switch cell.

Note:  If the specified power domain has a shutoff condition, the support set of this expression must be a subset of the support set of the shut-off condition.


Default: the inversion of the expression specified for the shutoff condition of the power domain is used as the enable signal driver for the enable pin(s) of the power switch cell


Note:  If any pin specified in the enable condition expression is also specified with a set_equivalent_control_pins command, it should be specified as the master pin. The pins that are equivalent to the master control pin will only be used for verification.

-gate_bias_net power_net


Specifies the power net connected to the gate bias power pin of the power switch cell.

Note:  This option must only be specified if the specified power switch cell has a -gate_bias_pin option.

-name string  

Specifies the name of the power switch rule.

-peak_ir_drop_limit float


Specifies the maximum allowed peak voltage change across a power switch due to resistive effects in volt (V).

Default: 0

-prefix string  

Specifies the prefix to be used when creating this logic.

Default: CPF_PS_


Examples

Related Information

create_ground_nets

create_power_nets

create_power_switch_rule

define_power_switch_cell



update_state_retention_rules

update_state_retention_rules
-names rule_list
{ -cell_type string
| -cells cell_list [-use_model -pin_mapping pin_mapping_list
    [-domain_mapping domain_mapping_list]]
| -set_reset_control} ...

Appends the specified rules for state retention logic with implementation information.

By default, the appropriate state retention cells are chosen from the state retention cells defined with the define_state_retention_cell command.

If the define_state_retention_cell command is specified with the -cell_type option, the cells defined through that command can only be used by a retention rule that references that particular type through the -cell_type option in the update_state_retention_rules command.

If the define_state_retention_cell command is not specified with the -cell_type option, its cells can only be used by a retention rule that does no have the -cell_type option specified in the update_state_retention_rules command.

This command is only needed if you have special requirements for implementation of the specified rules. If this command is not specified, the tools will automatically determine the correct cell and location according to the specifications in the define_state_retention_cell command.

Options and Arguments

-cells cell_list 

Specifies a list of library cells that can be used to map the sequential cells.

-cell_type string

Specifies the class of library cells that can be used to map the flops.

Note:  The specified class (cell type) must correspond to a cell type specified in a define_state_retention_cell command.


The class is a user-defined name that allows to group cells into a class of retention cells with the same retention behavior.


If you specify this option with the -cells options, the -cells option takes precedence.

-domain_mapping domain_mapping_list


Specifies the mapping of the domains in the macro model to the top-level domains.

This option can be used if there is a CPF macro model with the same name as the first cell specified in -cells.


Use the following format to specify a domain mapping:

{domain_in_child_scope domain_in_parent_level_scope}


The specified domain mapping applies to all instances of the specified state retention cell.


If the macro model has multiple power domains defined, this option must be used.


The power domains must have been previously defined with the create_power_domain command.

-names rule_list

Specifies the names of the rules to be updated.

The name can contain wildcards.

The rule must have been previously defined with the create_state_retention_rule command.

-pin_mapping pin_mapping_list


Specifies a list of pin mappings for a complicated state retention cell that cannot be modelled using the define_state_retention_cell command. The cell refers to the first cell specified by -cells.


Use the following format to specify a pin mapping:

{cell_pin design_pin_reference}


  • cell_pin is the name of the pin in the cell definition


  • design_pin_reference is one of the following:

    • the name of a design port or instance pin. You can prepend the "!" character to the name if the inverse of the port/pin is used to drive the cell pin

    • save_signal, which refers to the expression in -save_edge or -save_level option

    • restore_signal, which refers to the expression in -restore_edge or -restore_level option

-set_reset_control


Restricts the rule to those instances that are part of the asynchronous-set-reset-synchronizer circuit--a chain of one or more D type flip flops used to asynchronously set or reset other state elements (flip-flops or latches).

This option differentiates these state elements from other state elements in this power domain not used to supply set or reset signals.

-use_model

Indicates that a simulation tool must use the functional model of the first cell specified in -cells option.

When this option omitted, a simulation tool can apply the default state retention logic based on the create_state_retention_rule semantics.


Related Information

State Retention Cell

create_state_retention_rule

define_state_retention_cell


Return to top of page

View Library View Table Of Contents View Index for This Manual View Previous Chapter in Book View Next Chapter in Book Open PDF to print book Search Cadence Library Email Comments Help Using Documentation Shut Down Cadence Documentation Server


For support, see http://www.cadence.com/support or try Cadence's SourceLink service.

Copyright © 2013, Cadence Design Systems, Inc.
All rights reserved.
Legal notices and trademark attributions