近期在和一个朋友的私信过程中,发现一个可能更有用的辅助编写skill脚本的小技巧,放在文章末尾。
问题起因:批量导入了一个库的cdl文件,但是电阻替换过程中出现了问题。做LVS检测时,所有的电阻类型都匹配不上,而且阻值也对应不上。需要一个Skill脚本批量处理这些问题。
存在问题:实际没有完全实现需求,希望参考后给予反馈!
附上脚本代码,类似需求可直接修改脚本。
procedure(rp_ckt(Lib_name) let(
(Cell_name Id_cell Id_inst Id_newinst)
num=0
foreach(Cell_name ddGetObj(Lib_name)~>cells
num=num+1
if(Id_cell=dbOpenCellViewByType(Lib_name Cell_name~>name "schematic" nil "a")
then
println(Cell_name~>name)
foreach(Id_inst Id_cell~>instances
if(Id_inst~>cellName=="rndifsab"
then
Id_newinst=dbOpenCellViewByType("smic18mmrf" "rndifsab" "symbol")
Id_inst~>master=Id_newinst
dbClose(Id_newinst)
/*println(Id_inst~>segments)
println(Id_inst~>w)
println(type(Id_inst~>w))
*/
println(Id_inst~>segments)
Id_inst~>segments =5
println(Id_inst~>s)
Id_inst~>connection ="Parallel"
Id_inst~>calculatedParam = "Length"
println(Id_inst~>r)
Id_inst~>r = 319.791
println(Id_inst~>r)
cdfgData = cdfGetInstCDF( Id_inst )
paramType = cdfFindParamByName( cdfgData "r" )
)
)
dbCheck(Id_cell)
println("Check finshed")
dbSave(Id_cell)
dbClose(Id_cell)
)
println(num)
)
)
)
以上是脚本的全部内容。
SKILL脚本编写小技巧
可以在CIW里选择Option->Log Filter...
然后将所有的选项都勾上
这样任何鼠标点击的操作,CIW都会显示Virtuoso调用的API,以及传递的变量。
通过显示的API的名称和变量值,可以更容易进行SKILL脚本的编写。