DRC函数说明¶
函数基本语法格式为drc.function_name(arg_1, arg_2, arg_3)。其中drc为函数类型,function_name为函数名,括号()内为函数参数,每个参数字段用逗号间隔。
参数语法格式为arg_1=value,其中arg_1为参数名,value为参数值。函数的基础语法说明中中括号[]内的参数字段为可选参数,其余为必填参数,函数关键字都为可选参数。
external¶
基础语法¶
drc.external(layer1=layer1,[layer2=layer2],value="constraint",out="edge_pairs")
例:共面波导外部间距检测
# 共面波导外部间距检测
CPW_ExternalCheck = drc.external(layer1=CPW, value_limits="x<50", out="polygons")
CPW_ExternalCheck.output("共面波导外部间距检测","共面波导管道外部之间的间距小于50um,输出结果为多边形")
使用说明¶
图层1边外部到图层2边 外部间距
检查,对于版图上所有的多边形的边,可以将每条边的两侧分为内侧和外侧。external检查从一条边的外侧到另一条边的外侧的间距是否符合约束值。
如图所示,如果蓝色图形为图层layer2,黑色框为图层layer1,当constraint为小于1时,检查范围为红色虚线范围。value必须有 最大值
,因此constraint的写法中x>a、x>=a、x!=a是不可用的。

输出结果即报错图形为红色边,输出的结果为layer2边上的点layer1上的点之间距离小于1um的点的集合。

默认情况下,external会检查所有输入图层的所有多边形的所有边,不会检测存在重合的多边形的边的重合部分。如图所示,黑色部分不再检查。

默认情况下,检查不会穿透输入图层的边。如图所示,左侧图形相对于右侧和中间矩形的间距均小于10um,但是对左侧矩形检查时,输出结果只有左侧矩形的右边和中间矩形的左边,而不会穿透中间矩形检查左侧矩形和右侧矩形的间距。

默认情况下,只检查平行和角度为锐角的边,不检查垂直和角度为钝角的边。如图所示,检查1为平行边,2为锐角边,3为垂直边,4为钝角边。

关键字¶
abut_limits=”constraint”
设置检测夹角内的相邻边间的间距。默认情况下,layer1与layer2存在重合,因此不会进行检查。constraint值设置小于90,如图所示,输出结果为黑色部分。constraint值范围必须在0-180之间。

space=True/False
设置是否只测量不同多边形的边之间的间距。如图所示,添加space=Tru关键字后,不再检查灰色间距,只检查红色间距

angle_limits=”constraint”
设置角度约束,如果不指定约束值,则只检查非平行边之间的间距,如果指定了角度约束值,则只检查符合角度约束值的边之间的间距。constraint范围为0-180。 如图所示,对于左侧矩形右边沿,只检测角度等于0的两条边,角度不为0的边不进行检查。

opposite=True/False
设置是否改变测量范围。如图所示,默认测量范围为所有满足约束值的点的集合,添加opposite关键字后,测量范围的长为测量边长,宽为约束值的矩形。

out=”edge_pairs/polygons/edges”
此关键字设置输出的图形类型,分别为边对、多边形、边。当未添加该关键字时,或值为polygons时,输出结果为多边形;值为edge_pairs时,输出结果为边对;值为edge时,输出结果为边。

internal¶
基础语法¶
drc.internal(layer1=layer1,[layer2=layer2],value="constraint",out="edge_pairs")
例:共面波导管道宽度检测
CPW_pipe_width_check = drc.internal(layer1=CPW_pipe, value_limits="x<2", abut_limits="x<90", out="polygons")
CPW_pipe_width_check.output("共面波导管道宽度检测","共面波导管道宽度间距小于2um,输出结果为多边形")
使用说明¶
internal检查从一条边的 内侧
到另一条边的 内侧
之间的间距是否符合约束值,internal的layer2参数为可选项,如未添加layer2参数,则对layer1图形内部进行检查,如果添加了layer2参数,则对layer1图形与layer2图形之间进行检查。
value的值必须有最大值,因此constraint的写法中x>a、x>=a、x!=a是不可用的。
下图为internal函数的基础检查,左图为单图层间距检查,右图为双图层间距检查。由于重合部分不会进行检查,因此图形A与其他图形之间,图形B与图形C之间均不会进行检查。

关键字¶
abut_limits=”constraint”
设置是否增加相邻边夹角检查,输出满足条件的夹角边。constraint值范围必须在0-180之间。下图为两个图层边内部夹角小于90°的检测,输出结果为边对。

out=”edge_pairs/polygons/edges”
此关键字用于控制输出结果对象类型,可选值分别为边对、多边形、边。默认情况下,当未添加该关键字时,或值为polygons时,输出结果为多边形;值为edge_pairs时,输出结果为边对;值为edge时,输出结果为边。

angle_limits=”constraint”
设置只测量夹角满足角度约束的边之间的间距。constraint值范围必须在0-180之间。

opposite=True/False
此关键字设置是否改变测量范围。如图所示,默认测量范围为所有满足约束值的点的集合,添加opposite关键字后,测量范围为长为测量边长,宽为约束值的矩形。


enclosure¶
基础语法¶
drc.enclosure(layer1=layer1,layer2=layer2,value="constraint",out="edge_pairs")
例:空气桥的桥墩与桥面间距检测
AirBridge_pier_deck_check = drc.enclosure(layer1=AirBridge_L1,layer2=AirBridge_L2, value_limits="x<2", out="polygons")
AirBridge_pier_deck_check.output('空气桥桥墩与桥面间距检测', '空气桥桥墩与桥面间距小于2um', '输出结果为多边形')
使用说明¶
enclosure检查从一条边的 外侧
到另一条边的 内侧
之间的间距是否符合约束值。检查顺序固定为layer1的外侧至layer2内侧,如果需要执行layer2外侧至layer1内侧的检查,则需要交换输入图层顺序。
value的值必须有 最大值
,因此constraint的写法中x>a、x>=a、x!=a是不可用的。
下图为enclosure函数的基础检查,左右图分别为交换图层参数顺序后分别执行的检查。

