• 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 SKILL
  3. Add pins via skill to all symbols in lib

Stats

  • Locked Locked
  • Replies 11
  • Subscribers 143
  • Views 18067
  • 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 via skill to all symbols in lib

HoWei
HoWei over 5 years ago
I received an IP technology package from the foundry.
The package contains of:
- oa-lib with symbols only
- CDL/Spice netlist

Now I included the oa-lib with symbols and want to import the spice netlist into this library.
The problem is, that all the symbols do not have any supply pin - but the netlist has supply pins for each sub-circuits (e.g. VDD, VSS, VNW, VPW).
The import will fail as long this discrepancy exists.
One way to handle this discrepancy is to add the missing pins to the symbols via skill (there might be other options as well , line global nets, etc., but we would like to have additional pins for flexibility).
I would like to add a VDD pin on top and a VSS pin at the bottom of the symbol for each symbol in the library.

My questions:
1. My skill skills are rather nil, so I am asking if someone can send me a skill-code that I can use as a starter and customize to match my requirements ?

2. Can you share your experience with such IP import into Virtuoso (e.g. for standard-cells or GPIO libs) - is it the common way to do a lot of customization to the IP package ? I would expect to get symbols for the standard-cells for which you can just by the symbol tell if its an AND, NAND, INV, OR - but apparently this is not the case.
3. Is there any other option on how to import this netlist into the lib ?
Thanks
HoWei
  • Cancel
  • HoWei
    HoWei over 5 years ago

    There remains one more issue while saving a changed symbol view.

    When applying my skill-script (see below) to newly generated cells (e.g. testsymbol_org, testsymbol_org2) the script runs without any error.

    load("myskill_addonly")
    Pins will be added in: 632 testsymbol_org symbol
    debug: after open
    debug: before save
    debug: before reopen for read
    debug: before close
    t
    load("myskill_addonly")
    Pins will be added in: 632 testsymbol_org2 symbol
    debug: after open
    debug: before save
    debug: before reopen for read
    debug: before close
    t

    But when I apply the script to a copied cell, the following warning occures:

    load("myskill_addonly")
    Pins will be added in: 632 testsymbol_org_copy symbol
    debug: after open
    debug: before save
    *WARNING* (DB-260016): dbOpenBag: Unable to open property bag for 'symbol' in 'r' mode because the associated '/icd/proj/user_worklibs/users/uidn5147/sos/uidn5147_libs/wk_holger_generic/testsymbol_org_copy/symbol/data.dm' file is empty. Make sure the file is checked out correctly or remove the empty file.
    debug: before reopen for read
    debug: before close
    t

    The script still seems to work properly, but what does this warning mean ?

    My skill-code:

    libName= "wk_holger_generic"
    cellName="testsymbol_org_copy"
    viewName="symbol"

    printf("Pins will be added in: %d %s %s \n" viewCount cellName viewName )  
    cvId=dbOpenCellViewByType(libName cellName viewName "schematicSymbol" "a")
    printf("debug: after open \n")

    ;get the boundary Box of the symbol-view
    bBoxCoord=cvId~>bBox
    ;printf("bBoxCoord: %L \n" bBoxCoord)
    ;extract the symbol dimensions xy coordinates of the lower-left and upper-right corner
    llx=nth(0 nth(0 bBoxCoord))
    lly=nth(1 nth(0 bBoxCoord))
    urx=nth(0 nth(1 bBoxCoord))
    ury=nth(1 nth(1 bBoxCoord))
    ;printf("BBox ll_x: %f lly: %f urx: %f ury: %f\n\n" llx lly urx ury)
    ;define new pin height and width
    pinH=0.122
    pinW=0.0625
    ;calculate the pin coordinates and draw pin and label
    pinName="VDD"
    pinx= -0.25
    piny= ury+0.0625
    pinCoord= list( pinx-pinW/2:piny-pinH/2
      pinx-pinW/2:piny+pinH/2
      pinx+pinW/2:piny+pinH/2
      pinx+pinW/2:piny-pinH/2
      pinx-pinW/2:piny-pinH/2
      pinx+pinW/2:piny+pinH/2
      pinx-pinW/2:piny+pinH/2
      pinx+pinW/2:piny-pinH/2  
               )
    schDrawSymbolPin(cvId pinName "inputOutput" pinCoord)
    schCreateSymbolLabel(cvId pinx:piny-0.125 "pin name" pinName "centerCenter" "R0" "stick" 0.0625 "NLPLabel"  )

    printf("debug: before save \n")
    dbSave(cvId) ; save changes
    printf("debug: before reopen for read\n")
    dbReopen(cvId "r")  ;make readonly

    printf("debug: before close \n")
    dbClose(cvId)  ;close file

    • 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