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:
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.
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
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.
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