UPF Power is one of the most concerned factor in the lower node technologies due to sophisticated operation of a system at higher frequencies, complex functionalities, wireless applications and portability. Power dissipation has become one of the critical issues as it results in heating up of the device which in-turn affects the operation of a chip. There are many kinds of external heat sinks and software based methods are provided with the system, but we have scope to save the power during operation of the chip. Saving power is eco-friendly and improves the life time of the system. Before going to power saving techniques, lets look at the reasons for power dissipation in MOSFET based design. The power dissipation is classified in two categories: ● Static power dissipation ● Dynamic power dissipation 1. Static power dissipation: In this class, power will be dissipated irrespective of frequency and switching of the system. It is continuous and has become more dominant at lower node technologies. The structure and size of the device results in various leakage currents. Few reasons for static power dissipation are : a. Sub-threshold current b. Gate oxide leakage c. Diode reverse bias current d. Gate induced leakage Its hard to find the accurate amount of leakage currents but it mainly depends on supply voltage (VDD), threshold voltage (Vth), transistor size (W/L) and the doping concentration. 2. Dynamic power dissipation: There are two reasons of dynamic power dissipation; Switching of the device and Short circuit path from supply (VDD) to ground (VSS). This occurs during operation of the device. a) Short-circuit power dissipation: Because of slower input transition, there will be certain duration of time “t”, for which both the devices (PMOS and NMOS) are turned ON ( Vtn to VDD-Vtp ). Now, there is a short circuit path from VDD to VSS. This short circuit power is given by: Pshort-circuit = Vdd. Isc. t where, Vdd – Supply voltage, – Short-circuit current, t – Short-circuit time b) Switching power dissipation: This is the power dissipated during charging and discharging of total load [output capacitance + net capacitance + input capacitance of driven cell(s)]. The switching power is given by: Pswitch = α·VDD2 · Cload·f where, α – Switching activity factor, f – Operating frequency, VDD – Supply voltage & Cload – Load capacitance Common power reduction methods are: ● Reduce VDD, Cload, f, α ● Multi voltage design. ● Multi Vth cells (LVT, RVT, HVT cells etc). ● Cells with different drive strengths. ● Dynamic Voltage & Frequency Scaling (DVFS). ● Clock gating (switching power reduction). ● Multi-track cells can be used in a design. ● Multi-bit flipflops can be used. The power management techniques will start from the design specification stage, and are employed at each and every step of physical design flow. The below chart shows overview of power consumption at each stage. A design has sub-systems with various functionalities. While operating the system, the sub-functional blocks that are not necessary to function at a particular duration of time can be turned OFF. Similarly blocks that do not require high speed of operation can be slowed down by reducing the supply voltage. Some time, the sub-system’s functional performanance requirement varies from time to time (DVFS). All these power reduction methods add complexity to the design. UPF provides a universal low power design specification, usually written in Tcl language. The technique primarily focuses on dynamic power consumption (which is dominant at 90nm). Here comes the requirement of multi voltage designs (which requires level shifers between different voltage domains) As technology shrinks below 90nm, static power consumption has also become prominent. Here comes the requirement of power gating (which requires isolation cells to isolate a switching domain from an always on domain.) To control all these, a power management unit is used, which triggers control signals of low power cells as per requirement. The logical intent of the design is completely provided with the help of RTL code but its complicated to provide power information. Hence the power intent of the design is specified in UPF. Power management file will be built at the architecture level of design stage. This forms a complete description of the design. Various methods used for the power management are: ● Clock gating method (ICG) [logic intent of the design] ● Multiple height cells ● Multi-voltage design (MVD) ● Power shut-off (PSO) or Power Gating ● Multi-Vth design (MV) ● Dyamic voltage and frequency scaling (DVFS) 1. Clock gating method: It is logical intent of the design which is provided in RTL code. Suppose there are a group of flops meeting “min_bit_width”, having same load enable (data to these flops are constant), clock switching can be disabled during that time, thereby saving dynamic power to a great extent. Clock is made available only when the data changes. Clock gating is implemented using an ICG cell. Read more on clock gating in our synthesis blog. 2. Multi-Voltage design: As per the equation P = α C V2 f , as supply voltage is scaled down, power reduces to a great extent. Hence sub-systems that do not require higher speed of operation, can be operated at lower voltages, saving dynamic power. The design can have multiple voltages as per the performance requirement. Sub-systems that operate at different voltages have separate power domains, each having separate supply ports and nets. This technique requires level shifter when a signal is passed from one domain to another, based on requirement. There are two types of level shifters: ● Low to high ● High to low Whenever signal from low domain goes to high domain as input, there will not be full output swing available at the output of high domain. This is because signal from low domain changes the region of operations of devices in high domain. So, Low-to-high level shifter is used. Whenever signal passes from high to low domain, if the destination cell cannot withstand high voltage, then a H-L level shifter is inserted in that path. The level shifter can be in placed in source/ destination power domain or in default domain and it will take both the voltages (source domain voltage and destination domain voltage) for its operation. Power Gating : Whenever operation of sub-blocks are not required, there is a scope to shutdown voltage domains. This technique uses power switches to disable power. The power switches are MTCMOS. During normal operation, LVT is used (to reduce short circuit power) and during off mode, HVT is used (to reduce leakage power). Power switches are controlled by the power management unit. If the load is more, huge amount of in-rush current flows, to charge the internal capacitors. To reduce this, the power switches are enabled in a daisy chain fashion. In UPF, a power switch can be created by using the create_power_switch command. The following command creates a power switch for the example in figure. create_power_switch PDA_SWITCH -domain PDA -input_power_port {Vin VDD} -control_port {Cin SLEEP} -output_power_port {Vout VDD_GATED} -ack_port {Aout ACK !SLEEP} -ack_delay {Aout 100ns} -on_state {PDA_ON VDD !SLEEP} -off_state {PDA_OFF SLEEP} Options input_power_port, control_port and output_power_port does the port mapping for the power switch. Where as option domain specifies the power domain in which the power switch is created. This domain option is synopsys specific but not actually specified in IEEE 1801 standard. While other options like on_state, off_state, ack_port and ack_delay are used to model the power switch. The syntax of which are shown below, -ack_port {port_name net_name {boolean_function}} -ack_delay {port_name delay} -on_state {state_name input_supply_port {boolean_function}} -off_state {state_name {boolean_function}} These are required for low power verification. Another model of power switch internally have two separate switches one small and other large (also called mother daughter). Smaller switch is used during the power up. Once the circuit gets to certain voltage level the larger switch is turned ON for normal operation of the power domain logic cells. So two control signals are used for creating these type of power switches. create_power_switch PDA_SWITCH -domain PDA -input_power_port {Vin VDD} -control_port {CSin SLEEP1} -control_port {CLin SLEEP2} -output_power_port {Vout VDD_GATED} -ack_port {Aout ACK {!SLEEP1 & SLEEP2}} -ack_delay {Aout 100ns} -on_state {PDA_ON VDD !SLEEP2} -off_state {PDA_OFF SLEEP2} Similarly many different models of power switch can be specified. Apart from the two types of power switches some examples of different types of switches are Muxed switch: This type of power switch can function as a mux between two input power supplies which can be from different source or of different voltage. One control switch is used to control which of the two supplies are to be selected. Another control signal is used to gate the output supply. Mapping power switch: The supply nets specified in the create_power_switch should already exist in the design. Since the tool has to use a library cell to implement the power switch the designer can specify the library cell that should be used for the purpose by using map_power_switch command. An example is shown bellow, map_power_switch PDA_SWITCH -domain PDA -lib_cells mvlib/headswitch We must note that the domain specified in both create_power_switch and map_power_switch is the domain in which the power switch is to be placed. Isolation Cell : When a source domain (PD1) is in off-mode then its output pin has to be isolated from destination domain (PD2) to prevent invalid logic being propagated to PD2. Along with isolation it will save the short circuit power dissipation at the reciever cell. There are 2 types of isolation cell as per logic requirement: ● “Clamp to 0” cell (AND gate) ● “Clamp to 1” cell (OR gate) Retention Flop : Whenever a gated domain is turned off, the state of the flop needs to be retained with less leakage power. When gated domain is powered back on, the stored data can be used, rather than initializing again. This is achieved by using data retention flops. Retention flops contains a DFF and latch. It requires low power always-on supply to retain the data. This feature comes with the cost of Area of the device which is more compared to normal flop and An aditional power supply has to be provided which is low-voltage always ON. Always ON cell : Always on cells are special cells which are always turned-on irrespective of their placement in switching domain. They are used to drive the net which is passing from always on domain. Generally Always-ON buffers and inverters are used. We need to define the always on cells in the UPF file. 4. Multi-Vth design (MV) In a design, standard cells are provided with different flavors based on the threshold voltage. Variation in threshold voltage will affect the power consumption and timing hence these are used to optimize the power and timing issues. These cells are usually named as: ● HVT cells ● RVT cells ● LVT cells This table shows the characteristics of Multi-Vth cells. The area of all the flavours of a cell is always same. Only threshold voltage varies and hence power and delay. The design is synthesized with RVT and HVT cells but while optimizing LVT cells are used to meet the critical timing issues. 5. Dyamic voltage and frequency scaling (DVFS) This method is used to vary the voltage and frequency based on requirement. The voltage and/or frequency of the design can be scaled as per performance requirement. An advance method AVFS has been introduced where the feedback is provided to controller to decide voltage and/or frequency but it is very complex. Example: Consider the following design. This design consists of default with three different voltage domains APD1P2V, SPD1P0V and APD0P8V. ● APD1P2V – Always on power domain with 1.2V supply ● SPD1P0V – Switching power domain with 1.0V supply ● APD0P8V – Always on power domain with 0.8V supply ● LS_LH – Level shifter low to high ● LS_HL – Level shifter high to low ● ISO – Isolation cell ● RTF – Retention Flop ● PMU – Power management unit ● AON_BUF – Always on buffer There are various commands provided to specify UPF completely and it can be easily understandable by command itself, few of which are explained here to write UPF of above example. upf_version : As UPF have been modified stage by stage, it has different versions. So its necessary to provide version of upf being used to interpret the upf commands. upf_version [string] The version can be 1.0, 2.0 etc. Power Domain (PD) : A set of modules using a same voltage belongs a power domain. The command “create_power_domain” is used to define a power domain and its characteristics. UPF for the above Power Intent: #———- Create Power Domains ————–# create_power_domain TOP -include_scope create_power_domain APD1P2V -elements { TOP/mod1 } create_power_domain SPD1P0V -elements { TOP/mod2 } create_power_domain APD0P8V -elements { TOP/mod3 } #——– Supply Ports & Net Connections ————# create_supply_port VDD1P2 create_supply_net VDD1P2 -domain TOP create_supply_net VDD1P2 -domain APD1P2V -reuse connect_supply_net VDD1P2 -ports VDD1P2 create_supply_port VDD1P0 create_supply_net VDD1P0 -domain TOP create_supply_net VDD1P0 -domain SPD1P0V -reuse create_supply_net VDD1P0_SW -domain SPD1P0V #switching net connect_supply_net VDD1P0 -ports VDD1P0 create_supply_port VDD0P8 create_supply_net VDD0P8 -domain TOP create_supply_net VDD0P8 -domain APD0P8V -reuse connect_supply_net VDD0P8 -ports VDD0P8 create_supply_port VSS create_supply_net VSS -domain TOP create_supply_net VSS -domain APD1P2V -reuse create_supply_net VSS -domain SPD1P0V -reuse create_supply_net VSS -domain APD0P8V -reuse connect_supply_net VSS -ports VSS #———- Establish Connection ————-# set_domain_supply_net TOP -primary_power_net VDD1P0 -primary_ground_net VSS set_domain_supply_net APD1P2V -primary_power_net VDD1P2 -primary_ground_net VSS set_domain_supply_net SPD1P0V -primary_power_net VDD1P0 -primary_ground_net VSS set_domain_supply_net APD0P8V -primary_power_net VDD0P8 -primary_ground_net VSS #———- Shut-down Logic for Reciever ————# create_power_switfch POWER_SWITCH -domain SPD1P0V \ -input_supply_port {VDD1P0 VDD1P0}\ -output_supply_port { VDD1P0 VDD1P0_SW} \ -control_port {PMU/ps_en } \ -on_state {state_name VDD1P0 {!ps_en}} #———- Isolation Cell Setting ———–# set_isolation iso_out -domain SPD1P0V \ -applies_to outputs \ -isolation_power_net VDD1P0 -isolation_ground_net VSS \ -clamp_value 1 \ -isolation_signal PMU/iso_en \ -location default #———– Retention Logic for SPD ———-# set_retention RTF -domain SPD1P0V \ -retention_power_net VDD1P0 \ -retention_ground_net VSS \ -save_signal {PMU/rtf_en high} \ -restore_signal {PMU/rtf_en low} \ #——– Level Shifter for multi-VDD Domain ———# set_level_shifter LS_0P8_1P0 -domain SPD1P0V \ -applies_to inputs \ -location self \ -source APD0P8V.primary \ -input_supply_set APD0P8V.primary -output_supply_set SPD1P0V.primary set_level_shifter LS_1P0_1P2 -domain APD1P2V \ -applies_to inputs \ -location self \ -source SPD1P0V.primary \ -input_supply_set SPD1P0V.primary -output_supply_set APD1P2V.primary set_level_shifter LS_1P2_0P8 -domain APD0P8V \ -applies_to inputs \ -location self \ -source APD1P2V.primary \ -input_supply_set APD1P2V.primary -output_supply_set APD0P8V.primary set_level_shifter LS_0P8_1P2 -domain APD0P8V \ -applies_to inputs \ -location self \ -source APD0P8V.primary \ -input_supply_set APD0P8V.primary -output_supply_set APD1P2V.primary #———– Define Always ON Cell ————-# define_always_on_cell -cells AON_BUF \ -power_switchable VDD1P0_SW -ground_switchable VSS \ -power VDD1P0 -ground VSS #——— Create Power State Table ———–# Example-1 The following example creates a power state table, defines the states for the supply ports, and lists the allowed power states for the design. create_pst pt -supplies { PN1 PN2 SOC/OTC/PN3 } add_port_state PN1 -state {s88 0.88} add_port_state PN2 -state {s88 0.88} -state {s99 0.99} add_port_state SOC/OTC/PN3 -state {s88 0.88} -state {pdown off} add_pst_state s1 -pst pt -state { s88 s88 s88 } add_pst_state s2 -pst pt -state { s88 s88 pdown } add_pst_state s3 -pst pt -state { s88 s99 pdown } example-2 suppose you have power supplies VDD1 and VDD1sw, which operate independently from power supplies VDD2 and VDD2sw. The “sw” supplies can be switched on and off independently. You can specify the power states as follows, create_pst table -supplies { VDD1 VDD1sw VDD2 VDD2sw} add_port_state VDD1 -state {HV 1.2} add_port_state VDD1sw -state {HV 1.2} -state {OFF 0.0} add_port_state VDD2 -state {HV 1.2} add_port_state VDD2sw -state {HV 1.2} -state {OFF 0.0} add_pst_state s1 -pst table -state { HV HV HV HV } add_pst_state s2 -pst table -state { HV HV HV OFF } add_pst_state s3 -pst table -state { HV OFF HV HV } add_pst_state s4 -pst table -state { HV OFF HV OFF } Above mentioned design: add_power_state TOP.primary \ -state ON { -supply_expr {power == ‘ {FULL_ON, 1.0} && ground == ‘ {FULL_ON, 0.0 }} \ -simstate NORMAL } add_power_state APD1P2V.primary \ -state ON { -supply_expr {power == ‘ {FULL_ON, 1.2} && ground == ‘ {FULL_ON, 0.0 }} \ -simstate NORMAL } add_power_state SPD1P0V.primary \ -state ON { -supply_expr {power == ‘ {FULL_ON, 1.0} && ground == ‘ {FULL_ON, 0.0 }} \ -simstate NORMAL } -state OFF { -supply_expr {power == ‘ {OFF} && ground == ‘ {FULL_ON, 0.0 }} \ -simstate CURRUPT } add_power_state APD0P8V.primary \ -state ON { -supply_expr {power == ‘ {FULL_ON, 0.8} && ground == ‘ {FULL_ON, 0.0 }} \ -simstate NORMAL }