转自 http://bbs.ednchina.com/view_comments.jspa?entry_id=241794
看 calibrelvs 错误报告的方法
1.Report 开头部分的 Warning 和 Error 信息(因为出现 Warning 和 Error 的情
况很多,这里主要举一些常见的例子):
Error 部分:只要 report 的开头部分有 Error 信息出现,lvs 就肯定没有运
行成功。Error 一般由 lvs 命令文件或 netlist 文件中的参数定义引起,
这时候需要修改 lvs 文件或者 netlist。Error 信息都很直观,比较容易
查出产生 Error 的地方。
Example1(参见文件“lvs_test1.rep”):在”lan_yang_dig.cir”的 2191
和 2192 行调用到了两个标准单元”INLX1”和”LOGICOL”,但是
netlist 中找不到对这两个标准单元的描述。这个错误需要检查
netlist,添加上对这些标准单元的描述部分。通常标准单元的
netlist 由 foundry 提供,是一个单独的 cdl 或者 spice 文件;
Example1:
LVSNetlistCompiler-ErrorsandWarningsfor"LANYANG_FULLCHIP_V11_20060427.CI
R"
-------------------------------------------------------------
Error:Nomatching".SUBCKT"statementfor"INLX1"atline2191infile"lan_yang_di
g.cir"
Error:Nomatching".SUBCKT"statementfor"LOGIC0L"atline2192infile"lan_yang_
dig.cir"
.........
.........
Warning 部分:warning 不会影响 lvs 的运行,但是经常会导致结果的不正确。
很一些 warning 可以忽略掉,这些常常是 netlist 中或者 lvs 命令文件中
一些多余部分引起的,例如下面的 Example2_1 和 Example2_2;很多
warning 是不能忽略的,最常见的是 short 和 softconnect,例如下面的
Example3,Example4_1,Example4_2;
Example2_1(参见文件“lvs_test2.rep”):这个 warning 是因为 calibre
不认 netlist 中的参数”*.MEGA”,这时需要在 netlist 中注释掉这
个参数。(”*.MEGA”只在 dracula 中起作用,用于区分 netlist 中
单位 m 和 M 的不同,有了这个参数以后,m 代表千分之一,M 代表百万,
如果没有这个参数,则 m 和 M 都代表千分之一);
Example2_1:
.........
Warning:*.MEGAatline86infile"/home/taurus/XFAB/cdl/xc06m3/core/xc06a2dl.
cdl"notappliedtoearlierglobal-scope.PARAMstatements
Warning:*.MEGAatline148infile"/home/taurus/XFAB/cdl/xc06m3/core/xc06a2dl.
cdl"notappliedtoearlierglobal-scope.PARAMstatements
.........
Example2_2(参见文件“lvs_test2.rep”):这个 warning 是由于在 netlist
中重复定义了”NAND4”和”NOR2”这两个标准单元引起,可以修改
netlist 解决;如果能确定重复定义的部分是完全相同的,这个
warning 可以忽略掉;
Example2_2:
.........
Warning:Duplicatesubcktdefinition"NAND4"atline1642infile"/home/taurus/XF
AB/cdl/xc06m3/core/xc06a2dl.cdl"
Warning:Duplicatesubcktdefinition"NOR2"atline1671infile"/home/taurus/XFA
B/cdl/xc06m3/core/xc06a2dl.cdl"
.........
Example3(参见文件“lvs_test3.rep”):在 layout 中两条标记了 label
的 net 短路时,或者不同的 label 标记到了同一 net 上时,出现这种
warning,lvs 中会忽略掉其中一个 label,将这个 net 定义为另一个
label 的名字,例如这个例子中这个 net 被定义为”osc32k”,忽略
掉了”tclk_control”。这两个 warning 一般会同时出现,解决办法
是通过坐标和 label 在 layout 中查找 short 的地方,或者是 label
移位的地方。这个 warning 会引起 layout 和 netlist 出现不同数目的
net,一定要改掉;
Example3:
.........
WARNING:Directconnectionbetweendifferentports:
Portnames:osc32ktclk_control
WARNING:Shortcircuit-Differentnamesononenet:
NetId:513
(1)name"osc32k"atlocation(944.4,1199.6)onlayer39"metal3"
(2)name"tclk_control"atlocation(944.4,1228.4)onlayer39"metal3"
Thename"osc32k"wasassignedtothenet.
.........
Example4_1(参见文件“lvs_test4_1.rep”):如果在 Psubstrate 上出现
没有通过金属直接连接的 Psubstratetie,那么这些 Psubstratetie
会引起 softconnect 的 warning,这个例子中 net“chg_out_p”连接
到了某个 Psubstratetie,与 gnd!通过 Psubstrate 短路到了一起,
net“chg_out_p”被忽略掉。解决办法是找到 net“chg_out_p”与
Psubstrate 短路的地方;
Example4_1:
.........
WARNING:StampingconflictinSCONNECT-Multiplesourcenetsstamponetargetnet.
Netgnd!isselectedforstamping.
Rejectednets:chg_out_p
.........
Example4_2(参见文件“lvs_test4_2.rep”):这个例子和上一个例子基
本一样,不同的是和 gnd!sconnect 的这个 net 在 layout 上没有标记
label。”2089”是 calibre 从 layout 中提取并随机命名的 net。解
决办法是在 report 的具体信息中找到 net2089 的坐标,再在 layout
中查找该点的 net 是如何通过 Psubstrate 短路到 gnd!;
Example4_2:
.........
WARNING:StampingconflictinSCONNECT-Multiplesourcenetsstamponetargetnet.
Netgnd!isselectedforstamping.
Rejectednets:2089
...
...
...
1Netgnd!(33.050,176.900)GND!
2089(33.050,47.300)
...
...
2.Lvs 中 Input 和 Output 的信息:
该部分主要记录 calibre 中的一些信息,例如 layout,netlist,reportfile,
运行时间以及 calibre 的版本信息。
Example5:
REPORTFILENAME:lvs.rep
LAYOUTNAME:../gds/lan_yang_dig_lvs_test3.gds
SOURCENAME:LANYANG_FULLCHIP_V11_20060427.CIR('Lan_Yang_Dig')
RULEFILE:xc06_calibre_lvs_302.rul
RULEFILETITLE:XC06CalibreDRC/LVSFile
LVSMODE:Mask
RULEFILENAME:xc06_calibre_lvs_302.rul
CREATIONTIME:ThuMay1815:44:022006
CURRENTDIRECTORY:/direct/cd-home/gene.huang/tuna/lvs
USERNAME:gene.huang
CALIBREVERSION:v2005.2_6.10WedJul1317:47:45PDT2005
3.Lvs 是否匹配最明显的标志:NOTCOMPARED,CORRECT和 INCORRECT
NOTCOMPARED(参见 lvs_test1.rep):lvs 没有完成,会有 Error 信息
出现在 reportfile 的开头,提示为什么 lvs 没有进行,一般是 lvs
文件中 input 的信息不对;
Example6:
##########################
####
##NOTCOMPARED#
####
##########################
CORRECT:layout 与 netlist 匹配;
Example7:
####################__
###**
###CORRECT#|
####\___/
####################
INCORRECT(参见 lvs_test5.rep):layout 与 netlist 不匹配,有 error
信息提示,表示具体不匹配的原因;
Example8:
#######################
####
##INCORRECT#
####
#######################
Error:Differentnumbersofnets(seebelow).
Error:Connectivityerrors.
4.OBJECTS 信息:
INITIALNUMBERSOFOBJECTS:表示转换前 layout 和 netlist 中的 net
数目,器件类型和器件数目。这部分不用太留意,因为最终的器件
数目会在转换后有所变化。根据 lvscommandfile 中的某些设置,
某些器件可以合并,或被剔除:
Example9(参见:lvs_test5.rep):
INITIALNUMBERSOFOBJECTS
--------------------------
LayoutSourceComponentType
--------------------------
Ports:9595
Nets:217329901*
Instances:95299489*MN(4pins)
95439489*MP(4pins)
66R(3pins)
66D(2pins)
------------
TotalInst:1908418990
NUMBERSOFOBJECTSAFTERTRANSFORMATION:表示转换后 layout 和
netlist 中的 net 数目,器件类型和数目。某些器件被合并或者剔
除,从例子中可以看到,netlist(Source)比 Layout 中多一个 net,
器件数目则保持一致;
Example10(参见:lvs_test5.rep):
NUMBERSOFOBJECTSAFTERTRANSFORMATION
---------------------------------------
LayoutSourceComponentType
--------------------------
Ports:9595
Nets:99009901*
Instances:94729472MN(4pins)
94699469MP(4pins)
66R(3pins)
66D(2pins)
------------
TotalInst:1895318953
5.Report 中最重要的部分――INCORRECTNETS 部分:
Report 中,该部分分为左右两列,左边部分表示 layout 中关于某个 net 的信息,
右边表示 netlist 中该 net 的信息。
Open(断路):layout 中出现两个 net 的信息,而 netlist 中只出现
一个 net 的信息。这是典型的断路错误。解决办法:根据 net 的坐
标到 layout 中找到两个 net 断开的地方。
Example11(参见:lvs_test5.rep):
***********************************************************
INCORRECTNETS
DISC#LAYOUTNAMESOURCENAME
***********************************************************
1Netvdd!(32.800,839.700)VDD!
2089(62.400,35.250)
-------------------------------------
---Devicesonlayoutnet2089(62.400,35.250)---
19074(307.950,38.300)R(RDIFFP3)u_clock_divider/u37/RR0R(RDIFFP3)
pos:567(306.950,38.300)neg:u_clock_divider/N2
neg:2089(62.400,35.250)pos:VDD!
sub:2089(62.400,35.250)sub:VDD!
…
…
Example11 中,layout 的 vdd!与 net2089 是两个不同的 net,但是
在 netlist 中这两点都对应 VDD!;后面的具体信息是这两个 net
上对应的 device 的信息,在 layout 中这个电阻的 neg 和 sub 两端
接到了 net2089,但是在 netlist 中应该是接到 VDD!;
Example12(参见:lvs_test6.rep):
*******************************************************************
INCORRECTNETS
DISC#LAYOUTNAMESOURCENAME
*******************************************************************
1Net54(43.600,1162.700)u_clock_divider/CLK16_FROM32K
1543(50.700,1206.450)
--------------------------------------------------
Example12 中,同样是一个 open 的错误类型,layout 中的 net54
和 net1543 都对应 netlist 中的同一个 net;
Layout 与 netlist 不对应的 net:layout 中某些 net 在 netlist 中找
不到对应的 net。解决办法:根据含有该 net 的 device 的坐标找
到对应的 layout,对照 schematic 查找错误的地方;