PCELLS with ROD Design

Discussion in 'Cadence' started by Guenther Sohler, Apr 15, 2005.

  1. I plan to create a simple Pcell with a Handle.
    The User should be able to drag this handle and therefore automatically
    change the Shape of the Pcell.
    My Code looks like



    pcDefinePCell(list(ddGetObj("GS_WORK") "rect" "layout")
    (
    (width float 1.0)
    (height float 1.0)
    )
    rect=rodCreateRect(?name "rect" ?cvId pcCellView ?layer "poly" ?bBox list(0:0 width:height))
    rodCreateHandle(?name "left" ?type "point" ?value 0:height/2 ?rodObj rect)
    rodCreateHandle(?name "right" ?type "point" ?value width:height/2 ?rodObj rect)
    rodAssignHandleToParameter( ?parameter "width" ?rodObj rect ?handleName list( "left" "right" ) ?displayName "width" ?stretchDir "x" )
    t

    )

    but it does not work
    is it wrong ?
    Maybe I dont use the pcell in an incorrect way.
    Is a special Cadence version needed ?
    Can anybody give me detailled click instructions how to change a pcell
    graphically using handles ?
     
    Guenther Sohler, Apr 15, 2005
    #1
  2. Guenther Sohler

    Collin Weiss Guest

    pcDefinePCell(
    list(ddGetObj("GS_WORK") "rect" "layout")
    (
    (width float 1.0)
    (height float 1.0)
    )
    rect=rodCreateRect(
    ?name "rect"
    ?cvId pcCellView
    ?layer "poly"
    ?bBox list(0:0 width:height)
    )
    rodAssignHandleToParameter(
    ?parameter "width"
    ?rodObj rect
    ?handleName list("centerRight" "centerLeft")
    ?displayName "width"
    ;[?displayExpression S_displayExpression]
    ?stretchDir "x"
    ?stretchType "relative"
    ?moveOrigin t
    ;[?updateIncrement f_updateIncrement]
    ;[?userData g_userData]
    ;[?userFunction Sl_userFunction]
    ) ; end rodAssignHandleToParameter
    rodAssignHandleToParameter(
    ?parameter "height"
    ?rodObj rect
    ?handleName list("upperCenter" "lowerCenter")
    ?displayName "height"
    ;[?displayExpression S_displayExpression]
    ?stretchDir "y"
    ?stretchType "relative"
    ?moveOrigin t
    ;[?updateIncrement f_updateIncrement]
    ;[?userData g_userData]
    ;[?userFunction Sl_userFunction]
    ) ; end rodAssignHandleToParameter
    t
    )
     
    Collin Weiss, Apr 15, 2005
    #2
  3. Guenther Sohler

    Collin Weiss Guest

    Try using rodAssignHandleToParameter().
    The following code works:

    pcDefinePCell(
    list(ddGetObj("GS_WORK") "rect" "layout")
    (
    (width float 1.0)
    (height float 1.0)
    )
    rect=rodCreateRect(
    ?name "rect"
    ?cvId pcCellView
    ?layer "poly"
    ?bBox list(0:0 width:height)
    )
    rodAssignHandleToParameter(
    ?parameter "width"
    ?rodObj rect
    ?handleName list("centerRight" "centerLeft")
    ?displayName "width"
    ;[?displayExpression S_displayExpression]
    ?stretchDir "x"
    ?stretchType "relative"
    ?moveOrigin t
    ;[?updateIncrement f_updateIncrement]
    ;[?userData g_userData]
    ;[?userFunction Sl_userFunction]
    ) ; end rodAssignHandleToParameter
    rodAssignHandleToParameter(
    ?parameter "height"
    ?rodObj rect
    ?handleName list("upperCenter" "lowerCenter")
    ?displayName "height"
    ;[?displayExpression S_displayExpression]
    ?stretchDir "y"
    ?stretchType "relative"
    ?moveOrigin t
    ;[?updateIncrement f_updateIncrement]
    ;[?userData g_userData]
    ;[?userFunction Sl_userFunction]
    ) ; end rodAssignHandleToParameter
    t
    )
     
    Collin Weiss, Apr 15, 2005
    #3
  4. Dear Collin,

    the above Code compiles fine.
    But I am sorry to say, that I was not able find any additional
    functionality.
    How can I graphically enlarge the pcell now by stretching ?

    Can you give me detailled clicking instructions ?
     
    Guenther Sohler, Apr 18, 2005
    #4
  5. Do you have little yellow diamonds showing up on the layout? If not, you
    probably don't have the stretch handle display turned on.

    This is on the Options->Display Options (I think - or it might be Editor
    Options - but I think it's probably Display options).

    Once visible, you can then invoke the stretch command (Edit->Stretch),
    and then click on a stretch handle and drag it.

    Regards,

    Andrew.
     
    Andrew Beckett, Apr 18, 2005
    #5
  6. On Mon, 18 Apr 2005 09:36:43 +0100, Andrew Beckett wrote:

    Thank you Andrew,

    now it works!
     
    Guenther Sohler, Apr 18, 2005
    #6
  7. Hallo Guys,

    in the mean time I was able to program a quite extensive(and hopeful)
    useful pcell using rod functions.

    Now I wanted to use the pcells in a different Technology.
    Therefore I changed the layernames , turned on the
    stretch Handles and everything looked fine. The Diamonds appear.

    But when I want to graohically stretch the pcell it does not work

    * I deselect everything
    * I type 's' like stretch
    * I move the mouse to the diamond
    * I click the left mouse button(and release it)
    * I move the mouse to stretch the pcell

    but:

    Instead of strecthing the pcells(incl variables display) all the cell
    moves. What is incorrect ? What might be the difference between the setups
    Maybe I am missing another Option, which is set by default in the previous
    setup.

    Any Ideas ?
     
    Guenther Sohler, Apr 20, 2005
    #7
  8. Found the Solution:

    the ROD stretching reference shape must have a layer, valid in the LSW
     
    Guenther Sohler, Apr 20, 2005
    #8
  9. Hi Guenther,

    Glad you found the solution - but please don't cc me with my plain email
    address, as you've done here. The whole point of obfuscating my address when
    posting is to prevent spam. Now my email address is obtainable by those that
    search usenet for email addresses for spam purposes, because it's in the
    header of the above posting.

    Still, many years ago, I posted with my unobfuscated email address, so the
    damage is already done (I get at least 150 spam emails a day) - but there's no
    point making it easier for the rogues who send spam.

    So my point in saying this is to ask you, and others in this newsgroup, to not
    post cc-ing anyone's plain email address if they've gone to the effort of
    obfuscating it.

    Kind Regards,

    Andrew.
     
    Andrew Beckett, Apr 21, 2005
    #9
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.