关键字¶
abut_limits=”constraint”
设置是否增加相邻边夹角检查,输出满足条件的夹角边。constraint值范围必须在0-180之间。

out=”edge_pairs/polygons/edges”
此关键字用于控制输出结果对象类型,可选值分别为边对、多边形、边。 默认情况下,当未添加该关键字时,或值为polygons时,输出结果为多边形;值为edge_pairs时,输出结果为边对;值为edge时,输出结果为边。

angle_limits=”constraint”
设置只测量夹角满足角度约束的边之间的间距。constraint值范围必须在0-180之间。 如下图,只测量layer1图层外侧与layer2图层内侧非平行夹角。

opposite=True/False
此关键字设置是否改变测量范围。如图所示,默认测量范围为所有满足约束值的点的集合,添加opposite关键字后,测量范围为长为测量边长,宽为约束值的矩形。


boolean¶
基础语法¶
drc.boolean(layer1=layer1,layer2=layer2,operation='operation')
例:将图层Base_L1与图层CPW做“and”运算,运算结果作为CPW_pipe输出
CPW_pipe = drc.boolean(layer1=Base_L1, layer2=CPW, operation="and")
使用说明¶
对输入图层图形执行 布尔运算
操作,并输出结果。
当layer2参数值与layer1参数值相同时,可以执行对同一个图层对象之间的布尔运算。当operation为not时,layer2参数值不能与layer1相同,相同则报语法错误。
以下图例中,红色区域为图层1与图层2的运算结果,虚线框无效

关键字¶
operation=’and’
输出输入图层图形的交集

operation=’or’
输出输入图层图形的并集

operation=’not’
输出第一个输入图层图形减去第二个输入图层图形的结果。

operation=’xor’
输出输入图层图形不重合的图形区域。

not_inside¶
基础语法¶
drc.not_inside(layer1=layer1,layer2=layer2)
例:检查indium是否在TiNpad中
Flip_Inpillar_TiNPad_check = drc.not_inside(layer1=Inpillar_Flip, layer2=Tinpad_Flip)
使用说明¶
将所有不包含于layer2图形的layer1图形作为结果输出。如图所示,输出结果为红色边框图形。


not_enclose¶
基础语法¶
drc.not_enclose(layer1=layer1,layer2=layer2,[count='constraint'])
使用说明¶
将所有不包含任意一个layer2图形的layer1图形作为结果输出。


如果加入约束值constraint,则将所有包含layer2图形数量不满足约束值的layer1图形作为结果输出。加入约束值为>2时的输出结果如图所示。(简单来说,若layer1图形中包含了layer2图形,但是layer2图形不超过两个,输出此layer1图形)

extents¶
基础语法¶
drc.extents(layer=layer)
使用说明¶
构建输入图层每个图形的包围矩形,如图所示,输出结果为虚线矩形。

关键字¶
square=True/False
设置是否使extents操作不再构建包围矩形,而是以包围矩形中心为中心,构建边长为包围矩形最长边边长的正方形,如图所示。

extent_draw¶
基础语法¶
drc.extent_drawn([original])
例:包围盒子的宽度检测
#"internal"函数检测步骤1中版图包围盒子的宽度小于50um
library_step_1 = drc.extent_drawn(original=True)
使用说明¶
构建所有非数据库(规则检查中不会用到,无连接性,不用于图层定义)图层图形的包围矩形,不包含标签。
关键字¶
Original=Ture/false
使用extent drawn构建版图中所有图层图形的包围矩形,而不再只针对数据库图层,不包含标签。
interact_polygon¶
基础语法¶
drc.interact_polygons(layer1=layer1,layer2=layer2)
使用说明¶
选择所有与layer2图形存在相交的layer1多边形,默认情况下,会选择“边和边相交”,不选择“点和点相交”及“点和边相交”两种情况。如图所示,黑色矩形为输出结果。输入必须为多边形,不是多边形则报输入对象类型错误。


interact_not_polygons¶
基础语法¶
drc.interact_not_polygons(layer1=layer1,layer2=layer2)
使用说明¶
选择所有与layer2非多边形的图形存在相交的layer1的非多边形图形,可用对象包括点、边、边对。输入不能为多边形,是多边形则报输入对象类型错误。

center_point¶
基础语法¶
drc.center_point(layer=layer1)
使用说明¶
输出输入图层图形包围盒子的中心点。点对象仅在规则文件内使用,当作为规则检查结果输出时,在画板上显示为一个微小的正方形(边长为1)。

center_line¶
基础语法¶
drc.center_line(layer=layer_edge_pairs)
使用说明¶
输出输入图层的中线。该函数的输入必须为边对。不是边对则报输入对象类型错误。

intersection_angle¶
基础语法¶
drc.Intersection_angle_edges(layer=layer_edges,value="constraint")
使用说明¶
检查输入图层相交边之间的角度是否符合约束值,输出满足条件的边。该函数的输入必须为边,不是边则报输入对象类型错误。constraint值必须在0-180之间。角度为0°与180°时是等效的,因此当constraint值为x==0与x==180时会输出相同结果。 对于任意一条边,都存在与x轴方向的两个夹角:正方向夹角和负方向夹角。Intersection_angle函数将始终使用正方向夹角用于边的夹角计算。
