• 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. compiling libInit.il procedures into p-cells

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 144
  • Views 13212
  • 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

compiling libInit.il procedures into p-cells

mtwadeCU
mtwadeCU over 11 years ago

Is there a way to force a compiled p-cell to encapsulate the procedures it was originally compiled with? I am working with a collaborative team that spans many sites, and we need to share our p-cells. However, these p-cells and associated procedures are under active development, and they pretty much stay under active development until tapeout. So there are situations where the compiled p-cell libraries can be fully synced between sites, but the procedures defined in the libInit.il can be slightly out of sync which can slightly change the behavior of p-cells between sites.

Is there a clean way to avoid this? It would be great if the compiled p-cell had all necessary functions already defined inside of it and was a fully standalone p-cell.

Thanks,
Mark 

  • Cancel
  • theopaone
    theopaone over 11 years ago

     Without an adequate implementation of namespaces, this is not a simple task. IC616 added namespaces but remarks on this page say they are not well tested.

    The problem is that the lower level functions which are loaded in the libInit.il all exist in the same namespace. Thus, myFunction() from 3 weeks ago cannot exist alongside myFunction() with changes from yesterday. Users developed lots of work arounds for this including naming each function with the version to be used, version1_2_myFunction(), and calling that name. It means that the pcell contains the specific names for the function versions or the version name is passed as a parameter and the function calls concatenate the version and name and then use eval/evalstring/apply to execute the proper version of the function. Pretty messy but version1_2myFunction can exist parallel with version1_3myFunction. This is the methodology used by PAS (PDK specific naming) and is usually implemented by the PDK generation tool.

    Another way I have experimented with is to create methods which dispatch on the version name (something SKILL and Lisp can do but most other languages cannot). The version is a parameter on the pcell and the method checks the version number during dispatch. The latest version is always called by generic function so if nothing matches, the latest version is used. It tested out with some simple examples.

    I hope they get namespaces fixed as it will put an end to all this sillyness.

     Ted

    • 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