新的項(xiàng)目開(kāi)始了疾层,在virtuoso?XL沒(méi)有找到一次性生成多個(gè)cell的命令挑围,所以查了下參考文檔赌厅,寫(xiě)了一個(gè)skill的腳本來(lái)做這個(gè)事情焕刮,在sch庫(kù)里有非常多的cell的時(shí)候還是可以省下一點(diǎn)點(diǎn)時(shí)間注益,具體思路如下:
1.首先要找到庫(kù)里用到的cell有哪些碴巾,然后列出來(lái),并寫(xiě)進(jìn)XL要用的到map文件丑搔;
2.使用lxGenFromSource()命令建立電路上的cell對(duì)應(yīng)的layoutcell厦瓢。
使用的skill如下(有待改進(jìn),新項(xiàng)目時(shí)間開(kāi)始緊張啤月,所以留待后面更新):
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