Skill: Multipart shape ?

bedoune@gmail.com wrote, on 03/06/08 02:33:
hi,

I have a small question, in skill, again !

do you think possible to create a kind of multipart shape ?

For example, i would like to create a multipart shape which:
-add automatically implant, diff, contacts and metal (like a multipart
path)

-can be "stretchable" (i don't know if this term is correct,
gomennasai) in X and Y

-and after a strech, it will automatically re-calculate the number of
contacts to fit the new size.


so ... am i dreaming or is it possible ? If possible, may someone give
me the main idea on how to ?

Thanks and regards,

b.
rodCreatePath() or rodCreateRect().

Please check the Relative Object Design manual...

Regards,

Andrew.
 

Guest
hi,

I have a small question, in skill, again !

do you think possible to create a kind of multipart shape ?

For example, i would like to create a multipart shape which:
-add automatically implant, diff, contacts and metal (like a multipart
path)

-can be "stretchable" (i don't know if this term is correct,
gomennasai) in X and Y

-and after a strech, it will automatically re-calculate the number of
contacts to fit the new size.


so ... am i dreaming or is it possible ? If possible, may someone give
me the main idea on how to ?

Thanks and regards,

b.
 
Hi,

Thank you for your answer.
I found the documentation on Rod objects.

So i try to make a multipart rectangle, with 3 rectangles of
differents layers ( Implant + Active + Metal 1 ) and contacts.

I have defined Metal 1 as "main" rectangle, the others are defined as
"subrectangles".
I don't have any issues with contacts, but i got an error message in
CIW for the others layers

*Error* cadr: argument #1 should be a list (type template = "1") - 0.

This error appears if i don't use the ?spaceX and ?spaceY options.

But i need to overlay my differents layers. Putting a spacing is a
problem for me in case of stretch ...

so i defined: ?spaceX = 0 and ?spaceY = 0 , but i got the same error
in CIW.


How to solve this problem ? If someone have any idea, please let me
know !

Thanks and regards,

b.
 
bedoune@gmail.com wrote:

*Error* cadr: argument #1 should be a list (type template = "1") - 0.

This error appears if i don't use the ?spaceX and ?spaceY options.

so i defined: ?spaceX = 0 and ?spaceY = 0 , but i got the same error
in CIW.
b.,

the error appears with *and* without the ?spaceX and ?spaceY arguments. So it mustn't be related to
them, right ?

it's most probably a typo or misuse of the function. the first thing to do is carefully check your
function call, verify values of the arguments etc. ; i can't help finding you are relying very much
on this newsgroup to solve your problems instead of you.

if you really can't find the answer by yourself, or can't figure what you're doing wrong, *at least
paste the faulty part of your code into your post*. how do you expect someone to figure the error
based solely on the very generic error message ?


regards,
Stéphane
 
Stephane,


Indeed, maybe the description of my problem was a little bit succinct.
I apologize ...

Actually, if ?spaceX or ?spaceY are missing or values equal to 0, i
get an error message in CIW.
If ?spaceX or ?spaceY are different from 0 (for example 0.005) my code
works.


so i guess my code is correct... but if you have any idea ...

Here a cut/paste of a part of my code. I call this part from
rodCreateRect, in option ?subRectArray

LayerMet = list(
?layer list(Met Purpose)
?width ShapeWidth
?length ShapeLength
?lowerLeftOffsetX 0
?lowerLeftOffsetY 0
?upperRightOffsetX 0
?upperRightOffsetY 0
?gap "distribute" <--- I want to remove this line
?spaceX 0.005 <--- I want to remove this line
?spaceY 0.005 <--- I want to remove this line
)


Last point: I'm sorry to nag so much people in this newsgroup. but i'm
a beginner in skill programming. I don't know how to use the functions
described in the documentation. For example, option ?bBox l_bbox.
what kind of list is l_bbox ?? In my docs, i don't have anything
about it . But if you have some interesting links to helpful docs ...

Regards,

b.
 
Actually, if ?spaceX or ?spaceY are missing or values equal to 0, i
get an error message in CIW.
If ?spaceX or ?spaceY are different from 0 (for example 0.005) my code
works.
Actually, the documentation specifies that spaceX and spaceY should be *positive* integer or
floating point, meaning zero is not an option. If you omit them, default values are taken from the
technology data (minSpacing for the specified layer). Seems that's where the error comes from,
though it's not obvious at first sight.

The idea is, subrectangles are supposed to be replicated in x and y direction within the shape, what
you're trying to do is have multiple shapes on top of each other, right ?

I suppose there's no way to obtain that with a single rod rectangle ; however what you can do is
create multiple rectangle and align them, i.e.

rect1 = rodCreateRect( ?layer "MET1" ... )
rect2 = rodCreateRect( ?layer "MET2" ?fromObj rect1 )
rodAlign( ?alignObj rect2 ?refObj rect1 )

That will allow the two shapes to stay aligned. It's not bulletproof, however ; one can still be
resized without the other.

Another option is to go for a pcell, but pcells have their own drawbacks.


Last point: I'm sorry to nag so much people in this newsgroup. but i'm
a beginner in skill programming. I don't know how to use the functions
described in the documentation. For example, option ?bBox l_bbox.
what kind of list is l_bbox ?? In my docs, i don't have anything
about it . But if you have some interesting links to helpful docs ...
No misunderstanding. That's what this place is for, I suppose, so... you don't have to be sorry.
I'm merely suggesting that a little hands-on would probably lead you to find most solutions by
yourself, and the first one to benefit is yourself.


Cheers,
Stéphane
 
