Tuesday 27 September 2016

Does the state defined on Supply Set propagates to associated supply nets?

We defined a state on supply set through add_power_state command in UPF. Also the supply is having different function i.e power,ground,nwell,pwell . Let us understand this by example.


create_supply_set SS -function {power VDD} -function {ground VSS}
add_power_state SS -state {ON  –simstate NORMAL -supply_expr {(power == {FULL_ON 0.8})}

create_pst pst_1 -supplies {VDD}
add_pst_state  s1 -pst pst_1 -state {ON}


Typically many user write their UPF in above way . State "ON" is defined on Supply Set "SS" . But user uses this state name for "VDD" in PST table which associated with Supply Set "SS".

This is wrong usage as per UPF LRM. 

State which is defined on Supply Set is limited to Supply set only and not supposed to be propagated to associated supply net.

Now the question is why state should not be allowed to propagates on supply nets.

consider a below case.

create_supply_set ss_top
create_supply_set ss_pd1 -function {power ss_top.power}

add_power_state ss_top -state {ON  –simstate NORMAL -supply_expr {(power == {FULL_ON 0.8})}
add_power_state ss_pd1 -state {ON  –simstate NORMAL -supply_expr {(power == {FULL_ON 1.0})}

Here  ss_pd1.power is connected to ss_top.power.

If we allow propagating supply set state to supply nets . We have below issue .

With add_power_state used above user is trying to create state named "ON" with value 0.8 and 1.0 on same net. This is not possible as same net can not have different voltage value with same state name.

So this issue will get resolved if we do not propagates the state names to associated supply nets.

2 comments:

  1. can you please explain the difference b/w add_power_states and add_port_states

    ReplyDelete
  2. add_power_state is introduced in UPF2.0. Mainly it is used for supply set related . You can even use implicit supply sets for defining power/ground with add_power_state which can not be the case for add_port_state. So when you create your UPF at initial stage add_power_state is helpful.

    ReplyDelete