讨论一下AntennaRule的DRC实现。
下图是一个典型的Antenna Rule的描述:
其中ANT_a的含义是:poly图形的周长面积与gate的比值不能大于200。
书写其DRC Code如下:
//; POLY thickness is 1800A
DRC INCREMENTAL CONNECTYES
CONNECT GATE GT
ANT_a {
NETAREA RATIO GT GATE >0
[
!!AREA(GATE) *(PERIMETER(GT)*0.18/AREA(GATE)-200)
]
}
理解上述语句的要点是:
a.NETAREA RATIO的关键字含义是:用Layer1的面积除以Layer2的面积得到一个比值,检查这个比值是否超过了最大值。
b.一个!和2个!!的含义是:一个!的含义是当其图形不存在时,该表达式为1,当其图形存在时,该表达式为0。两个个!的含义是当其图形存在时,该表达式为1,当其图形不存在时,该表达式为0。
c.DRCINCREMENTAL CONNECT YES的含义是:连接关系不是一次性建立,而是逐步建立。每遇到一个CONNECT语句,就在前面的基础上增加新的连接关系。
其中ANT_b的含义是:M1图形的周长面积与gate的比值不能大于400,但是,如果M1图形连接了反向二极管,则其比值可以修改为:diode_area *400 + 2200。
书写其DRC Code如下:
//; A1 CHECKS
CONNECT A1 GT SD BY W1i
CONNECT W2i A1
A1_DIO = NET AREA SD > 0.16
ANT_b_a1 {
@ (A1 area / gate area) > 400
@ (A1 area / gate area) > Ratio (witheffective diode)
NETAREA RATIO A1 A1_DIO GATE > 0
[
!!AREA(A1) * !!AREA(GATE) *
(!AREA(A1_DIO)*(PERIMETER(A1)*0.41/AREA(GATE) - 400) +
!!AREA(A1_DIO)*(PERIMETER(A1)*0.41/AREA(GATE) - AREA(A1_DIO) * 400 -2200))
]
}
上述语句中,0.41是A1金属的厚度,通过 ! 和!!的条件来区分有diode和没有diode的计算公式。
由于antenna rule的书写比较复杂,为了验证其准确性,要通过手工画test pattern的方法就不太可行了。主要原因是:要计算某个图形的面积与另外一个图形的面积比值,并且还要考虑各种的连接组合,手工画容易出错。
因此,我们通过自动化的scout工具自动构造test pattern来验证Antenna DRC Code。以ANT_b_a1的rule为例,其步骤是:
步骤1:图形化scout rule如下:
注意在Diode Bonus的填写中写的是1800,而不是规则描述中的2200,原因是:在左侧的Max Value中填写了400,400 + 1800刚好等于2200。其中400的数字来源于当没有diode时的Max Value值。
步骤2:在scout工具的主界面中,点击Generate TestPattern,然后看good pattern的图形,如下:
把其中的一个图形放大:
可以看到该Pattern的图形中有diode连接,Max Value = 396,小于400,因此属于Good Pattern。
步骤3:在scout工具的主界面中,点击VerifyDRC按钮,工具运行结果pass。
上面我们把一个简单的Antenna Rule检查做了分析和总结。实际应用中,AntennaRule的计算公式,分母不一定是Gate Area,也可能有其它模式。