• 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. Merging and creating new shapes in PCell

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 143
  • Views 16303
  • 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

Merging and creating new shapes in PCell

Miguel V
Miguel V over 6 years ago

Hello,

I've tried to research as much as I could but I have a PCell which creates certain ROD shapes.  Once all of those shapes are created, I wanted to merge them to create one new single ROD object which I could then use as the basis to create additional shapes with different sizing on different layers.  I can get the shapes to merge using leMergeShapes(pcCellView~>shapes) but that just returns the list of merged shapes.  How can I use this to create a new ROD object which I can then use with rodCreatePolygon() and using the ?fromObj setting?  

Thanks,

Miguel

  • Cancel
Parents
  • skillUser
    skillUser over 6 years ago

    Hi Miguel,

    You should NOT use functions like 'leMergeShapes" in a PCell, you will need to use low-level db functions. The recommendations / rules for 'safe' PCell building state that functions should begin with prefixes like tech, db, rod and a couple of pc functions but should not use any application-specific code like ge* or le* prefix functions.  Perhaps you can use dbLayer functions, or abe* functions to merge shapes. However it may be better to see if you can create the 'base' shape directly yourself (e.g. rodCreatePolygon) and then the following steps should be straightforward.

    Best regards,

    Lawrence.

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

    Hi Miguel,

    You should NOT use functions like 'leMergeShapes" in a PCell, you will need to use low-level db functions. The recommendations / rules for 'safe' PCell building state that functions should begin with prefixes like tech, db, rod and a couple of pc functions but should not use any application-specific code like ge* or le* prefix functions.  Perhaps you can use dbLayer functions, or abe* functions to merge shapes. However it may be better to see if you can create the 'base' shape directly yourself (e.g. rodCreatePolygon) and then the following steps should be straightforward.

    Best regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Miguel V
    Miguel V over 6 years ago in reply to skillUser

    Hi Lawrence,

    Thank you for the reminder.  I will see if I can find a dbLayer function that works for me.  Is there a function to stretch rod polygons in a certain dimension or will a regular stretch work?  I can define a polygon with points and call it using rodCreatePolygon() ?fromObj, but I want to be able to either stretch it in the x or y direction.   

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to Miguel V

    Hi Miguel,

    There aren't functions to stretch a rod object, and you can't use the layout editor stretch functions for the same reasons Lawrence mentioned above.

    The methodology for creating SKILL PCells is that you either compute the shapes you want up front (and maybe align them using the rodAlign function if using ROD), or you could use a tool such as Cadence PCell Designer which allows a way of using higher level operations to capture the edits you want to make to your shapes (merge, stretches, copies and many other high level functions).

    I created a link to the PCell Designer product - if you are interested to explore this further, please contact your account team (the account team can contact me for more details too if they need it).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Miguel V
    Miguel V over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    I looked at it but I think I found away around my issue.  Is there a safe function similar to leModifyCorner() I can use?  Or will I have to overlap triangles on the corners and use dbLayerAndNot() to get a shape with 45 degrees on the corners.  Thanks.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to Miguel V

    No, there’s no pcell-safe equivalent function for modify corners. Needless to say there is in PCell Designer!

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Miguel V
    Miguel V over 6 years ago in reply to Andrew Beckett

    Lol, ok I get it.  I will see if I can submit a request for a quote.  Thank you.

    • 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