Global parametrers with PCells and TopCells (SKILL)

  • Thread starter Benjamin Wolman
  • Start date
B

Benjamin Wolman

Guest
Hello,
I'm actually working on a simulation project of MEMS using Cadence and the
Skill language. However, I have a little problem:

I created 2 pcells (carre.il and ressort.il) with parameters that I can
modify directly on Virtuoso (in edit/parameters).
I also created a Topcell (topcell.il) which uses both pcells carre.il and
ressort.il. When I launch this topcell in Virtuoso, I can change all
parameters from carre.il and ressort.il, but the problem is that they don't
have any effect on the other pcell.

For example, if I change the parameter "longueur" from carre.il, I want the
pcell from ressort.il to automatically move to the right (or to the left)

In fact, I'm looking for associating a global parameter which will work for
carre.il and in the same time for ressort.il (ex: the parameter "longueur"
is used by carre.il and ressort.il and if I change the value of "longueur"
in Virtuoso, both pcells will automatically change)

Thank you

NB: si vous ne comprenez pas l'anglais, je peux reformuler ma question en
français
 
Benjamin Wolman wrote:
Hello,
I'm actually working on a simulation project of MEMS using Cadence and the
Skill language. However, I have a little problem:

I created 2 pcells (carre.il and ressort.il) with parameters that I can
modify directly on Virtuoso (in edit/parameters).
I also created a Topcell (topcell.il) which uses both pcells carre.il and
ressort.il. When I launch this topcell in Virtuoso, I can change all
parameters from carre.il and ressort.il, but the problem is that they don't
have any effect on the other pcell.

For example, if I change the parameter "longueur" from carre.il, I want the
pcell from ressort.il to automatically move to the right (or to the left)

In fact, I'm looking for associating a global parameter which will work for
carre.il and in the same time for ressort.il (ex: the parameter "longueur"
is used by carre.il and ressort.il and if I change the value of "longueur"
in Virtuoso, both pcells will automatically change)

Thank you

NB: si vous ne comprenez pas l'anglais, je peux reformuler ma question en
français
My experience - I created unique names for my skill modules
(e.g. prefixes for variable names).
 
Try using ROD (Relative Object Database) based Pcells.

Andrey Orlenko 395924625 wrote:
Benjamin Wolman wrote:

Hello,
I'm actually working on a simulation project of MEMS using Cadence and
the
Skill language. However, I have a little problem:

I created 2 pcells (carre.il and ressort.il) with parameters that I can
modify directly on Virtuoso (in edit/parameters).
I also created a Topcell (topcell.il) which uses both pcells carre.il and
ressort.il. When I launch this topcell in Virtuoso, I can change all
parameters from carre.il and ressort.il, but the problem is that they
don't
have any effect on the other pcell.

For example, if I change the parameter "longueur" from carre.il, I
want the
pcell from ressort.il to automatically move to the right (or to the left)

In fact, I'm looking for associating a global parameter which will
work for
carre.il and in the same time for ressort.il (ex: the parameter
"longueur"
is used by carre.il and ressort.il and if I change the value of
"longueur"
in Virtuoso, both pcells will automatically change)

Thank you

NB: si vous ne comprenez pas l'anglais, je peux reformuler ma question en
français



My experience - I created unique names for my skill modules
(e.g. prefixes for variable names).
 
I don't entirely understand what you're doing here. Is topcell a hierarchical
pcell - i.e. one that instantiates some other cells (carre and ressort)?

Perhaps explaining a golden rule of pcells might help here.

pcells should only be updated via their formal parameters. Changing an instance
of a pcell is the only thing you can rely upon to re-master the instance; in
other words, changing the instance parameters will cause DFII to look for the
submaster with the same parameter values, and if not found it will build it by
evaluating the pcell code with those formal parameter values.

Changing global SKILL variables, or indeed changing anything else that the
pcell code might look up, will _not_ trigger a pcell re-master.

(Note, re-loading the pcell code also forces a re-mastering of the pcells, but
that's hardly a useful way of forcing an update when something other than
a formal parameter has changed - most users would not have permissions to
create the pcell itself).

What this means that if you have a hierarchical pcell, then if you change the
instance parameters of that top level pcell, it can then compute parameters
for child pcells which are instantiated within that top pcell, and so on.

So changing a parameter on topcell could cause a subcell within that pcell to
move (if you coded it that way). However, changing a parameter on topcell
should not be used to alter the parameters on an unrelated cell (not part of
its hierarchy). In theory it can be done, but the trouble is that a pcell is not
unique to a particular instance - it is common across all instances with the
same parameters - so trying to figure out which instance you're dealing with
is nigh on impossible - and asking for strange inconsistencies to occur.

Don't know whether this answers your question (since I didn't really understand
what you were doing here), but hopefully this helps!

Regards,

Andrew.


On Wed, 9 Jun 2004 23:43:54 +0200, "Benjamin Wolman" <moriaben@hotmail.com>
wrote:

Hello,
I'm actually working on a simulation project of MEMS using Cadence and the
Skill language. However, I have a little problem:

I created 2 pcells (carre.il and ressort.il) with parameters that I can
modify directly on Virtuoso (in edit/parameters).
I also created a Topcell (topcell.il) which uses both pcells carre.il and
ressort.il. When I launch this topcell in Virtuoso, I can change all
parameters from carre.il and ressort.il, but the problem is that they don't
have any effect on the other pcell.

For example, if I change the parameter "longueur" from carre.il, I want the
pcell from ressort.il to automatically move to the right (or to the left)

In fact, I'm looking for associating a global parameter which will work for
carre.il and in the same time for ressort.il (ex: the parameter "longueur"
is used by carre.il and ressort.il and if I change the value of "longueur"
in Virtuoso, both pcells will automatically change)

Thank you

NB: si vous ne comprenez pas l'anglais, je peux reformuler ma question en
français
--
Andrew Beckett
Senior Technical Leader
Custom IC Solutions
Cadence Design Systems Ltd
 
Salut,
for the value of longueur on carre and ressort, you should use the
value passed by topcell.
I believe you can do this using a function like "iPar" or "pPar"

Benjamin Wolman wrote:
Hello,
I'm actually working on a simulation project of MEMS using Cadence and the
Skill language. However, I have a little problem:

I created 2 pcells (carre.il and ressort.il) with parameters that I can
modify directly on Virtuoso (in edit/parameters).
I also created a Topcell (topcell.il) which uses both pcells carre.il and
ressort.il. When I launch this topcell in Virtuoso, I can change all
parameters from carre.il and ressort.il, but the problem is that they don't
have any effect on the other pcell.

For example, if I change the parameter "longueur" from carre.il, I want the
pcell from ressort.il to automatically move to the right (or to the left)

In fact, I'm looking for associating a global parameter which will work for
carre.il and in the same time for ressort.il (ex: the parameter "longueur"
is used by carre.il and ressort.il and if I change the value of "longueur"
in Virtuoso, both pcells will automatically change)

Thank you

NB: si vous ne comprenez pas l'anglais, je peux reformuler ma question en
français
 

Welcome to EDABoard.com

Sponsor

Back
Top