• 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. Recommended best practice for a User Interface GUI to control...

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 143
  • Views 13784
  • 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

Recommended best practice for a User Interface GUI to control a pCell?

codetonic
codetonic over 8 years ago

I have a power grid pcell with stretch handles for width and height.

I also want to have a GUI for controlling the layer levels such as bottom most layers, top most layers, etc. 

The "Edit Instance Properties" (instance query) could work but it doesn't seem very elegant.

What is the best way to implement the user interface? In the code body of the pcell or as a standalone skill program?

  • Cancel
Parents
  • skillUser
    skillUser over 8 years ago
    Hi Michael,

    The PCell can/should only be affected by its parameters, so you should create new parameters for the top-most and bottom-most layer(s) - these can be made to be presented as cyclic parameters for ease of entry for the user, but they will be string parameters (radio and cyclic CDF fields result in a string value). The PCell 'engine' can be a procedure that accepts all of the relevant parameters and creates the appropriate output. Call this procedure from inside the pcDefinePCell statement. Then the 'engine' can be tested separately, outside of the PCell environment - this is very handy for testing, development and debugging. This method is called 'encapsulation'. I quite often create the CDF parameters FROM the PCell parameters so that they are in sync, but at the very least I would recommend coding the CDF alongside the PCell itself so they tie together well.

    In short though, the PCell is controlled by its parameters, so you will need parameters to control the layers.

    I hope that this helps you.

    Best regards,

    Lawrence.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • skillUser
    skillUser over 8 years ago
    Hi Michael,

    The PCell can/should only be affected by its parameters, so you should create new parameters for the top-most and bottom-most layer(s) - these can be made to be presented as cyclic parameters for ease of entry for the user, but they will be string parameters (radio and cyclic CDF fields result in a string value). The PCell 'engine' can be a procedure that accepts all of the relevant parameters and creates the appropriate output. Call this procedure from inside the pcDefinePCell statement. Then the 'engine' can be tested separately, outside of the PCell environment - this is very handy for testing, development and debugging. This method is called 'encapsulation'. I quite often create the CDF parameters FROM the PCell parameters so that they are in sync, but at the very least I would recommend coding the CDF alongside the PCell itself so they tie together well.

    In short though, the PCell is controlled by its parameters, so you will need parameters to control the layers.

    I hope that this helps you.

    Best 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