inheriting the min of 2 parent parameters?

T

Trevor Bowen

Guest
Hi,

I've asked this elsewhere - sorry for the double-post, but I'm desperate. :)

How can I define an instance parameter such that it receives the minimum of
2 parameters on its parent?

For example, I have a cell X, which has two CDF parameters, A and B. Cell X
contains a transistor, whose gate length I would like to be the minimum of A
and B.

Reading the AEL and CDF documentation, I have tried the following, which
makes the most sense to me (since AEL does not have a min function):

(pPar("A") < pPar("B")) ? pPar("A") : pPar("B")

I have also tried removing all spaces and enclosing the whole thing in
parentheses, like so:

((pPar("A")<pPar("B"))?pPar("A"):pPar("B"))

Both of these work in my simplified SKILL based dry-runs of the AEL syntax:

env=aelEnvCreate('f)
aelEnvSetGlobals(env "A" 2 "B" 20)
aelEnvInterpret(env "((A<B)?A:B)")
==> "2.0"
;; swapping variable values
aelEnvSetGlobals(env "A" 20 "B" 2)
aelEnvInterpret(env "((A<B)?A:B)")
==> "2.0"

Actually, spectre seems to tolerate my original syntax, but Assura LVS bombs
out with the following error message:

Error - Can not evaluate parameter 'l' on inst 'P0' in cell 'transistor
schematic a_pcells l=((pPar("A")<pPar("B"))?pPar("A"):pPar("B"))
*ERROR* Unknown Expression Parser Error Type!
Preprocessing schematic network phase 2
Preprocessing layout network phase 2
Top cell test_cell schematic test_lib vs test_cell layout test_lib
Error - Parameter Error when processing instance 'P0' in cell 'transistor
schematic transistor_lib l=((pPar("A")<pPar("B"))?pPar("A"):pPar("B"))
l=(A * 1e-06)
called from: transistor_inst' in cell 'transistor schematic
transistor_lib ng=14 fw=10.0'


Am I trying to do the impossible? Is there a better way to accomplish this?
I'd like to avoid creating yet another CDF parameter on the parent, which
parm would contain the minimum of the A and B parms, updated via callback.
If I did, I could easily pass that with a pPar(), but I'd like to avoid
adding yet another parm to an already huge CDF. Plus, I'd like to
understand AEL better. :)

Thanks!

Trevor

Posted Via Usenet.com Premium Usenet Newsgroup Services
----------------------------------------------------------
** SPEED ** RETENTION ** COMPLETION ** ANONYMITY **
----------------------------------------------------------
http://www.usenet.com
 
On Fri, 10 Aug 2007 13:47:47 -0500, Trevor Bowen <m27315@gmail.com> wrote:

Hi,

I've asked this elsewhere - sorry for the double-post, but I'm desperate. :)

How can I define an instance parameter such that it receives the minimum of
2 parameters on its parent?

For example, I have a cell X, which has two CDF parameters, A and B. Cell X
contains a transistor, whose gate length I would like to be the minimum of A
and B.

Reading the AEL and CDF documentation, I have tried the following, which
makes the most sense to me (since AEL does not have a min function):

(pPar("A") < pPar("B")) ? pPar("A") : pPar("B")

I have also tried removing all spaces and enclosing the whole thing in
parentheses, like so:

((pPar("A")<pPar("B"))?pPar("A"):pPar("B"))

Both of these work in my simplified SKILL based dry-runs of the AEL syntax:

env=aelEnvCreate('f)
aelEnvSetGlobals(env "A" 2 "B" 20)
aelEnvInterpret(env "((A<B)?A:B)")
==> "2.0"
;; swapping variable values
aelEnvSetGlobals(env "A" 20 "B" 2)
aelEnvInterpret(env "((A<B)?A:B)")
==> "2.0"

Actually, spectre seems to tolerate my original syntax, but Assura LVS bombs
out with the following error message:

Error - Can not evaluate parameter 'l' on inst 'P0' in cell 'transistor
schematic a_pcells l=((pPar("A")<pPar("B"))?pPar("A"):pPar("B"))
*ERROR* Unknown Expression Parser Error Type!
Preprocessing schematic network phase 2
Preprocessing layout network phase 2
Top cell test_cell schematic test_lib vs test_cell layout test_lib
Error - Parameter Error when processing instance 'P0' in cell 'transistor
schematic transistor_lib l=((pPar("A")<pPar("B"))?pPar("A"):pPar("B"))
l=(A * 1e-06)
called from: transistor_inst' in cell 'transistor schematic
transistor_lib ng=14 fw=10.0'


Am I trying to do the impossible? Is there a better way to accomplish this?
I'd like to avoid creating yet another CDF parameter on the parent, which
parm would contain the minimum of the A and B parms, updated via callback.
If I did, I could easily pass that with a pPar(), but I'd like to avoid
adding yet another parm to an already huge CDF. Plus, I'd like to
understand AEL better. :)

Thanks!

Trevor

Posted Via Usenet.com Premium Usenet Newsgroup Services
----------------------------------------------------------
** SPEED ** RETENTION ** COMPLETION ** ANONYMITY **
----------------------------------------------------------
http://www.usenet.com
This looks familiar, so I think I may have answered it elsewhere.

This is a bug in Assura. It should handle this, and if not, it should be fixed.
Please file a service request so that we can get this fixed (if you've not done
so already).

Regards,

Andrew.
--
Andrew Beckett
Senior Solution Architect
Cadence Design Systems, UK.
 

Welcome to EDABoard.com

Sponsor

Back
Top