• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Digital Implementation
  3. CPF - two primary_power_nets for one power domain (different...

Stats

  • Locked Locked
  • Replies 0
  • Subscribers 91
  • Views 3297
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

CPF - two primary_power_nets for one power domain (different virtual power domains for different voltage sites of an IP block)

manpmanp
manpmanp over 7 years ago

Hi there!

Cadence innovus 16.13  | CPF v1.1 | ST Microelectronic 28nm

I am working on a Multiple power domain design. I have got a PLL block as an IP (no access inside the block of course) and this PLL block according to its vendor datasheet consists of two separate domain:

  1. an internal analog part with 1.8V
  2. an internal digital part with 0.9

I need to put this whole IP block in one domain for instance PD_PLL. However, since there are two separate analog and digital parts in the IP block, no update_power_domain  -primary_power_net can be used for the whole PD_PLL. Therefore, I used two virtual power domain in my CPF file. This is an excerpt of the whole lines of CPF file:

  • define_library_set -name lib_0_80V_12t_lvt_lp_tc -libraries AND ALL OTHER LIBRARY SETS
  • define_level_shifter_cell ALL NECESSARY CELLS

  • create_power_nets  -nets {VDD_LEVELSHIFT}   -voltage 0.80:1.20
  • create_power_nets  -nets {AVDD_PLL}         -voltage 1.8
  • create_power_nets  -nets {DVDD_PLL}         -voltage 0.9
  • AND ALL OTHER NETS ...

  • create_power_domain   -name PD_PLL             -instances ...
  • create_power_domain   -name PD_LEVELSHIFT      -instances ...

  • # Creating virtual power Domain for analog and digital parts of PLL to assign primary power_nets
  • create_power_domain -name PD_DPLL
  • create_power_domain -name PD_APLL

  • create_level_shifter_rule     -name lsr_pad_pllout -pins {ChipTop_1/LevelShiftDomain_1/INFOUT*} -from PD_DPLL -to PD_LEVELSHIFT
  • update_level_shifter_rules    -names lsr_pad_pllout     -location to

  • create_nominal_condition   -name cond_high_lvt_lp_12t_0v80   -voltage 0.80
  • update_nominal_condition   -name cond_high_lvt_lp_12t_0v80   -library_set "lib_0_80V_12t_lvt_lp_tc"
  • and for all other voltages

  • create_power_mode -name PM_0v80 -domain_conditions {PD_SRAM0@cond_high_lvt_lp_12t_0v80 \
  • create_global_connection

  • create_global_connection -domain PD_PLL          -net AVDD_PLL          -pins avddpll1v8
  • create_global_connection -domain PD_PLL          -net AGND_PLL          -pins agndpll1v8
  • create_global_connection -domain PD_PLL          -net DVDD_PLL          -pins dvddpll0v9
  • create_global_connection -domain PD_PLL          -net DGND_PLL          -pins dgndpll0v9
  • update_power_domain -name PD_DEFAULT      -primary_power_net VDD_DEFAULT     -primary_ground_net GND   -pmos_bias_net VDDS_LVT -nmos_bias_net GNDS_LVT
  • # update virtual power domains for PLL
  • update_power_domain -name PD_DPLL -primary_power_net DVDD_PLL -primary_ground_net DGND_PLL
  • update_power_domain -name PD_APLL -primary_power_net AVDD_PLL -primary_ground_net AGND_PLL

The problem happens when I want to transfer signals from 0.90V section to a levelshifter for voltage upscaling. after commiting the CPF file, the following come from CPF commit generated report:

**WARN: (IMPCPF-2204):    Cannot get the primary power net for the power domain PD_PLL, using first power net DVDD_PLL specified in connections as primary power net.

**ERROR: (IMPCPF-261):    line 735: create_level_shifter_rule lsr_pad_pllout: Cannot insert a level shifter instance to drive a net from power domain PD_DPLL to power domain PD_LEVELSHIFT, with a valid location in power domain to. The valid cell for this rule was not found. Ensure that the location specified in update_level_shifter_rule is identical to the 'valid_location' option specified by define_level_shifter command.

How I can assign two separate power domains to different voltage sites in an IP block and later assign them their respective primary_power_nets and avoiding any problem like the above which doesnt let the tool to add the necessary level shifter cells in PD_LEVELSHIFT for upscaling the signals coming from 0.90V part.

Regards

  • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information