• 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. Blogs
  2. Digital Design
  3. How to Create a Repeating Power Switch Pattern with add…
Kari
Kari

Community Member

Blog Activity
Options
  • Subscribe by email
  • More
  • Cancel
CDNS - RequestDemo

Have a question? Need more information?

Contact Us
Low Power
Digital Implementation
addpowerswitch

How to Create a Repeating Power Switch Pattern with addPowerSwitch

9 Feb 2009 • 2 minute read

I mentioned in my last post that I'd been having lots of fun with power switches lately. One thing I learned how to do was to set up a regular pattern for my switch columns. My first stop for learning something new is always the documentation, but there are so many different options to the addPowerSwitch command that I asked one of our experts, Richard Chou, for help. Setting up a pattern is really quite easy!

Here is a basic addPowerSwitch command for creating switch columns with just one type of cell. This will put the same switch buffer cell on every row in the column:

addPowerSwitch -column \
                         -offPD PD_A \
                         -switchModuleInstance top_sw_mod \
                         -enablePinIn sw_en_in \
                         -enablePinOut sw_en_out \
                         -enableNetIn sw_in\[0\] \
                         -enableNetOut sw_out \
                         -leftOffset 8.4 \
                         -bottomOffset 0.0 \
                         -horizontalPitch 50.96 \
                         -globalSwitchCellName SWITCHBUFX16

Now, let's say you found that the switches are taking up a bit too much real estate or you need some more powerful switches to minimize IR-drop. Instead of the same switch buffer cell on every row in the column, you want every fourth row to be a switch buffer cell, and the rows in between to be non-buffer switch cells, which are smaller and source more current. This will set up a repeating pattern, starting at the bottom, of one switch buffer cell followed by three non-buffer switch cells:

addPowerSwitch -column \
                         -offPD PD_A \
                         -switchModuleInstance top_sw_mod \
                         -enablePinIn sw_en_in \
                         -enablePinOut sw_en_out \
                         -enableNetIn sw_in\[0\] \
                         -enableNetOut sw_out \
                         -leftOffset 8.4 \
                         -bottomOffset 0.0 \
                         -horizontalPitch 50.96 \
                         -globalSwitchCellName {SWITCHBUFX16 SWITCHX16} \
                         -globalPattern {SWITCHBUFX16 SWITCHX16 SWITCHX16 SWITCHX16}


Finally, let's say you had a really complicated pattern you wanted to implement. Something like one switch buffer, three switch, one switch buffer, two switch, two switch buffer, three switch. (Hey, it could happen!) That -globalPattern argument is going to get pretty long and unreadable, right? Well, it doesn't have to. You can assign a cell id to each type of cell you're using, then use these cell ids as a kind of shorthand in creating the pattern, like this:

addPowerSwitch -column \
                         -offPD PD_A \
                         -switchModuleInstance top_sw_mod \
                         -enablePinIn sw_en_in \
                         -enablePinOut sw_en_out \
                         -enableNetIn sw_in\[0\] \
                         -enableNetOut sw_out \
                         -leftOffset 8.4 \
                         -bottomOffset 0.0 \
                         -horizontalPitch 50.96 \
                         -globalSwitchCellName {{SWITCHBUFX16 SB1} {SWITCHX16 S1}} \
                         -globalPattern {SB1 S1 S1 S1 SB1 S1 S1 SB1 SB1 S1 S1 S1}


I think you could also do this, but the previous example looks cleaner in a script, at least to my eye:

                         -globalPattern {SB1 {S1 * 3} SB1 {S1 * 2} {SB1 *2} {S1 * 3}}

Anyone out there have some interesting switch patterns they've been playing with? Let me know in the comments.


CDNS - RequestDemo

Try Cadence Software for your next design!

Free Trials

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

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