• 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. Assura DRC not recognising pins

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 126
  • Views 13795
  • 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

Assura DRC not recognising pins

simbamford
simbamford over 15 years ago

 Hi,

In Virtuoso Layout (L or XL) I can place a label on my design using the appropriate layer (for example I can put a label of layer "PIN" purpose "metal1" over a part of a net which is layer "Met1" purpose "drawing") and assura DRC will recognise this as a pin. However, if I use Create -> Pin, this creates a square (which I set to be of the appropriate pin layer), optionally with a label associated with it. If I place this square over the same place, it is not recognised by DRC as a pin. It would be very convenient if I could get these symbolic pins recognised as pins because then Layout XL will generate them for me automatically.

Here are the appropriate layer definition lines from my drc.rul file:

;; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;; text layer
;;
   POLY1_pintext = textToPin( "PIN"  type( "poly1"))
   MET1_pintext = textToPin( "PIN"  type( "metal1"))
   MET2_pintext = textToPin( "PIN"  type( "metal2"))
   MET3_pintext = textToPin( "PIN"  type( "metal3"))
   MET4_pintext = textToPin( "PIN"  type( "metal4"))
   PAD_pintext = textToPin( "PIN" type( "pad"))
;;
;; symbolic pins for macro LVS and RCX
;;
   POLY1_sympin = pinLayer( "PIN" type( "poly1"))
   MET1_sympin = pinLayer( "PIN" type( "metal1"))
   MET2_sympin = pinLayer( "PIN" type( "metal2"))
   MET3_sympin = pinLayer( "PIN" type( "metal3"))
   MET4_sympin = pinLayer( "PIN" type( "metal4")) 

;; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;; pinPurpose layer (only drc)
;;
   POLY1_pinPurpose = layer( "PIN" type( "poly1"))
   MET1_pinPurpose = layer( "PIN" type( "metal1"))
   MET2_pinPurpose = layer( "PIN" type( "metal2"))
   MET3_pinPurpose = layer( "PIN" type( "metal3"))
   MET4_pinPurpose = layer( "PIN" type( "metal4"))
   PAD_pinPurpose = layer( "PIN" type( "pad")) 

I guess that only the first set, the "_pintext" variables are being interpretted as pins. If so, I guess there are two possible solutions - one would be to change the rule file to also recognise the squares as pins; the other to somehow get the labels associated with the symbolic pins recognised as text labels.

Regarding the first option, I tried changing the "textToPin" function to the "layer" function but this actually caused a segmentation fault in assura drc.

Regarding the second option, it's not clear to me what the relationship is between the symbolic pin and its associated label, and why those labels are not recognised by assura? If I could copy those labels to make them independent of the symbolic pins I'd have a reasonably simple solution but I don't seem to be able to do this? I guessed that the relationship between the pin and its label was a paren/child relationship so I tried using edt -> advanced -> attach/detach to detach the label from the pin. After this the label didn't move when the pin moved (unlike before) but nevertheless (a) when I delete the pin the label is also deleted, and (b) I cannot copy the label.

 Any advice would be gratefully appreciated.

Thanks

Sim Bamford

  • Cancel
  • Quek
    Quek over 15 years ago

    Hi Sim Bamford

    DFII pins are recognized by Assura as follows:

    "pinLayer" cmd captures the pin shapes. "pinText" cmd reads the pin names. E.g. to have a symbolic (PIN, MET1), you would need to have:

    a. A symbolic pin on layer "PIN" and purpose "MET1"

    b. The following cmds should be in layerDefs section:
    MET1_sympin=pinLayer("PIN" type("MET1"))
    MET1_sympinText=pinText("PIN")
    ...
    geomConnect(
       ...
       label(MET1_sympinText MET1_sympin)
       ...
    )

    Please see solution 11498414 for more details on the various pin related cmds. Your rule deck has chosen to use different layer purposes to differentiate the pins. This would actually create a problem because it would not be possible to differentiate the pin text. Normally, we have something similar to:

    m1pin=pinLayer("Metal1" type("pin"))
    m1pintext=pinText("Metal1")
    m2pin=pinLayer("Metal2" type("pin"))
    m2pintext=pinText("Metal2")
    ...

    Best regards
    Quek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • simbamford
    simbamford over 15 years ago

     Thanks very much :)

    • Cancel
    • Vote Up 0 Vote Down
    • 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