PCELLS with ROD Design

G

Guenther Sohler

Guest
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 ?
 
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 ?
 
On Mon, 18 Apr 2005 07:30:22 +0200, Guenther Sohler
<guenther.sohler@newlogic.com> wrote:

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 ?
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.
 
On Mon, 18 Apr 2005 09:36:43 +0100, Andrew Beckett wrote:

Thank you Andrew,

now it works!
 
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 ?
 
Found the Solution:

the ROD stretching reference shape must have a layer, valid in the LSW
 
On Wed, 20 Apr 2005 12:09:29 +0200, Guenther Sohler
<guenther.sohler@newlogic.com> wrote:

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 ?
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.
 
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
)
 
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
)
 

Welcome to EDABoard.com

Sponsor

Back
Top