Need help to control PCELL names in GDS stream out?

Discussion in 'Cadence' started by Reotaro Hashemoto, Jul 15, 2009.

  1. Hi,

    I've layout that contains instances from many PDK pCells.

    I need to do two things during PIPO stream out GDS:

    1. Preserve the names of pCells to a standard value (e.g.
    libName_cellName_count)

    2. Control PIPO log such that it has list of: "cell - gds layers" for
    each cell.

    How can I do that with SKILL?

    To export GDS I create my own PIPO keys file, like this: (I think the
    solution would be here)
    streamOutKeys = list(nil
    'userSkillFile ""
    'layerTable ""
    'convertPin "geometry"
    'libVersion "5.0"
    'units "micron"
    'scale 0.001
    'cellMapTable ""
    'caseSensitivity "preserve"
    'errFile "PIPO.LOG"
    'outFile "./testPcellName.gds"
    'viewName "layout"
    'primaryCell "a"
    'libName "testUMC"
    'runDir "./"
    )

    Then run pipo using ipc from within SKILL script.

    I'd appreciate any help?

    Thanks,
    Ahmad
     
    Reotaro Hashemoto, Jul 15, 2009
    #1
  2. Reotaro Hashemoto wrote, on 07/15/09 12:37:
    Ahmad,

    The naming can be done with a user-defined SKILL function - poParamCellNameMap -
    search for that in the documentation (it's in transref/transref.pdf).

    I don't think you can output the GDS layers per cell though. Neither the
    "comprehensive log" or "hierarchy" options do that.

    Regards,

    Andrew.
     
    Andrew Beckett, Jul 15, 2009
    #2
  3. Reotaro Hashemoto

    Ahmad Guest

    Hello Andrew,

    Thanks for the hint.

    I've checked the manual but I am not sure if I understood it
    correctly.

    What I did for test is:

    1. Created a SKILL file named "test.il" with the following contents:

    procedure( poParamCellNameMap( name ID )
    prog( (newName)
    sprintf(newName "ABC_%s_%s_XYZ" name ID)
    return( newName)
    ); prog
    ); proc

    2. Modified the stream out keys file to have this line:
    streamOutKeys = list(nil
    ......
    'userSkillFile "test.il"
    )

    3. Run PIPO from shell: pipo strmout strmOutKeys

    I got the same results for cell names although I had no errors in the
    log!

    What wrong did I made?

    Thanks and best regards,
    Ahmad
     
    Ahmad, Jul 15, 2009
    #3
  4. Reotaro Hashemoto

    Ahmad Guest

    Hi Andrew,

    I'm still having the same problem, could you please help?

    Thanks,
    Ahmad
     
    Ahmad, Jul 17, 2009
    #4
  5. Ahmad wrote, on 07/17/09 18:03:
    Sure. Been a bit busy the last couple of days. I'll take a look, possibly Monday.

    Regards,

    Andrew.
     
    Andrew Beckett, Jul 17, 2009
    #5
  6. Andrew Beckett wrote, on 07/17/09 18:52:
    Hi Ahmad,

    I don't really know what you did, because I tried this, and it worked
    (admittedly I did it from the GUI, but the streamOutKeys in the log file was the
    same as yours). I tried your code too, and the PIPO.log showed the names all
    being mapped.

    Here's the code I used to do what you originally requested:

    countTable=makeTable('countTable 0)
    subMasterTable=makeTable('subMasterTable nil)
    procedure(poParamCellNameMap(name id)
    let((libCell count name)
    ;--------------------------------------------------------------------
    ; First check if this submaster has already been mapped, and
    ; retrieve the name if it has
    ;--------------------------------------------------------------------
    if(name=subMasterTable[id] then
    name
    ;--------------------------------------------------------------------
    ; Otherwise create the new name
    ;--------------------------------------------------------------------
    else
    libCell=list(id~>libName id~>cellName)
    count=countTable[libCell]+1
    countTable[libCell]=count
    sprintf(name "%s_%s_%d" id~>libName id~>cellName count)
    subMasterTable[id]=name
    )
    )
    )

    Regards,

    Andrew.
     
    Andrew Beckett, Jul 19, 2009
    #6
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.