changing metal widths on a pcell with a variable finger count

Discussion in 'Cadence' started by rick, Dec 7, 2010.

  1. rick

    rick Guest

    Im looking for a way to modify the parameters on a dynamic pcell which
    will be used in 2 different ways:

    1) when the device is placed, to be able to change the parmeters on
    each instantiation which could have
    a different finger count.

    2) used in a high level pcell which conceptually should be the same
    excep that one would have the
    dbCreate whereas for the case of instantiated cells, each one would
    have to be queried and then modified.

    The main issue is that the syntax will change depending on the finger
    count.

    count =1 (0 0.03 0.03 0.03 0)
    count =2 (0 0.03 0.03 0.03 0) (1 0.03 0.03 0.03 0)
    count =3 (0 0.03 0.03 0.03 0) (1 0.03 0.03 0.03 0) (2 0.03 0.03 0.03
    0)
    count =4 (0 0.03 0.03 0.03 0) (1 0.03 0.03 0.03 0) (2 0.03 0.03 0.03
    0) (3 0.03 0.03 0.03 0)

    Heres the map to the above:

    /*****************************************************/
    ;SDshrink ( 1 2 3 4 5 )
    ; 1 = finger #
    ; 2 = start top
    ; 3 = start bottom
    ; 4 = width
    ; 5 = contact spacing

    /*****************************************************/

    and the code if used in the pcell.

    instNTL=dbCreateParamInst(cv tranId
    "ntranl" 0:0 "R180" 1 list(
    list("w" "string" w_n_b )
    list("l" "string" l_n_b )
    list("fingers" "string" sprintf(nil "%d" f_n_b))
    list("m" "string" sprintf(nil "%d" m_n_b))
    stuff deleted.....
    list("SDshrink" "string" "(0 0 0 0 0)")

    Probably a for each would do the job but would you have to create a
    variable for each possible finger
    or can it be array or something?

    Thanks

    Rick
     
    rick, Dec 7, 2010
    #1
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.