• 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. Custom IC Design
  3. Issues with pin connectivity in Layout

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 125
  • Views 24781
  • 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

Issues with pin connectivity in Layout

DavideP
DavideP over 9 years ago

Hi,

I am working on a design using Virtuoso IC6.1.6.500, and I am having some trouble with pin connectivity on a cell.

My cell layout is basically arranged in a rectangle with a GND strap in the middle, and two VDD straps at top and bottom. I want to place two VDD pins in the layout rather than connecting them together. Looking at the documentation ("Using Connectivity" section of the Layout L user guide), it seems what I need is to create a "must connect" pin group.

I have tried creating a second VDD pin and then following the instructions provided in the user guide ("Using Connectivity" -> "Defining Must Connect Pins"), but this method seems to change the pin's net from VDD to (e.g.) mustConnect_1_VDD. I then get a marker on the pin stating: "Warning: Illegal Must-Join Connection between a pin figure (a rectangle on 'metal1 drawing' on net 'mustConnect_1_VDD') of terminal 'mustConnect_1_VDD' and a rectangle on 'metal1 drawing' on net 'VDD'."

Additionally, LVS complains about having an open circuit on VDD, that the top level port name VDD has already been used on another net, and that there is one extra net and one extra pin compared to the schematic (which has only one VDD pin and net), with some devices being connected to the "wrong" net.

I then found a thread on the forum (community.cadence.com/.../1321872 and tried the solution posted there. Now LVS no longer complains about a top level port name being already used, as that solution says to give the terminal a different name, but I still get the "illegal must-join" marker and all other LVS errors.

Is what I am trying to get (two layout pins corresponding to a single schematic pin/net) doable? If so, does anyone have a suggestion about what I am doing wrong? Or do I need to go back to the schematic and create two VDD1 and VDD2 nets with separate pins and everything?

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    I just tried this - it should work. However, there are some provisos which probably depend on the physical verification tool you're using.

    I had the two VDD pins that I wanted to be must connect. I then used Connectivity->Pins->Must Connect and then followed the instructions - first I selected one of the two pins (to get the net information) and then at the next prompt selected both pins (I clicked on one and then shift click the other). In the navigator it did indeed show one of the terminals as renamed to mustConnect_1_VDD - that's what I'd expect. I didn't get the marker you mentioned. Using Connectivity->Pins->Pin Connectivity Setting showed the grouping too. 

    I can't really see how that would happen - it suggests that it's got a must join attribute to a shape rather than a pin figure.

    It's correct that the terminal would be renamed (and the net) - this is because when you have a must connect, they're not actually joined inside and so they're implemented as separate nets. The must join attribute tells the level above that it needs connecting.

    Can you try running this code:

    procedure(abPinInfo(@optional (cellView geGetEditCellView()))
      foreach(term cellView~>terminals
        printf("TERM %L NAME %L MUSTJOIN %L PHYSONLY %L\n" term term~>name term~>mustJoinTerms term~>physOnly)
        foreach(pin term~>pins
          printf(" PIN %L NAME %L\n" pin pin~>name)
          foreach(fig pin~>figs
            printf(" LAYER %L CENTER %L\n" fig~>lpp centerBox(fig~>bBox))
          )
        )
      )
      t
    )

    Load it and then just call abPinInfo() with the window current.

    Also, which subversion of Virtuoso are you using? Type getVersion(t) in the CIW to find out (or it's on the Help->About window).

    There should be no need to change the schematic to support this.

    Note that for LVS, it may not know about the connectivity attribute unless it's working from the OA database. Often you have to tell LVS tools about virtual connections in other ways (the common convention from Dracula days which has been carried forward into many tools is to label the "pin" with a name that ends in a colon (e.g. "VDD:") to indicate this virtual connection). You didn't mention which LVS tool you're using, so can't really be sure what the issue might be there.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    I just tried this - it should work. However, there are some provisos which probably depend on the physical verification tool you're using.

    I had the two VDD pins that I wanted to be must connect. I then used Connectivity->Pins->Must Connect and then followed the instructions - first I selected one of the two pins (to get the net information) and then at the next prompt selected both pins (I clicked on one and then shift click the other). In the navigator it did indeed show one of the terminals as renamed to mustConnect_1_VDD - that's what I'd expect. I didn't get the marker you mentioned. Using Connectivity->Pins->Pin Connectivity Setting showed the grouping too. 

    I can't really see how that would happen - it suggests that it's got a must join attribute to a shape rather than a pin figure.

    It's correct that the terminal would be renamed (and the net) - this is because when you have a must connect, they're not actually joined inside and so they're implemented as separate nets. The must join attribute tells the level above that it needs connecting.

    Can you try running this code:

    procedure(abPinInfo(@optional (cellView geGetEditCellView()))
      foreach(term cellView~>terminals
        printf("TERM %L NAME %L MUSTJOIN %L PHYSONLY %L\n" term term~>name term~>mustJoinTerms term~>physOnly)
        foreach(pin term~>pins
          printf(" PIN %L NAME %L\n" pin pin~>name)
          foreach(fig pin~>figs
            printf(" LAYER %L CENTER %L\n" fig~>lpp centerBox(fig~>bBox))
          )
        )
      )
      t
    )

    Load it and then just call abPinInfo() with the window current.

    Also, which subversion of Virtuoso are you using? Type getVersion(t) in the CIW to find out (or it's on the Help->About window).

    There should be no need to change the schematic to support this.

    Note that for LVS, it may not know about the connectivity attribute unless it's working from the OA database. Often you have to tell LVS tools about virtual connections in other ways (the common convention from Dracula days which has been carried forward into many tools is to label the "pin" with a name that ends in a colon (e.g. "VDD:") to indicate this virtual connection). You didn't mention which LVS tool you're using, so can't really be sure what the issue might be there.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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