LVS Error and New to SKILL

Discussion in 'Cadence' started by dinac, Apr 9, 2009.

  1. dinac

    dinac Guest

    HI all,

    I have two problems: one with SKILL and other with LVS error.

    1]. I would like to change the libName and the cellName of the
    cellviews in a whole library. There are around
    20 cellviews.

    As i am new to skill i tried with this: for a particular cell view
    and it works well.

    But trying to write a script for the whole library, and i do not
    know if it is even possible, going through the manuals.
    -------------------------------------------------------------------------------------------------------------
    cvID=dbOpenCellViewByType("LibName" "t_Cellview" "schematic" "" "a")

    foreach( inst cvID~>instances
    when(( inst~>libName == "OldLibName" && inst~>cellName == "pfet")
    dbSetInstHeaderMasterName( inst~>instHeader "NewLibName" "pmos" "")
    )
    when(( inst~>libName == "OldLibNamel" && inst~>cellName == "nfet")
    dbSetInstHeaderMasterName( inst~>instHeader "NewLibName" "nmos" "")
    )
    )
    ;schHiCheckAndSave()
    dbSave( cvID )
    dbClose( cvID )
    ---------------------------------------------------------------------------------------------------------
    2.] Error with LVS

    After editing the cellview using above , i perform the LVS.
    I see from google search that, this is a old error but still i could
    not get the solution.
    I am using 'DIVA LVS'.

    ------------------------------------------------------------------------------------------------------
    Begin netlist at: Apr 9 10:00:01 2009
    view name list = ("lvs" "schematic" "gate_sch" "cmos_sch")
    stop name list = ("lvs")
    library name = "sg13sdtcell"
    cell name = "SDN_AN3_2"
    view name = "schematic"
    globals lib = "basic"

    .............................
    .............
    Cannot find switch master cell for instance MPA1 in cellView (SDP_xxy
    schematic) from viewlist 'lvs schematic gate_sch cmos_sch ' in library
    'LibCell'.
    global error:
     
    dinac, Apr 9, 2009
    #1
  2. dinac

    Riad KACED Guest

    Hi Dinac,

    1. Skill problem:
    If you want your procedure to operate on the whole library, then you
    could write an extra piece of skill on top of the above. This is an
    example I've quickly written for you:
    I've basically split up the task into 2 procedures. The first
    procedure operates on a library and would run your script on every
    single schematic view. Note that the code below looks for all views
    whose viewType is scematic, not only views whose name is "schematic".
    People often use other funny names for their schematic views. This
    code would catch the funny names too :)
    Besides, I've added the schCheck() to your script. Give it a try an
    feel free to tweak it at your convenience:
    ;
    procedure( DINACrenameCells(libName)
    let((libId cvID (viewType "schematic"))
    libId=ddGetObj(libName)
    foreach(cell libId~>cells
    foreach(view cell~>views
    when(ddMapGetFileViewType(ddGetObj(view~>lib~>name
    view~>cell~>name view~>name "*"))== viewType
    cvID=dbOpenCellViewByType(view~>lib~>name view~>cell~>name
    view~>name "" "a")
    when(cvID
    printf("Processing %s - %s - %s ...\n" cvID~>libName
    cvID~>cellName cvID~>viewName)
    DINACrenameCellsByCvId(cvID)
    )
    )
    )
    ) ;foreach
    t
    ) ;let
    ) ;proc

    procedure(DINACrenameCellsByCvId(cvID)
    foreach( inst cvID~>instances
    when(( inst~>libName == "oldLib" && inst~>cellName == "nmos2v")
    dbSetInstHeaderMasterName( inst~>instHeader "newLib" "nmos3v"
    "")
    )
    when(( inst~>libName == "oldLib" && inst~>cellName == "pmos2v")
    dbSetInstHeaderMasterName( inst~>instHeader "newLib" "pmos3v"
    "")
    )
    )
    ;schHiCheckAndSave()
    schCheck(cvID)
    dbSave( cvID )
    dbClose( cvID )
    )
    ;

    2. LVS problem:
    Your switch/stop view list seems to be looking for view 'lvs' instead
    of 'auLvs'. I bet you have not set the 'CDS_Netlisting_Mode' variable
    to 'Analog' in your environment. Search the 'CDS_Netlisting_Mode' in
    this forum for more information. I think this would solve your
    problem.

    Hope this is helping.
    Riad.
     
    Riad KACED, Apr 9, 2009
    #2
  3. dinac

    dinac Guest

    Hi All / Riad,

    Thanks a lot, Riad

    As i am new to SKILL, it is taking me a long time to understand and
    write/modify the scripts.
    It actually took a day to understand and modify the script and run it
    successfully.

    but still i did not understand the attributes, ~>lib, ~>name of
    ddGetObj
    ddMapGetFileViewType(ddGetObj(view~>lib~>name view~>cell~>name
    view~>name

    The LVS problem was also because that i missed schCheck in my old
    script. after modification of the schematic, i saved it without a
    'schematic check' and this caused me the error in the LVS.

    Thanks again.
    Dinac
     
    dinac, Apr 14, 2009
    #3
  4. dinac

    Riad KACED Guest

    Hi Dinac,

    It is pretty easy, view~>lib~>name brings the library Name, the
    view~>cell~>name brings the cellName. These are the parameters needed
    for the ddGetObj function.
    You could get a quick reference to the ddGetObj/ddMapGetFileViewType
    functions using the cdsFinder. Otherwise, they are documented in the
    Cadence® Design Framework II SKILL
    Functions Reference: $CDSHOME/doc/skdfref/skdfref.pdf. Use cdsdoc or
    cdnshelp from your Unix terminal to get the Cadence docs.

    Regards,
    Riad.
     
    Riad KACED, Apr 14, 2009
    #4
  5. dinac

    dinac Guest

    Hi all,

    I am sorry i am trying to do the LVS and have some problems,
    1. I am trying to dump the log file of each cellName,
    but i see with this program that it happens before even a log file
    is created and therefore the files are dumped empty.


    Thanks for the help again,

    Regards
    Dinac
    --------------------------------------------------------------------------------------------------------------------
    procedure(DinacExtractdvid(libName)
    let((libID ExtID schID lvsdone)
    currDir = getWorkingDir()
    libID=ddGetObj(libName)
    foreach(cell libID~>cells
    foreach(view cell~>views
    ExtID=dbOpenCellViewByType(view~>lib~>name
    view~>cell~>name
    "extracted" "" "a")
    schID=dbOpenCellViewByType(view~>lib~>name
    view~>cell~>name
    "schematic" "" "a")
    when(ExtID
    when (schID
    DINAClvscheck(ExtID schID)
    ) ;when
    ) ;when
    ) ;foreach
    ) ;foreach
    ) ;let
    ) ;proc

    procedure(DINAClvscheck(ExtID schID)
    foreach(celln libID~>cells
    ivLVS("runDirLVS" ExtID~>libName ExtID~>cellName "extracted" t
    schID~>libName schID~>cellName "schematic" t nil t t nil "" nil 20
    nil
    "tech_lib" "divaLVS.rul" nil)
    hiRegTimer( "hiDBoxOK(simNetNoOp5)" 220)
    lvsdone=hiRegTimer( "hiDBoxOK(ivDBox)" 180)
    when(lvsdone
    csh(strcat("cp ./runDirLVS/si.log ./runDirLVS/
    LVSlogs/"
    schID~>cellName ".log"))
    ) ;when
    ) ;foreach
    ) ;proc
     
    dinac, Apr 21, 2009
    #5
  6. dinac

    dinac Guest

    problem solved,
    As i am new to SKILL, i just had to be patience and solve it.

    Thanks
     
    dinac, Apr 23, 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.