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?
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.
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.
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).
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.
No, there’s no pcell-safe equivalent function for modify corners. Needless to say there is in PCell Designer!