Show Menu
Cheatography

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

Power Domain

crea­te_­pow­er_­dom­ain pd1
Power domain created at top level scope
crea­te_­pow­er_­dom­ain pd2 -elements cpu
specify instance name
crea­te_­pow­er_­dom­ain pd3 -elements Mem -scope cpu
in relative scope cpu, exists instance Mem
set_­dom­ain­_su­ppl­y_net is required to specify primary power and ground nets for a power domain
set_­dom­ain­_su­ppl­y_net TOP -prima­ry_­pow­er_net VDD -prima­ry_­gro­und_net VSS

Power Switches - MTCMOS Cells

crea­te_­pow­er_­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_­pow­er_­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 inacti­ve­,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

crea­te_­sup­ply­_port VDD
Creates Port VDD
crea­te_­sup­ply­_net VDD -domain TOP
Creates supply net at top level
conn­ect­_su­ppl­y_net VDD -ports VDD
Connects supply net to port VDD
set_­dom­ain­_su­ppl­y_net
Specifies primary power/­ground nets for power domain
crea­te_­sup­ply_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 -app­lies_to inputs -rule high_t­o_low -location self
set_le­vel­_sh­ifter LS_out -domain PD2 -app­lies_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 opti­onal since insertion controlled by PST.
LS Strategy can be applied to control thel­oca­tion of the LS cells

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

set_­iso­lat­ion -appli­es_to outputs -location parent
set_­iso­lat­ion –no_is­olation –elements {list}
set_­iso­lat­ion 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_­iso­lat­ion­_co­ntrol 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_­ret­ent­ion RET_PD1 -domain PD1 -reten­tio­n_p­owe­r_net VDDH -reten­tio­n_g­rou­nd_net VSS
set_­ret­ent­ion­_co­ntrol RET_PD1 -domain PD1 -sav­e_s­ignal {SAVE high} -res­tor­e_s­ignal {RESTORE high}
map_­ret­ent­ion­_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­ati­ons for a design, hence it becomes the center of the design power intent as it captures the dynamic voltage scaling (DVS/DVFS) and shutdown scenar­ios.
add_­por­t_state <po­rt_­nam­e> {-state {name <no­m>|­<min nom max>|<­off­>}}
Defines all possible state inform­ation to a supply port
crea­te_pst <ta­ble­_na­me> -supplies {list}
Creates a PST using a specific order of supply nets
add_­pst­_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_­por­t_a­ttr­ibu­tes comman­d(SPA),
set_­por­t_a­ttr­ibu­tes -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_­por­t_a­ttr­ibutes -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
Isol­ation cells are inserted based upon the UPF constr­aints
Rete­ntion 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

Exp­lic­it: crea­te_­sup­ply_set mySS1 -function {power myVDD} -function {ground myVSS}
Imp­lic­it: Supply set handles automa­tically created with the crea­te_­pow­er_­dom­ain command
Predefined handles are : PD1.p­rimary PD1.de­fau­lt_­iso­lation PD1.de­fau­lt_­ret­ent­ion
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-u­sab­ility 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­ati­on.

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

   

Help Us Go Positive!

We offset our carbon usage with Ecologi. Click the link below to help us!

We offset our carbon footprint via Ecologi
 

Comments

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