新的项目开始了,在virtuoso XL没有找到一次性生成多个cell的命令,所以查了下参考文档,写了一个skill的脚本来做这个事情,在sch库里有非常多的cell的时候还是可以省下一点点时间,具体思路如下:
1.首先要找到库里用到的cell有哪些,然后列出来,并写进XL要用的到map文件;
2.使用lxGenFromSource()命令建立电路上的cell对应的layoutcell。
使用的skill如下(有待改进,新项目时间开始紧张,所以留待后面更新):
procedure(XL_SCHToLayout()
prog(()
LayLibName="DLL533S5A_016_IM329_26Jun2012"
SchLibName="DLL533S5A_V001"
MapFile="/home/guoyulai/cds_ipgoal/map/IM329/IM329_DLL.txt"
DeviceList=list()
CVF=geGetWindowCellView()
DdLib=dbGetCellViewDdId(CVF)
DdLibName=ddGetObjLib(DdLib)
CellNameListDB=DdLibName~>cells
CellNumber=length(CellNameListDB)
CellNameList=list()
for(i0CellNumber-1
CellNameSig=nth(iCellNameListDB)~>name
CellNameList=cons(CellNameSigCellNameList)
);endforifrom0toCellNumber
;printf("%L"CellNameList)
CellFile=outfile("~/CellFile.txt")
fprintf(CellFile"%s""lxNetlistCellmap(\n")
fprintf(CellFile"%s""\t(\"\"\n")
for(i0CellNumber-1
CellName=nth(iCellNameList)
fprintf(CellFile"\t%s%s%s%s%s%s\n""((\"cell\"""\"=\"""\""SchLibNameCellName"\")")
fprintf(CellFile"\t%s%s%s%s%s\n""(useCell""\""LayLibNameCellName"\")")
fprintf(CellFile"\t%s%s\n""(stopList""\"layout\")")
fprintf(CellFile"\t%s\n"")")
);endforifrom0toCellNumber-1
fprintf(CellFile"%s""\t)\n")
fprintf(CellFile"%s"")")
close(CellFile)
foreach(CellNameCellNameList
lxSetConnRef(
LayLibName
CellName
"layout"
"CELLVIEW"
?schLibSchLibName
?schCellCellName
?schView"schematic"
?mapFileMapFile
);endlxSetConnRef
);endforeach
foreach(CellNameCellNameList
SchViewId=dbOpenCellViewByType(SchLibNameCellName"schematic")
lxGenFromSource(
SchViewId
?layoutLibLayLibName
?layoutCellCellName
?layViewName"layout"
)
);endforeach
);endprog
);endprocedure
网友评论