热度 12| ||
在layout中,Floating的金属有时候肉眼发现不了,然而它既会影响电路性能,也会造成不必要的面积浪费。
比如,高速电路中常用电感,电感附近有Floating的金属,会影响电感的感值,导致电路不能正常工作。
PS:在高速的Layout中,为了电路性能,高速部分不填充金属Dummy的。
不过也有特例,为了芯片平坦度,Foundry厂会要求我们填充金属Dummy,它们也是Floating的,但是与有用的器件和层次距离比较远,对电路性能影响比较小。
为了检查出Floating的金属,我们可以用以下两种方法。
01 RUN LVS的方法检查Floating Metal
在LVS cmd file中,添加下面的语句,然后Run LVS,看ERC结果。
ERC PATHCHK !LABELED by layer
该语句是检查layer没有net name。若是用于检查线,那么没有net name的线相当于是floating的线。
02 RUN ANTENNA的方法检查Floating Metal
其实检查Antenna的Rule也可以检查Floating Metal。检查Metal1的天线效应,语句可能像下面这样写:
gate = poly AND diff
CONNECT poly metal1 BY contact
{ NET AREA RATIO metal1 gate >20 }
从这个语句可以看出,检查metal1的天线效应,是把metal1和gate的面积进行比较,超过20就报错。
如果是用来检查Floating Metal,那么就相当于Metal没有接到Diffussion、Poly,或者可以这样理解,Metal1连接的Diffussion、Poly的面积为0,语句可以这样写:
CONNECT metal1 diff BY contact
CONNECT metal1 poly BY contact
floating_metal { @ Check metal1 floating
( NET AREA RATIO metal1 poly == 0 ) AND ( NET AREA RATIO metal1 diff == 0 )
}
前两句是定义metal1和diff通过contact连接,metal1和poly通过contact连接。也许你已经看出疑问了,最下面那行等于0,那么metal1与diff、poly运算时,分母是0,语句是不是有问题啊?
我们来看看Calibre的SVRF文档,文档中有提到NET AREA RATIO语句运算时,是允许分母为0的,并且提到,该语句可以用来检查nets没有被diodes保护的情况。那么我们可以把没有接到Diffusion的Metal,看成没有受到diodes(在Antenna检查中,Diffussion相当于diode)保护的Metal。从而可以用这种方式检查Floating的Metal。
本文由小文陈原创,欢迎分享!
微信号:JK_LayoutArt
chunnuan0: 点赞,两种方法都尝试了一下,结果如下:
1. ERC写法,伪错较多,会把所有没有连接到PIN的金属和孔全部报错出来,需要一个一个确认是不是真的floating,大量都是 ...
chunnuan0: 点赞,两种方法都尝试了一下,结果如下:
1. ERC写法,伪错较多,会把所有没有连接到PIN的金属和孔全部报错出来,需要一个一个确认是不是真的floating,大量都是 ...
amor_ming: 请问为什么定义连接关系之前线DISCONNECT一下?