新的項目開始了,在virtuoso?XL沒有找到一次性生成多個cell的命令,所以查了下參考文檔,寫了一個skill的腳本來做這個事情,在sch庫里有非常多的cell的時候還是可以省下一點點時間,具體思路如下:
1.首先要找到庫里用到的cell有哪些,然后列出來,并寫進(jìn)XL要用的到map文件;
2.使用lxGenFromSource()命令建立電路上的cell對應(yīng)的layoutcell。
使用的skill如下(有待改進(jìn),新項目時間開始緊張,所以留待后面更新):
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