IntermediateQuestion 55 of 60Source: Synopsys IC Compiler II Multivoltage User Guide: Setting UPF Attributes on Ports and Hierarchical Cells; Synopsys PrimeTime User Guide: Multivoltage Design Flow

How do you tell the tools which supply drives or receives a top-level port?

From PDVerse Low-Power Physical Design Mentor Guide · pdVerse Mentor Guide

Short Answer

Use set_port_attributes (UPF) with -driver_supply on inputs and -receiver_supply on outputs to say which supply set drives or reads a top-level port; set_related_supply_net (UPF) does the same job with supply nets. The tools compare that supply with the domain on the inside to decide whether isolation or a level shifter is needed. Get it wrong and you get missing cells on real crossings, or extra cells on crossings that do not exist.

Technical Reference DiagramHow do you tell the tools which supply drives or receives a top-level port?
Precedence ladder for a top-level port related supply, top to bottom: set_port_attributes -ports (UPF), set_port_attributes -elements (UPF), set_related_supply_net (UPF), top domain primary supply; sensor_in resolves at the first rung to SS_SNS at 0.9 V.

Technical Explanation

  • Default: with nothing set, a top-level port is treated as powered by the primary supply of the top domain.
  • Driver vs receiver: -driver_supply describes the logic that drives the port; -receiver_supply describes the logic that reads it.
  • PT precedence: -ports attributes, then -elements attributes, then set_related_supply_net (UPF), then the top domain primary supply.
  • ICC2 black box input: HighConn -receiver_supply, then HighConn related supply net, then the same two at LowConn, then the domain primary.
  • ICC2 hard macro input: HighConn -receiver_supply, then HighConn related supply net, then the Liberty related_power_port of the pin.
  • Last wins: repeating set_port_attributes (UPF) on the same object overrides the earlier setting.
  • What breaks: an input really driven at 0.9 V but left on the 1.0 V default gets no level shifter, so its 1.0 V load sees a weak high.
# [UPF]  design.upf
create_supply_set SS_SNS -function {power VDD0p9} -function {ground VSS}
set_port_attributes -ports {sensor_in} -driver_supply SS_SNS
set_port_attributes -ports {irq_out} -receiver_supply SS_AON
# [ICC2]  icc2_shell
get_related_supply_set [get_ports sensor_in]
check_mv_design

What To Check

  • Every top-level input has a driver supply that matches its real source.
  • Outputs read by switchable or lower-voltage logic have a receiver supply.
  • get_related_supply_set (ICC2) returns the intended supply for each boundary port.
  • No port attribute is overridden by a later line on the same port.

Command Checks & Actions

UPF (design.upf)set_port_attributes -ports {sensor_in} -driver_supply SS_SNS

Declare the supply of the logic driving an input port

UPF (design.upf)set_port_attributes -ports {irq_out} -receiver_supply SS_AON

Declare the supply of the logic reading an output port

ICC2 (icc2_shell)get_related_supply_set [get_ports sensor_in]

Return the resolved related supply set of the port

ICC2 (icc2_shell)check_mv_design

Check isolation and level-shifter needs using the resolved supplies

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): sensor_in resolves to SS_SNS at 0.9 V, and one low-to-high level shifter sits between the port and U_PC.
  • Suspicious (illustrative): Several inputs resolve to the top primary supply by default; confirm each one really is driven at 1.0 V.
  • Hard stop: sensor_in resolves to SS_AON at 1.0 V while the sensor drives 0.9 V: no level shifter, and the load sees a weak high.

Common Mistake

The Trap: Leaving top-level inputs without a driver supply because the top domain is always on.

  • Inputs driven at another voltage, or from a source that can switch off, default to the top primary supply, so ICC2 skips the shifter or clamp they need.

What The Interviewer Is Testing

  • Do you know what supply a port gets when you say nothing?
  • Can you keep driver and receiver supply straight?

Follow-up Question & Model Response

"When would you use set_related_supply_net instead of set_port_attributes?"

Candidate Model Response: Both give a port a related supply, but set_related_supply_net names supply nets while set_port_attributes names a supply set. Older UPF files and PT scripts often use set_related_supply_net, and the PT guide says set_port_attributes can replace it. When both exist, the port attribute wins in the precedence order. Pick one style per design so a reader finds the supply in one place.

Practical Example

Design Scenario: (illustrative) MYCHIP input sensor_in comes from an external sensor running at 0.9 V. With no attribute it defaults to the PD_MYCHIP primary at 1.0 V, so ICC2 sees no voltage crossing. After set_port_attributes -ports {sensor_in} -driver_supply SS_SNS (UPF), get_related_supply_set (ICC2) returns SS_SNS, and create_mv_cells (ICC2) inserts a low-to-high level shifter between the port and U_PC. The shifter cell name LS_LH_X1 is illustrative.

Low-Power & UPF Handbook

Read the complete low-power guide library covering power domains, level shifters, isolation clamps, state retention, and UPF signoff verification.

Low-Power VLSI & UPF Handbook — nine chaptersLow-Power & UPFDomains, isolation, retention, and multivoltage UPF. →