S. Badel wrote, on 03/10/08 13:29:
The idea is, subrectangles are supposed to be replicated in x and y
direction within the shape, what you're trying to do is have multiple
shapes on top of each other, right ?

I suppose there's no way to obtain that with a single rod rectangle ;
however what you can do is create multiple rectangle and align them, i.e.

rect1 = rodCreateRect( ?layer "MET1" ... )
rect2 = rodCreateRect( ?layer "MET2" ?fromObj rect1 )
rodAlign( ?alignObj rect2 ?refObj rect1 )

That will allow the two shapes to stay aligned. It's not bulletproof,
however ; one can still be resized without the other.
Stephane's right. You don't have enclosure rectangles, only sub-rectangles (to
use the equivalent MPP terminology). You just have to create multiple rectangles.

Regards,

Andrew.
 
On Mar 5, 7:33 pm, bedo...@gmail.com wrote:
hi,

I have a small question, in skill, again !

do you think possible to create a kind of multipart shape ?

For example, i would like to create a multipart shape which:
-add automatically implant, diff, contacts and metal (like a multipart
path)

-can be "stretchable" (i don't know if this term is correct,
gomennasai) in X and Y

-and after a strech, it will automatically re-calculate the number of
contacts to fit the new size.

so ... am i dreaming or is it possible ? If possible, may someone give
me the main idea on how to ?

Thanks and regards,

b.

Yes it is possible and the code is below. It does have some
limitations but should be a good starting point. You
will need to change your target library and correct layer names.

Good Luck!

Rick



pcDefinePCell(list(ddGetObj("<target_lib>") "pSubStretch" "layout")

(
(xDistance 7.0)
(yDistance 7.0)
(layer "<pImp>")
)


; Create the rectangle.
theRect = rodCreateRect(
?cvId pcCellView
?layer list(layer "drawing")
?width xDistance
?length yDistance
?subRectArray
list(
list(?layer "m1"
?spaceX 0.2
?spaceY 0.2
?width xDistance-0.2
?length yDistance-0.2

)
list(?layer "diff"
?spaceX 0.9
?spaceY 0.9
?width xDistance-0.2
?length yDistance-0.2
)
list(?layer "cont"
?lowerLeftOffsetX 0.4
?lowerLeftOffsetY 0.4
?upperRightOffsetX -0.4
?upperRightOffsetY -0.4
)

)

)
rodAssignHandleToParameter(
?moveOrigin t
?stretchType "relative"
?parameter "xDistance"
?rodObj theRect
?stretchDir "X"
?handleName "centerRight"
?displayName "xDistance"
)
rodAssignHandleToParameter(
?moveOrigin t
?stretchType "relative"

?parameter "yDistance"
?rodObj theRect
?stretchDir "Y"
?handleName "upperCenter"
?displayName "yDistance"
)
rodAssignHandleToParameter(
?moveOrigin t
?stretchType "relative"

?parameter "xDistance"
?rodObj theRect
?stretchDir "X"
?handleName "centerLeft"
?displayName "xDistance"
)
rodAssignHandleToParameter(
?moveOrigin t
?stretchType "relative"

?parameter "yDistance"
?rodObj theRect
?stretchDir "Y"
?handleName "lowerCenter"
?displayName "yDistance"
)

)
 
Hi,

Thank you all for your answers.

Actually, i found on another website that 'my' cadence needs some
patches to make skills working properly.


rodCreateRect does not work if ?spaceX and ?spaceY are not specified

Error Message:
Error message in CIW:

*Error* cadr: argument #1 should be a list (type template = "l") - 0

Solution:
When ?spaceX and ?spaceY are not specified, ROD command is supposed to
get the
minSpacing rule form the techfile. In IC61, the minSpacing rule for
METAL1 is found
in the spacing rule table section. There was a problem whereby the
command was not
looking in the correct section of the techfile for the minSpacing
rule. This problem
has been fixed in IC6.1.1.500.20 and up. It is no longer necessary to
specify
?spaceX and ?spaceY for creating MPR.


But Andrew, Stephane, do you mean, even with the bug fixes, i won't
be able to create 2 resizables metals layers with subrect. (with
rodCreateRect) ?? Too bad (;_;)

thank you Rick for your code. I'm going to study it and try it.

thank you all for your precious help ^^

regards,

b.
 
bedoune@gmail.com wrote, on 03/13/08 06:05:
Hi,

Thank you all for your answers.

Actually, i found on another website that 'my' cadence needs some
patches to make skills working properly.


rodCreateRect does not work if ?spaceX and ?spaceY are not specified

Error Message:
Error message in CIW:

*Error* cadr: argument #1 should be a list (type template = "l") - 0

Solution:
When ?spaceX and ?spaceY are not specified, ROD command is supposed to
get the
minSpacing rule form the techfile. In IC61, the minSpacing rule for
METAL1 is found
in the spacing rule table section. There was a problem whereby the
command was not
looking in the correct section of the techfile for the minSpacing
rule. This problem
has been fixed in IC6.1.1.500.20 and up. It is no longer necessary to
specify
?spaceX and ?spaceY for creating MPR.


But Andrew, Stephane, do you mean, even with the bug fixes, i won't
be able to create 2 resizables metals layers with subrect. (with
rodCreateRect) ?? Too bad (;_;)

thank you Rick for your code. I'm going to study it and try it.

thank you all for your precious help ^^

regards,

b.
Actually, thinking about it, you can have just one big rectangle - you just need
to specify the size big enough, I think...

Regards,

Andrew.
 

Welcome to EDABoard.com

Sponsor

Back
Top