Friday 7 October 2016

How connect_supply_net command used to override default PG pin connection of any cell

By default any logic/cell in the given by power domain will use the domain primary supply to power that logic. To override this default rule user can explicitly write connect_supply_net command to connect the any specific PG pin of the cell with needed supply net in UPF.

Let us understand this with example.
Why this is needed . Consider a level shifter cell , which has 2 power net. Now connecting both the power net to a domain primary power net will end up in electrical problem. So one PG pin can be connected to domain primary power net which will be by default. For another PG pin we can use connect_supply_net command to connect it to a required supply net in UPF.



Design :


module top (in1,..);

LS_CELL i_ls (.A(in1),.Z(w1));

endmodule

UPF:

create_supply_net VDD
connect_supply_net VDD -ports {i_ls/VDD1}

What is Power Domain in UPF?

Power Domain is common term used in UPF language. Power Domain is abstract way to include the instances/block . Instances/block that shares the same supply should be included in one power domain.  At the end all design instances should be part of any Power domain . Also one instance can not be part of more than one power Domain. If user has not included any instance in any Power Domain using create_power_domain command then it will be a part of it's ancestor's Power Domain.

Defining Power Domain is necessary to implement all Low Power checks.

Let us consider below example .

In My Soc I have three block.i.e Block1 , Block2, Block3 .

Now in order to do low power checks on this Soc , Based on the architectural level details i.e which block can work on what voltage and when any block can be shutoff , User needs to create power domains as a starting point in UPF.

Let us say as per spec Block1 and Block2 will always operate on same voltage then I can place them in 1 power Domain .And As Block 3 can operate on different voltage and can be shutoff independently I will put in other domain.

And TOP block where all of this block will be instantiated will be placed in 1 domain.

This can be coded in UPF as below.

UPF code:

create_power_domain TOP -elements {.}
create_power_domain PD1 -elements {Block1 Block2}
create_power_domain PD2 -elements {Block3}


This way you can partition your design instances in separate power domain based on the power specification .