• 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. Add pins and pin names quickly to symbol

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 126
  • Views 20349
  • 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

Add pins and pin names quickly to symbol

Tobben24
Tobben24 over 12 years ago

Hi,

 I really like the "Wire stubs and names" feature/function in the "Create" dropdown menu in Schematic Editor, but is there a similar way to add pins with pin names?

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    Not quite - there is a Create->Mapping Schematic which (sort of) does this - it's primarily intended to create a schematic which maps from one cell to another.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • SteveRFIC
    SteveRFIC over 9 years ago
    Andew,

    are you aware of any skill code that does this function? I have been searching but no luck yet.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    Which? The create wire stubs or create mapping schematic? There aren't any built-in procedural versions of either (only the functions that bring up the form). I did write this some time ago for creating wire stubs, but it's not terribly smart about the placement of the stub:

    /* abCreateWireStubs.il
    
    Author     Andrew Beckett
    Group      Custom IC (UK), Cadence Design Systems Ltd.
    Language   SKILL
    Date       Jul 07, 2000 
    Modified   
    By         
    
    Create wire stubs for any instance pin which has a net
    name, but no existing wire.
    
    ***************************************************
    
    SCCS Info: @(#) abCreateWireStubs.il 07/07/00.17:01:10 1.1
    
    */
    
    (procedure (abCreateWireStubs @key (cellView (geGetEditCellView)) (stub 0.03125)
                                  (labelJustify "lowerLeft") (labelOrient "R0")
                                  (labelFont "stick") (labelHeight 0.03125) (debug nil))
      (let (transform pinCentre wireEnd netName lineList)
           /* loop over all the instances which are not pins */
           (foreach inst (dbGetq cellView instances)
                    (when (equal (dbGetq inst purpose) "cell")
                          (setq transform (dbGetq inst transform))
                          /* Now go over each terminal, and each pin for that terminal */
                          (foreach instTerm (dbGetq inst instTerms)
                                   (foreach pin (dbGetq (dbGetq instTerm term) pins)
                                            /* If there isn't a piece of wire over the pin anyway
                                               add the stub */
                                            (unless 
                                             (dbGetTrueOverlaps 
                                              cellView
                                              (dbTransformBBox
                                               (dbGetq (dbGetq pin fig) bBox)
                                               transform
                                               )
                                              '("wire" "drawing")
                                              0
                                              )
                                             /* calculate the coordinates for the stub */
                                             (setq pinCentre
                                                   (centerBox 
                                                    (dbGetq (dbGetq pin fig) bBox)
                                                    ))
                                             (setq wireEnd
                                                   (list
                                                    (plus
                                                     (xCoord pinCentre)
                                                     (if (equal (dbGetq instTerm direction) "input")
                                                         (minus stub)
                                                         stub)
                                                     )
                                                    (yCoord pinCentre)
                                                    )
                                                   )
                                             /* transform them accordingly */
                                             (setq pinCentre (dbTransformPoint pinCentre transform))
                                             (setq wireEnd (dbTransformPoint wireEnd transform))
                                             (setq netName (dbGetq (dbGetq instTerm net) name))
                                             /* create the stub wire */
                                             (setq lineList
                                                   (schCreateWire 
                                                    cellView "draw" "" (list pinCentre wireEnd) 0.0 0.0 0.0)
                                                   )
                                             /* label it */
                                             (when (car lineList)
                                                   (schCreateWireLabel
                                                    cellView (car lineList) wireEnd netName 
                                                    labelJustify labelOrient labelFont labelHeight nil
                                                    ))
                                             (when debug
                                                   (printf "Added stub to %L for pin %L of %L\n"
                                                           (dbGetq (dbGetq instTerm net) name)
                                                           (dbGetq instTerm name)
                                                           (dbGetq inst name)
                                                           )
                                                   )
                                             )
                                            )
                                   )
                          )
                    )
           )
      )
    

    I've written other code to determine the side that a pin is on which could be combined with this to make it smarter about which direction it draws the wire - 

    Andrew Beckett
    Replied to: How to determine the direction of a wire out of a symbol pin in schematic
    Hi Michele, Here's a snippet of some code I've used to determine which edge the pin is on (it doesn't have a prefix, because it was a local function in a SKILL++ source file, so adjust it to suit your…
    By Andrew Beckett over 9 years ago in Cadence Technology Forums > Custom IC SKILL
     

    but I've never joined the two together. 

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • SteveRFIC
    SteveRFIC over 9 years ago

    Thanks a lot Andrew!

    I tried your script and it works pretty well. Probably someone took your code and integrated it in cadence, so now we have this function from the cadence menu :)

    What I was looking for was to add pins, with proper names. For instance, if I have a instance symbol in my schematic, I want to create a pin for each terminal of that symbol with the same name.

    I found a solution from the following page:

    https://groups.google.com/forum/#!topic/comp.cad.cadence/tQTCQot61Hk

    Thanks to all the people who share their knowledges.

    Gang

    • 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