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")Par("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")Par("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")Par("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
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")Par("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")Par("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")Par("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