LVS Error and New to SKILL

D

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

Thanks a lot
Dinac
 
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
 
problem solved,
As i am new to SKILL, i just had to be patience and solve it.

Thanks
 

Welcome to EDABoard.com

Sponsor

Back
Top