Global parametrers with PCells and TopCells (SKILL)

Discussion in 'Cadence' started by Benjamin Wolman, Jun 9, 2004.

  1. 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, Jun 9, 2004
    #1
  2. My experience - I created unique names for my skill modules
    (e.g. prefixes for variable names).
     
    Andrey Orlenko 395924625, Jun 10, 2004
    #2
  3. Try using ROD (Relative Object Database) based Pcells.
     
    MSTD Cell Library Team, Jun 10, 2004
    #3
  4. 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.
     
    Andrew Beckett, Jun 13, 2004
    #4
  5. Benjamin Wolman

    fogh Guest

    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"
     
    fogh, Jun 23, 2004
    #5
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.