Magic Blue Smoke


Writing UPF for a DVFS design

Often times I get questions on how to write an UPF describing the varying nature of Voltage in a DVFS design. I will try to explain how this can be done at a very higher level. If any one of you have any specific question please let me know so that I can elaborate on that.

Lets assume that the basic part of UPF is already written, most important statement here is how to build a PST that represents “V”.

Here is a PST with multiple power rails in a design.

add_port_state VDD -state {HV 1.08}

add_port_state VDDG -state {HV 1.08}
-state {LV 0.864}
add_port_state DVFS_VDD -state {-state {HighPerformance 1.08}
-state {MedumPerformance 0.864}
-state {OptimalPower 0.72}
-state {StandbyMemory 0.52}

add_port_state dvfs_sd/out -state {HighPerformance 1.08}
-state {MedumPerformance 0.864}
-state {OptimalPower 0.72}
-state {StandbyMemory 0.52}
-state {OFF off}

create_pst dvfs_pst -supplies {VDD VDDG DVFS_VDD VIRTUAL_VDD}
add_pst_state overdrive -pst dvfs_pst -state {HV HV OptimalPower OFF}
add_pst_state function1 -pst dvfs_pst -state {HV LV MedumPerformance StandbyMemory}
add_pst_state function2 -pst dvfs_pst -state {HV HV HighPerformance OptimalPower}
add_pst_state function3 -pst dvfs_pst -state {HV LV HighPeformance OptimalPower}

As you see from the above table, its very clear that 2 VDD’s “DVFS_VDD and VIRTUAL_VDD” are varied and operational VDD’s are defined as “1.08, 0.864, 0.72 0.52”

This needs careful constraining at the implementation tool level to get what you want. I will explain the commands and approach to be used at synthesis/back-end in my next posting.