rodCreateHandle

Discussion in 'Cadence' started by lokeshraje, May 28, 2009.

  1. lokeshraje

    lokeshraje Guest

    Hi,
    I'm stuck with the following code, Help needed Please........

    I'm trying to align two instances using "rodAlign" command.(I referred
    "celltut" and "rodUser" manuals).I have given the sequence in which i
    created the cde:

    ;This is a code to get the ROD Object ID of a selected object
    procedure(getRODobj()
    cvId = deGetCellView()
    dbId = car(geGetSelectedSet(cvId))
    rodId = rodGetObj(dbId)
    );proc

    ;After running the above procedure i got the ROD object ID's of the
    two instances as follows:
    obj1=getRODobj()
    obj2=getRODobj()

    ;Then i created a user defined Handle for the second ROD object
    rodCreateHandle(
    ?name "rightCenter"
    ?type "point"
    ?value obj2~>cR ;This i have used to get the midpoint of the right
    side of the instance
    ;the idea behind doing this is to align the "obj1" and "obj2" in such
    a way that the "rightCenter" of obj2 is aligned to "centerLeft" of
    obj1
    ?rodObj obj2
    ) ; end rodCreateHandle

    ;to align two ROD objects
    rodAlign(
    ?alignObj obj2
    ?alignHandle "rightCenter";this should be the user defined handle
    ?refObj obj1
    ?refHandle "centerLeft"
    ?maintain t
    ?xSep 0
    ?ySep 0
    )

    By this i expected that the two ROD objects will be aligned with their
    boundaries touching each other...But in the layout they are not
    aligned and are separated quite far(approximately 70micrometer far)

    Can any body help me understand what is happening and what's the
    mistake that I'm doing...

    Regards,
    Lokesh rajendran
     
    lokeshraje, May 28, 2009
    #1
  2. lokeshraje

    I-F AB Guest

    Hi,
    I don't have any editing licenses free at the moment so I can't really
    try it but I might be able to guess something.
    I've used rodAlign() a couple of times but am not that familiar with
    rodCreateHandle().

    You've used no separation so could the inconsistency be due to hidden
    layers or both instances origin? You can check the instances bounding
    boxes to see their exact limits (or perhaps try press 'Q' to see the
    Object Properties, and check the instance's co-ordinates under tab ROD
    at System Handle).
    If the instance has text written on it, the text could have increased
    the instance's boundaries.

    Actually, 70um does seem too wide a distance - unless the instance is
    quite big.

    Best Regards,
    I-F AB
     
    I-F AB, May 28, 2009
    #2
  3. lokeshraje

    lokeshraje Guest

    Yes I-F AB ,
    The instances are big..
    The following code says it all..("obj1" is the ROD object ID of an
    instance)

    obj1~>length
    1.86
    obj1~>width
    52.1

    Still I'm working on the problem....

    Regards,
    Lokesh rajendran
     
    lokeshraje, May 28, 2009
    #3
  4. lokeshraje

    lokeshraje Guest

    Hey I-F AB ,
    I got the solution for the problem :)
    ;This is a code to get the ROD Object ID of a selected object
    procedure(getRODobj()
    cvId = deGetCellView()
    dbId = car(geGetSelectedSet(cvId))
    rodId = rodGetObj(dbId)
    );proc

    ;After running the above procedure i got the ROD object ID's of the
    two instances as follows:
    obj1=getRODobj()
    obj2=getRODobj()

    ;In the Next Step don't create any user defined handles for the
    instances...Directly Jump to aligning the objects(Compare the First
    post and this post).

    ;to align two ROD objects
    rodAlign(
    ?alignObj obj2
    ?alignHandle "centerRight";this should be the user defined handle
    ?refObj obj1
    ?refHandle "centerLeft"
    ?maintain t
    ?xSep 0
    ?ySep 0
    )

    And it is working perfectly fine ,I even tried with aligning some
    other instances with different Aligning positions.
    It is working fine(even with or without separation between the
    instances).

    Now the BIGGEST question in my mind is:
    *Are user Defined Handles really necessary?
    *And in what way would a user defined handle improve the above code/
    situation?

    Regards,
    Lokesh Rajendran.
     
    lokeshraje, May 28, 2009
    #4
  5. You only need to use user defined handles if for some reason you can't use the
    system defined handles. I've found very few cases where I really need to use
    user defined handles - normally system defined handles with an appropriate
    separation with rodAlign() is sufficient.

    Given it's unclear what you're really trying to do, it's hard to say whether it
    will improve things or not...

    Regards,

    Andrew.
     
    Andrew Beckett, May 28, 2009
    #5
  6. lokeshraje

    I-F AB Guest

    Hi,
    Good for you! Glad to hear that your problem's solved.
    Also, I have never actually used "rodGetObj(dbId)" since I usually
    assign names while creating ROD's :
    e.g. ROD_1 = rodCreatePath( ...... )

    Best Regards,
    I-F AB
     
    I-F AB, May 29, 2009
    #6
  7. lokeshraje

    lokeshraje Guest

    Hi andrew,
    I was just trying to align two mosfet's(which were called as instances
    in the layout)...Any way just relieved to hear that people are not
    using much of user defined handle...I beleive that user defined
    handles are only required when you are trying to align a single ROD
    object to a point,else if you doing relative alignments like just
    aligning two ROD object's then the system defined handles are
    suffice..
    HOPE THIS ACTS LIKE A SUMMARY..
    Andrew please so pass your comments on this...

    Regards,
    Lokesh Rajendran.
     
    lokeshraje, May 29, 2009
    #7
  8. Lokesh,

    Yes, that's pretty much the only thing I've used user defined handles for.

    Regards,

    Andrew.
     
    Andrew Beckett, May 29, 2009
    #8
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.
Similar Threads
Loading...