• 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. Using external code in a pcell

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 143
  • Views 9691
  • 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

Using external code in a pcell

TZoltan
TZoltan over 3 years ago

I've created a layout pcell which reads in a list of coordinates from an external (python) program. It works well in virtuoso and in streamout from the virtual memory (from the menus of the Layout Editor), but fails when streaming out from the CIW, or from the DRC tool.

*WARNING* (DB-270002): ("eval" 0 t nil ("*Error* eval: undefined function" ipcBeginProcess))
...
Pcell evaluation failed for ... because the Pcell SKILL code contains either a syntax error or an unsupported XStream function.

The streamout is an independent process, which has no access to SKILL functions defined for the interactive graphical interface. This error seems related: it looks like that the `ipcBeginProcess` isn't defined in the stream-out environment. Is there any way to add the required function? Is it possible to start a system process (sh, python, etc.) and use its output in the streamout process?

Thanks,
Zoltan 

  • Cancel
  • skillUser
    skillUser over 3 years ago

    Hi Zoltan,

    > The streamout is an independent process, which has no access to SKILL functions defined for the interactive graphical interface. This error seems related: it looks like that the `ipcBeginProcess` isn't defined in the stream-out environment.

    Correct, 'Stream Out' only contains core SKILL functions and this with a prefix of abe, cst, db, dd, cdf, rod, tech, tx and a few specific 'pc' PCell functions (pcExprToString, pcFix, pcRound, pcTechFile).

    > Is there any way to add the required function?

    No.

    > Is it possible to start a system process (sh, python, etc.) and use its output in the streamout process?

    Possibly, but this is a terrible idea.  Interacting with an external process within a PCell is asking for problems, I would not recommend doing this at all.

    Please see "Safety Rules for Creating SKILL Pcells" in the documentation, that should help guide you.

    I expect that if you can write Python that you can most likely translate it into SKILL, and you should be able to learn SKILL if you understand another procedural language like Python.

    Best regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • TZoltan
    TZoltan over 3 years ago in reply to skillUser

    Hi Lawrence,

    I had consulted the "Safety Rules for Creating SKILL Pcells" many times, but it does not say such a thing explicitly, that no external processes can be used, though I surmised that this is an issue. 

    The streamout process fails even if the layout contains no pcell. Simply, the presence of an ipcBeginProcess function in the libInit.il breaks the streamout process. Is there any way to bypass it? I wish to keep the current  version of the pcell for a while.

    Thanks,
    Zoltan

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 3 years ago in reply to TZoltan

    Zoltan,

    No, since "ipc" is not one of the supported prefixes (as the documentation clearly states), it is simply not available in various database-only processes (such as dbAccess, streamout). The only workaround is to stream out from Virtual Memory within Virtuoso.

    Andrew

    • 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