• 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. How to rotate subrects defined in the rodCreateRect?

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 143
  • Views 15232
  • 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

How to rotate subrects defined in the rodCreateRect?

Renee
Renee over 14 years ago

Hi,

I want to build a cross-shape resistor pcell using skill.

When I build the horizontal contacts of resistor, I use rodCreateRect function. When I try to build the vertical contacts within the function body,  I find that I could not rotate these arrays 90 degree clockwise about origin except that defining the other rodCreateRect subject vertically.

Is there any other settings within rodCreateRect or other functions that I could use to solve this problem?

 Thanks in advance!

Lei

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    Hi Lei,

    I'm pretty unclear to what your problem actually is. Perhaps you can illustrate it with some code snippets (and maybe some pictures)?

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Renee
    Renee over 14 years ago

    Hi,

    The schematic of a cross-shape resistor is attached.

    I would like to use a function such as rodCreateRect to build both the horizontal and vertical contacts (CT) at the same time.

    In the definition of rodCreateRect:

    rodCreateRect(

    ?layer Ndiff

    ...

    ?elementsX 2

    ?elementsY 2

    ?spaceX ..

    ?spaceY ..

    ...)

    If I write the program like this, I could only get the horizontal CTs correctly, and the vertical CTs would be right if got rotate to 90 degree.

    • cross.JPG
    • View
    • Hide
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    Can't you just call rodCreateRect() twice, for the two sets of rectangles? Or am I misunderstanding something?

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Renee
    Renee over 14 years ago

    Indeed, I could do that, however, it is only useful for simple contacts. If I want to add some metal connections through these contacts and each of them are of different direction(I mean each contacts and its connections are rotated to 90 degree clockwisely), then I have to call the function 4 times which is not efficient at all(since all these figures are the same).

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    I think I may now understand what you're saying - you want to do the rodCreateRect() with ?subRectArray specified, and then do a dbMoveFig() on the master rectangle to rotate it? (a code example would have made this much simpler to guess). If so, the problem is that the subRects do not rotate.

    I think the only way you can do that is:

    shapes=cons(rodId~>dbId rodId~>subShapes)
    rodUnNameShape(rodId)
    foreach(shape shapes dbMoveFig(shape cvId list(0:0 "R90")))

    In other words, you have to do a rodUnNameShape and then manipulate the individual objects that have been produced.

    I suggest you log a service request to see if a "ROD" way of doing this can be added which keeps it as a ROD object.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Renee
    Renee over 14 years ago

    Hi Andrew,

    Thank you so much for your suggestion! It helps.

    I used dbCopyFig instead of dbMoveFig since I would like to keep the original figures and make another copys.

    Again, thanks.

    Lei

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Renee
    Renee over 14 years ago

    shapes=cons(rodId~>dbId rodId~>subShapes)
    rodUnNameShape(rodId)
    foreach(shape shapes dbMoveFig(shape cvId list(0:0 "R90")))

     

    I have tested the above program on different icfb platforms:

    For IC 5.10.41-USR5.92.69, it works fine.

    For IC 5.10.41.169, it fails.

    I do not know how to fix this problem.

     

    Thanks!

    Lei

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    Lei,

    Given that 5.10.41.169 is the "Base" release of IC5141, released nearly 7 years ago, I suspect that what you're seeing is a bug in that release (I didn't try it). Using such an old base release without taking advantage of any of the 6 Update releases or 147 hotfixes there have been in the last 6.75 years makes little sense anyway...

    Even USR5 is nearly 4 years old...

    I think that the SKILL code is correct.

    Regards,

    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