CPF 1.1 Tutorial 13-Oct-2009
CPF 1.1 Tutorial 13-Oct-2009
1 Tutorial
October 2009
Qi Wang Cadence Design Systems, Inc. LPC Vice Chair, LPC, Si2
CPF 1.1 is a Si2 Standard released in September 2008. This tutorial is targeted for audience with basic knowledge of Si2 Standard CPF 1.0. For more information on CPF 1.0 and related training materials, please visit the following links:
http://www.si2.org/?page=811 (CPF 1.0 Spec) http://www.si2.org/?page=905 (CPF 1.0 Pocket Guide) http://www.si2.org/?page=907 (CPF 1.0 Tutorials)
Soft IP Reuse
IP is defined with multiple power structures and functionalities Can use any command to describe a block level power intent Simulation and static verification can be performed at the block design level before chip level integration and fixes can be made earlier with less schedule impact. Top level and block level power structures are linked together using
include
I2
External Switchable (PDExt)
set_design Block1 ports { IsoExt } create_power_domain name PDOn instances { I1 } -default create_power_domain name PDExt instances { I2 } create_isolation_rule -name Iso1 from PDExt to PDOn\ isolation_condition IsoExt create_nominal_condition name on voltage 1.0 state on create_nominal_condition name off voltage 0 state off create_power_mode name all_on domain_conditions { ON@on Ext@on} create_power_mode name ext_off domain_conditions { ON@on Ext@off} end_design
Innovation Through Collaboration Low Power Coalition
8
unswitched
X1 I1 I2
I1
I2
Iso Rule
Iso Rule
unswitched
set design Block1
External Switchable
unswithced
set design Block1
External Switchable
include Block1.cpf set_design Top ports { Iso Pwr } create_power_domain name AON create_power_domain name Int shutoff_condition { !Pwr } set_instance X1 domain_mapping { { PDOn AON } { PDExt AON } } design Block1 set_instance X2 domain_mapping { { PDOn AON } { PDExt Int } } design Block1 \ -port_mapping { {IsoExt Iso} } end_design
Innovation Through Collaboration Low Power Coalition
9
unswitched
X1 I1 I2
I1
I2
Iso Rule
unswitched
Block1
un-switched
unswitched
Block1
Internal Switched
10
Specify virtual ports: port save and restore do not exist in RTL
externally switchable domain Use parameters: use the parameter like a string variable
11
top
I1 myIP1
internal switchable
(PDRed) pso restore
myIP2
PCM
unswitched
(PDBlue)
include myIP.cpf ;#load in the CPF model for IP set_design top create_power_domain name PDBlue default create_power_domain name PDRed \ shutoff_condition pcm/pso base_domains PDBlue set_instance I1/myIP1 design myIP \ -domain_mapping { {PD PDRed}} \ -port_mapping { {restore pcm/restore}} \ -parameter_mapping { {one_control 1}} set_instance myIP2 design myIP \ domain_mapping { {PD PDBlue}} end_design
12
top
I1 myIP1
internal switchable
(PDRed) pso restore
top
I1 myIP1
myIP2
PCM
PCM
pso restore
myIP2
unswitched
(PDBlue)
unswitched
(PDBlue)
Before Integration
After Integration
13
IP blocks or macros, such as embedded RAM, can be accomplished by defining the power features using
set_macro_model <name> power information content end_macro_model This independent definition provides verification and
implementation tools the power information necessary to implement and verify designs using these custom IP blocks.
Another benefit of the macro model definition is that it allows
the original IP block behavioral model to co-exist with the CPF definition to enable power aware verification at the design level.
14
15
Multiple power ports (VDD, VPP) Unswitched (AON) Switches Internally Switched (PSO) State Retention Isolation Isolation Isolation Different types of domains Domain with retention
D4
Domain without retention Inputs isolated (D3) Inputs not isolated (D2) Outputs isolated (D4) Outputs not isolated (D5)
D3 NC F1 F2
VSS
16
17
domain
An input pin assigned to a domain means the logic driven by the input pin inside the macro cell takes the power supply from this domain An output pin assigned to a domain means the logic driving the output pin inside the macro cell takes the power supply from this domain If a domain contains registers defined in the behavioral model,
18
D4
primary_ground_net VSS
D3 NC
D5
create_power_domain name EXT \ -boundary_ports { D3 D5 } update_power_domain name EXT \ -primary_power_net VPP \ -primary_ground_net VSS
F1 F2 VSS VPP
19
Inputs are NOT isolated inside the macro model but it requires isolation when the drivers can be switched off in the design context\
Define an isolation rule for the input ports without isolation condition and with isolation_output to define what the valid clamp value should be when the driver is switched off.
20
Defining Isolation
VDD
create_isolation_rule name IsoOut \ -from PSO pins { D4 } \ isolation_condition !pwr \ isolation_output high notes on rule IsoOut port D4 belongs to the default domain AON create_isolation_rule name IsoInReq \
D1 iso1 iso2 ret pwr D2 Unswitched (AON) Switches Isolation Internally Switched State Retention Isolation Isolation
D4
to PSO pins { D2 } \ isolation_output low notes on rule IsoInReq D2 has no internal isolation. The rule specify a constraint: if D2 is driven by a switchable domain (after instantiated at top), it needs to be isolated to low when the domain is off create_isolation_rule name IsoIn \ to EXT pins { D3 } \ isolation_condition iso1 \ isolation_output low notes on rule IsoIn port D3 belongs to the domain EXT Innovation Through Collaboration Low Power Coalition
D3 NC F1 F2 VSS
D5
VPP
create_isolation_rule name IsoInt \ from EXT to PSO \ isolation_condition iso2 \ isolation_output low notes on rule IsoInt This rule covers an internal crossing
21
VDD
D1 iso1 iso2 ret pwr Unswitched (AON) Switches Isolation Internally Switched State Retention Isolation Isolation
D4
notes on state retention rule Use the register names in instances if you want to apply the rule only to those registers No need to use update_state_retention_rule AON domain is the secondary domain of the retention logic by default
D2
D3 NC F1 F2 VSS
D5
VPP
22
notes on defining feed-through ports must not have internal drivers may not be defined in multiple groups, i.e. the same pin can not appear in two feed through commands
VDD D1 iso1 iso2 ret pwr D2 Unswitched (AON) Switches Isolation Internally Switched State Retention Isolation Isolation
D4
D3 NC
D5
set_wire_feedthrough_ports { F1 F2 }
F1 F2 VSS VPP
23
notes on defining floating ports not associated with any domain are ignored during verification
VDD D1 iso1 iso2 ret pwr D2 Unswitched (AON) Switches Isolation Internally Switched State Retention Isolation Isolation
D4
D3
set_floating_ports { NC }
NC F1 F2 VSS
D5
VPP
24
25
VDD
I1
D1
Isolation
Unswitched (PDBlue)
D4
D3 NC F1 F2 VSS
D5
VPP
D2
Isolation
27
Switches
D4
D3 NC F1 F2
D5
VSS
VSS
no isolation needed: the driver is already isolated no isolation needed: there is no domain crossing, i.e. both drivers and receivers are in the same domain isolation may be needed: if the driver domain can be off while the receiver is on, need to have an isolation rule at top level for isolation insertion No isolation needed: pin D3 is isolated internally and the crossing is not a domain crossing because domain PDRed merged with domain EXT
VDD D1
ret pwr D2
Isolation
Unswitched (PDBlue)
D4
D3 NC F1 F2 VSS
D5
VPP
No isolation needed: NC is a floating pin No isolation needed: F1 and F2 are internal feed-through. At top, the driver and receiver of the net are in the same domain
Innovation Through Collaboration Low Power Coalition
VSS
connect ground
28
crossing.
To describe level shifters at the boundary ports a macro cell, assign
the port to the proper power domain in the macro model Do not create level shifter rules in a macro model See also the slide Macro Model Basics
VDD_EXT VDD
level shifters
29
enable
Be able to specify mode transition time and domain transition time when a
30
31
Physical View
Logical View
Switchable domain PD2
PD2 is a derived power domain of PD1 PD1 is the secondary domain of PD2
Innovation Through Collaboration Low Power Coalition
Always on instance
32
technology.
Special low power cells: Always on Isolation State retention level shifter power switch cell
33
identify_secondary_domain secondary_domain power_domain {instances instance_list | -cells cell_list } \ [ -domain power_domain [-from power_domain | -to power_domain]] create_state_retention_rule name string . [-secondary_domain power_domain] create_power_switch_rule name string [-secondary_domain power_domain]
35
Isolation Enhancements
Support IP level isolation constraint Create an isolation rule with neither isolation_condition nor no_condition Support isolation cells without enable control Isolation rule with tristate isolation output Isolation insertion at arbitrary locations in the hierarchy Specified on update_isolation_rule Must be in appropriate power domain
36
Isolation Enhancements
Related Commands
define_isolation_cell cells [-no_enable { high | low | hold} ] create_power_domain -name power_domain
[ -default_isolation_condition expression] create_isolation_rule -name string -isolation_condition expression [-isolation_output {high|low|hold|tristate}] [-no_condition] update_isolation _rules -names rule_list -within_hierarchy instance}
..
37
power domain
update_level_shifter_rules -names rule_list \ { -location { from | to} | -within_hierarchy instance} | \ -cells cell_list | -prefix string }...
38
sensitive ones
Gate level simulation Identifies elements in simulation models that is on when the secondary supply is on and primary supply is off Exclude option Easier granulation to identify registers for SR
39
[ { -restore_edge expression | -restore_level expression } [ { -save_edge expression | -save_level expression } ]] [-target_type { flop | latch | both} ]
40
41
Other Enhancements
Support physically disjoint power domain Logically one power domain but physically located in different regions Power nets can be share or may not be shared update_power_domain -name domain { -equivalent_power_nets list_of_power_nets | -equivalent_ground_nets list_of_ground_nets } ... Handle equivalent control pins for power control signals Isolation, retention and power switch enables may be broken into multiple signals with non-overlapping sequence to reduce rush current set_equivalent_control_pins master pin pins pin_list { -domain domain | -rules rule_names}
42
43