Four SKILL questions ???

Discussion in 'Cadence' started by Reotaro Hashemoto, Jun 4, 2009.

  1. Hi all,

    I have four questions (i guess FAQs)

    Q1. I have a schematic sheet that contains only one instance. How can
    I get list of all properties that user can modify for this instance
    and print them formatted in an output file? Something like the
    following:

    libName, cellName, instName, param1Name=Val, param2Name=val, ....

    For example, if the sheet contains "nmos" from library "umc45" and
    instance name is: "mn1", I need to print:
    umc45, nmos, mn0, w=0.6u, l=0.5u, m=1

    I tried to play with dbOpenCellViewByType("test" "a1" "schematic")
    ~>instances~>"M0"~>prop

    but it seems to be wrong :-(

    *~*~*~*~*~*~*~*~*~*~*~*~*

    Q2. I have a library, contains many cells, I need to print out names
    of cells that only have both symbol and layout views, I wrote the
    following proc, but it is not working as I want! Could anybody see
    where the error is?

    procedure( GetListOfLibCellsWithSymAndLayoutViews(lib)
    let(()

    foreach(cell ddGetObj(lib)~>cells
    ; Get names of all cells in the lib
    cellName=dbOpenCellViewByType(lib cell~>name "symbol")~>cellName
    ; if the current cell has symbol and layout views then print it
    if( member(cell~>views~>name '("symbol")) && member
    (cell~>views~>name '("layout") )
    printf("%s\n" cell~>name)
    ); if

    ;

    ); foreach
    ); let
    ); procedure

    *~*~*~*~*~*~*~*~*~*~*~*~*

    Q3. What is the simplest way to set/modify parameter value for this
    single instance in the sheet? Given parameter name and new value?

    *~*~*~*~*~*~*~*~*~*~*~*~*

    Q4. How to create netlist for this sheet with SKILL? I couldn't use
    createNetlist()

    Thanks a lot for your help,
    Regards,
     
    Reotaro Hashemoto, Jun 4, 2009
    #1
  2. Reotaro Hashemoto

    KB.How Guest

    Hi Reotaro,

    Q1:
    To get a cell view info, and instances parameter value. You need do
    this.
    cvId = dbOpenCellViewByType("libName" "cellName" "viewName" )
    cvId~>libName
    cvId~>cellName
    cvId~>viewName
    cvId~>instanceMasters~>cellName

    To get the instances parameters,
    inst = geGetSelSet()
    cdfParam = cdfGetCellCDF(inst)



    Q2:
    You should do a ddGetObj to check for the view before opening. If the
    cell view doesn't exist but your code insist to open it, it will
    prompts u error. You can do this:

    procedure( GetListOfLibCellsWithSymAndLayoutViews(lib)
    let((libID (symView "schematic") (layView "layout"))

    libID = car(setof(x ddGetLibList() x~>name == lib ))

    foreach(cell libID~>cells
    when( ddGetObj(lib cell~>name symView) && ddGetObj(lib
    cell~>name layView)
    printf("%L %L\n" lib cell~>name)
    );when
    );foreach
    );let
    );proc


    Q3:
    I doesn't get what really you want?


    Q4:
    Yes, u can use createNetList() function to get the netlist.

    Regards,
    How
     
    KB.How, Jun 5, 2009
    #2
  3. Reotaro Hashemoto

    Ahmad Guest

    Hi How,

    Thanks a lot for your quick answer.

    Concerning Q1:
    For some reasons cdfGetCellCDF() returned nil ! I am running on
    IC514, do u have any idea why?
    Moreover, I am looking for something fully automated, I don't need to
    manually select inst inside the sheet then get its params list,
    instead I'd like to script to look for it and list its available
    parameters.

    Concerning Q2:
    Perfect, this is exactly what i was looking for :)

    Concerning Q3:
    What I mean is: how to set certain parameter of an instance to
    certain value (e.g. set 'w' of 'mimrf' to 3u) using SKILL

    Concerning Q4:
    I couldn't use createNetlist() but I managed to use si and pipo to
    do so. Thanks for the hint anyway.

    Best regards,
    Ahmad
     
    Ahmad, Jun 5, 2009
    #3
  4. Ahmad wrote, on 06/05/09 13:32:
    That's because it should be cdfGetInstCDF() not cdfGetCellCDF()...
    inst=dbFindAnyInstByName(cvId "mimrf")
    when(inst
    inst~>w="3u"
    )

    You didn't say what kind of netlist. If it's a CDL netlist or Verilog netlist,
    then si would have been the way to do it. If it's a spectre netlist (or similar
    ADE netlist), then createNetlist() would be the way.

    And pipo is nothing to do with netlisting - that would be to create the stream
    (GDS) file.

    Regards,

    Andrew.
     
    Andrew Beckett, Jun 8, 2009
    #4
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.