Weird SKILL association table behaviour.

I

I-F AB

Guest
Hi,

I've got some weird results when creating a pcell.
When using rodCreatePath(), I used the ?size option as below:
-------------------------------------------------------------------------------------------------------------------------------------
?size ;B spacing + 1/2 width
max(techInfo[M1]->minSpa -techInfo[M1]->encOD + techInfo[NP]-
spaOD +
techInfo[NP]->encOD - techInfo[M1]->encOD) +
(RING + 1/2.0)*M1Ring +
;C spacing + 1/2 width
RING*( max(techInfo[M1]->minSpa -techInfo[M1]->encOD +
techInfo[PP]->spaOD + techInfo[PP]->encOD -
techInfo[M1]->encOD) )
-------------------------------------------------------------------------------------------------------------------------------------

This resulted in the error below:

*Error* eval: not a function - max((techInfo[M1]->minSpa) ((-& + (&-
->encOD)))

So what I did was to create a variable to do the max() operation
outside the rodCreatePath() function, and use this variable instead,
i.e. :
-------------------------------------------------------------------------------------------------------------------------------------
BSpacing = max(techInfo[M1]->minSpa -techInfo[M1]->encOD +
techInfo[NP]->spaOD + techInfo[NP]->encOD -
techInfo[M1]->encOD)
C_BSpacing = max(techInfo[M1]->minSpa -techInfo[M1]->encOD +
techInfo[PP]->spaOD +techInfo[PP]->encOD -
techInfo[M1]->encOD)

for( RING 0 1 ;C ;B
Ring = rodCreatePath(
.......
.......
?size ;B spacing + 1/2 width
BSpacing + (RING + 1/2.0)*M1Ring +
;C spacing + 1/2 width
RING*C_BSpacing
-------------------------------------------------------------------------------------------------------------------------------------

Could anyone explain why my information became read in as an ampersand
(&) sign?
I'm assuming that ROD creation commands don't handle certain functions
internally well.
Conditional commands such as if() works fine so far.

Thanks in advance.

I-FAB
 
I-F AB wrote, on 02/11/10 07:55:
->encOD +
techInfo[PP]->spaOD + techInfo[PP]->encOD -
techInfo[M1]->encOD) )
This bit is the problem (I think - I didn't test it fully):

For example:

RING*(max(1 2 3))

Causes the same kind of problem. The issue is that you have duplicate matching
parentheses - in essence this is the same as RING*((max 1 2 3)) - duplicate
parentheses cause trouble in SKILL (due it trying to handle both C syntax and
LISP syntax), so consequently you should never have multiple matched parentheses.

If you were to remove the ( immediately after the RING* and the one at the end
of the line above, it would work.

The & is just a truncation used in the tracing output. You can stop that by doing:

tracelevel=50
tracelength=50 (this stops ... appearing in tracing when you have lots of arguments)

Regards,

Andrew.
 
On 12 Feb, 06:16, Andrew Beckett <andr...@DcEaLdEeTnEcTe.HcIoSm>
wrote:
I-F AB wrote, on 02/11/10 07:55:

RING*( max(techInfo[M1]->minSpa   -techInfo[M1]->encOD +
                   techInfo[PP]->spaOD + techInfo[PP]->encOD -
                   techInfo[M1]->encOD) )

This bit is the problem (I think - I didn't test it fully):

For example:

RING*(max(1 2 3))

Causes the same kind of problem. The issue is that you have duplicate matching
parentheses - in essence this is the same as RING*((max 1 2 3)) - duplicate
parentheses cause trouble in SKILL (due it trying to handle both C syntax and
LISP syntax), so consequently you should never have multiple matched parentheses.

If you were to remove the ( immediately after the RING* and the one at the end
of the line above, it would work.

The & is just a truncation used in the tracing output. You can stop that by doing:

tracelevel=50
tracelength=50 (this stops ... appearing in tracing when you have lots of arguments)

Regards,

Andrew.
Hi Andrew,

Thanks for the analysis.
I didn't notice that the problem stemmed from
"RING*( max() )" (defined as C_BSpacing).

I was focused on the previous part right after the ?size option
(defined as BSpacing) & this one doesn't have extra parentheses.

I rarely use the tracelength because I'm not really good at filtering
the tons of data which it can produce (must be because I'm not aware
of tracelevel!) but I'll definitely try to learn how.

Thanks again! :)

Best regards,
I-FAB
 

Welcome to EDABoard.com

Sponsor

Back
Top