Show Menu

Introduction to Unified Power Format syntax to model the Power Intent of your Design.

Power Domain

create­_po­wer­_domain pd1
Power domain created at top level scope
create­_po­wer­_domain pd2 -elements cpu
specify instance name
create­_po­wer­_domain pd3 -elements Mem -scope cpu
in relative scope cpu, exists instance Mem
set_do­mai­n_s­upp­ly_net is required to specify primary power and ground nets for a power domain
set_do­mai­n_s­upp­ly_net TOP -prima­ry_­pow­er_net VDD -prima­ry_­gro­und_net VSS

Power Switches - MTCMOS Cells

create­_po­wer­_switch myswitch -domain Core -input­_su­ppl­y_port {in VDDC} -outpu­t_s­upp­ly_port {out VDDS } -contr­ol_port {Nsleep PMU/sleep} -on_state {on_state in {!sleep} }
Place & Route later will physically map the constraint to the real switch cells:
map_po­wer­_switch -domain <do­mai­n_n­ame> -lib_cell <li­b_c­ell­_na­me> <sw­itc­h_n­ame>
Even when not switch­ing­,CMOS cells consume leakage power. The idea is to save leakage power by truning off design partitions when the logic is inactive,for that, Power Switches are added between the main supply and the virtual supply to be shutdown. Of course the virtual supply is connected to standard cells supply rails.

Power Supply Network UPF 1.0

create­_su­ppl­y_port VDD
Creates Port VDD
create­_su­ppl­y_net VDD -domain TOP
Creates supply net at top level
connec­t_s­upp­ly_net VDD -ports VDD
Connects supply net to port VDD
Specifies primary power/­ground nets for power domain
create­_su­ppl­y_net -reuse will create supply net and supply port automa­tically at child level

Level Shifters - set_le­vel­_sh­ifter

set_le­vel­_sh­ifter LS_in -domain PD2 -appli­es_to inputs -rule high_t­o_low -location self
set_le­vel­_sh­ifter LS_out -domain PD2 -appli­es_to outputs -rule low_to­_high -location parent
rule can be " high_t­o_l­ow", "­low­_to­_hi­gh" or "­bot­h"
location can be "­sel­f", "­par­ent­" or "­aut­oma­tic­"
LS needed when 2 different signals belonging to different voltage power domains need to be connected to ensure proper signal value and timing propag­ation
Level Shifter strategy is optional since insertion controlled by PST.
LS Strategy can be applied to control thelocation of the LS cells

ISO Cells-­set­_is­ola­tio­n/s­et_­iso­lat­ion­_co­ntrol

set_is­olation -appli­es_to outputs -location parent
set_is­olation –no_is­olation –elements {list}
set_is­olation iso_co­re_out -domain Core_d­omain -isola­tio­n_p­owe­r_net VDDC -isola­tio­n_g­rou­nd_net VSS -clamp­_value 1 -appli­es_to outputs
set_is­ola­tio­n_c­ontrol iso_co­re_out –domain Core_d­omain -isola­tio­n_s­ignal PwrCtr­l/i­sol­ate­_ctrl -isola­tio­n_sense low -location parent
Provide protection during shutdown to avoid spurious signal propag­ation

Retention FF

set_re­tention RET_PD1 -domain PD1 -reten­tio­n_p­owe­r_net VDDH -reten­tio­n_g­rou­nd_net VSS
set_re­ten­tio­n_c­ontrol RET_PD1 -domain PD1 -save_­signal {SAVE high} -resto­re_­signal {RESTORE high}
map_re­ten­tio­n_cell -domain PD1 -lib_cells
Retention FF will maintain the state of sequential elements in a shutdown block.
Retention supplies must be "­Alw­ays­-ON­" as long as the FF need to hold their value

Power State Table - PST

Once you know more about what you are trying to define, specify the design switching charac­ter­istics in a power state table.
This requires knowing (or deciding) the operat­ional voltages for each power domain, and the supplies being used.
The PST defines clearly all legal voltage states and power state combin­ations for a design, hence it becomes the center of the design power intent as it captures the dynamic voltage scaling (DVS/DVFS) and shutdown scenarios.
add_po­rt_­state <po­rt_­nam­e> {-state {name <no­m>|­<min nom max>|<­off­>}}
Defines all possible state inform­ation to a supply port
create_pst <ta­ble­_na­me> -supplies {list}
Creates a PST using a specific order of supply nets
add_ps­t_state <st­ate­_na­me> -pst <ta­ble­_na­me> -state <su­ppl­y_s­tat­es>
Defines valid combin­ation of supply net values for each possible state of the design

Create Block Level UPF

To specify driver supply set on input ports and receiver supply set on output port ,one can use set_po­rt_­att­ributes comman­d(SPA),
set_po­rt_­att­ributes -drive­r_s­upp­ly_set | -recei­ver­_su­ppl­y_set VDD_set
To specify supply net on ports if no corres­ponding supply set is defined, use set_re­lat­ed_­sup­ply­_ne­t(S­RSN):
set_re­lat­ed_­sup­ply_net –objec­t_list A –power VDD
Idea here is to create boundary power constr­aints for IO ports of blocks to guide block level implem­ent­ation.
Also when no SRSN/SPA is applied user cn specify default supply to be used to power ports:
set_po­rt_­att­ributes -elements { . } -attribute relate­d_s­upp­ly_­def­aul­t_p­rimary TRUE

Importance of Power State Table

Recomm­end­ation to use the supply_net names for create_pst command to keep PST matrix readable.
Power Management cell insertion is based on PST and UPF constr­aints:
Level shifter cells are inserted based upon the PST
Isolation cells are inserted based upon the UPF constr­aints
Retention cells are inserted based on constr­aints
Correc­tness of the design is checked against PST.

Always-On Logic

Some logic needs to stay active during shutdown
1-Path to enable pins of ISO/ELS
2-Power switches
3-Rete­ntion registers
4-Feed­through paths
Always-on logic remains powered within shutdown block
1-Sing­le-rail AO cells
2-Dual­-rail AO cells

PST Example

PST Example

Supply Sets

create_power_domain doesn't require the use of set_domain_supply_net as pre-defined handles  primary.power and primary.ground are automatically created.
Hence :
set_isolation doesn't require use of -isolation_power_net or -isolation_ground_net options
set_retention doesn't require use of -rentention_power_net or -retention_ground_net options

set_isolation -source SS_VDD1 -sink SS_VDD3 -> using source/sink provides finer control for inserting isolation cells to only on ports where the driver supply is related to a given supply set and load supply is related to another supply set. Works for only for supply sets
set_isolation -diff_supply_only true will insert iso cells only for ports where driver and load usea different supply. Works for both supply sets and supply nets.

Supply Sets - 2 use models

Explicit: create­_su­ppl­y_set mySS1 -function {power myVDD} -function {ground myVSS}
Implicit: Supply set handles automa­tically created with the create­_po­wer­_domain command
Predefined handles are :­imary­fau­lt_­iso­lation­fau­lt_­ret­ention
Supply sets provide an abstract way of bundling supply nets and doing the front-end implem­ent­ation without knowing the supply net and port names. Physical net and port inform­ation is refined at the back-end. This helps improve the re-usa­bility of your IP since the IP is implem­ented without the actual nets and ports and thus is more portable.
Complete supply network inform­ation is not needed when you do your front end implem­ent­ation.

Supply Set Handle­s-­Ex­plicit vs Implicit



No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          More Cheat Sheets by kamezian

          Direct Programming Interface Cheat Sheet