• 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. ICFB SKILL script waiting for CDL IN to finish

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 145
  • Views 14876
  • 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

ICFB SKILL script waiting for CDL IN to finish

Michel Arendt
Michel Arendt over 11 years ago

Hello!

I have the following script which imports a layout into ICFB and then creates some pins on that layout.

The problem: the process of importing the layout begins and then the script tries to open it and create the pins before that process actually finishes. So what actually happens is that my ICFB is trying to open a layout that doesn't yet exists...

The question: Is there a way for me to detect when the layout importing process is finished?

I'm currently looking at the wait() function, but I don't yet grasp how to correctly use that command for this purpose.

The script itself is, currently, as follows (mind the ambient variables):

libName = ddCreateLib("'$destinationLibrary'")
libName->techLibName = "'$refLibList'"
cdlinGuiDisplay(  )
cdlInGuiForm->netlistFile->value = "'$cellName'"
cdlInGuiForm->outputLib->value = "'$destinationLibrary'"
cdlInGuiForm->topCell->value = "'$cellName'"
cdlInGuiForm->refLibList->value = "'$refLibList'"
cdlInGuiForm->devMapFile->value = "'$deviceMap'"
            hiFormDone( cdlInGuiForm )
deOpenCellView("'$destinationLibrary'" "'$cellName'" "layout" "maskLayout" list(list(0 0) list(500 600)) "a")
cv = geGetWindowCellView()
tdList = setof(shape cv~>shapes shape~>objType=="label")
foreach(label tdList
lblName = label~>theLabel
net = dbCreateNet(cv lblName)
rect = dbCreateRect(cv list("M1" "pin") list(0:0 .1:.1))
labelPos = listToVector(label~>xy)
labelPos[0] = labelPos[0]-.05
labelPos[1] = labelPos[1]-.05
labelPos = vectorToList(labelPos)
dbMoveShape(rect cv list(labelPos "R0" 1))
pin = dbCreatePin(net rect lblName)
)
leHiSave()
exit


Thanks in advance!
Michel 

  • Cancel
Parents
  • skillUser
    skillUser over 11 years ago

    Hi Michel,

    Stream Out/In is not intended for schematic export/import. The name "pipo" stands for Physical In, Physical Out, and it is for physical layout data.  For schematic export you could try EDIF, or you can also output plots of schematics, e.g. as a PostScript or other image format (depending on your version; the IC61x versions support more image formats).

    What are you trying to accomplish?  Your earlier post talks about CDL In but also import a layout, and then you mention importing a schematic in your more recent post...   In IC61x we have Spice In which is a more generic and configurable replacement for CDL In; if you can switch to IC615 or IC616 then you may find it easier to get good results.

    Perhaps if you can clarify exactly what you are trying to do, you may get better responses.

    Regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • skillUser
    skillUser over 11 years ago

    Hi Michel,

    Stream Out/In is not intended for schematic export/import. The name "pipo" stands for Physical In, Physical Out, and it is for physical layout data.  For schematic export you could try EDIF, or you can also output plots of schematics, e.g. as a PostScript or other image format (depending on your version; the IC61x versions support more image formats).

    What are you trying to accomplish?  Your earlier post talks about CDL In but also import a layout, and then you mention importing a schematic in your more recent post...   In IC61x we have Spice In which is a more generic and configurable replacement for CDL In; if you can switch to IC615 or IC616 then you may find it easier to get good results.

    Perhaps if you can clarify exactly what you are trying to do, you may get better responses.

    Regards,

    Lawrence.

    • 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