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是不可用的。

../_images/%E5%9B%BE%E7%89%871.png

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

../_images/%E5%9B%BE%E7%89%872.png

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

../_images/%E5%9B%BE%E7%89%873.png

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

../_images/%E5%9B%BE%E7%89%874.png

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

../_images/%E5%9B%BE%E7%89%875.png

关键字

  • abut_limits=”constraint”

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

../_images/%E5%9B%BE%E7%89%876.png
  • space=True/False

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

../_images/%E5%9B%BE%E7%89%877.png
  • angle_limits=”constraint”

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

../_images/%E5%9B%BE%E7%89%878.png
  • opposite=True/False

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

../_images/%E5%9B%BE%E7%89%879.png
  • out=”edge_pairs/polygons/edges”

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

../_images/%E5%9B%BE%E7%89%8710.png

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之间均不会进行检查。

../_images/%E5%9B%BE%E7%89%8711.png

关键字

  • abut_limits=”constraint”

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

../_images/%E5%9B%BE%E7%89%8712.png
  • out=”edge_pairs/polygons/edges”

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

../_images/%E5%9B%BE%E7%89%8713.png
  • angle_limits=”constraint”

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

../_images/%E5%9B%BE%E7%89%8714.png
  • opposite=True/False

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

../_images/%E5%9B%BE%E7%89%8715.png ../_images/%E5%9B%BE%E7%89%8716.png

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函数的基础检查,左右图分别为交换图层参数顺序后分别执行的检查。

../_images/%E5%9B%BE%E7%89%8717.png

关键字

  • abut_limits=”constraint”

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

../_images/%E5%9B%BE%E7%89%8718.png
  • out=”edge_pairs/polygons/edges”

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

../_images/%E5%9B%BE%E7%89%8719.png
  • angle_limits=”constraint”

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

../_images/%E5%9B%BE%E7%89%8720.png
  • opposite=True/False

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

../_images/%E5%9B%BE%E7%89%8721.png ../_images/%E5%9B%BE%E7%89%8722.png

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的运算结果,虚线框无效

../_images/%E5%9B%BE%E7%89%8723.png

关键字

  • operation=’and’

输出输入图层图形的交集

../_images/%E5%9B%BE%E7%89%8724.png
  • operation=’or’

输出输入图层图形的并集

../_images/%E5%9B%BE%E7%89%8725.png
  • operation=’not’

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

../_images/%E5%9B%BE%E7%89%8726.png
  • operation=’xor’

输出输入图层图形不重合的图形区域。

../_images/%E5%9B%BE%E7%89%8727.png

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图形作为结果输出。如图所示,输出结果为红色边框图形。

../_images/%E5%9B%BE%E7%89%8728.png ../_images/%E5%9B%BE%E7%89%8729.png

not_enclose

基础语法

drc.not_enclose(layer1=layer1,layer2=layer2,[count='constraint'])

使用说明

将所有不包含任意一个layer2图形的layer1图形作为结果输出。

../_images/%E5%9B%BE%E7%89%8730.png ../_images/%E5%9B%BE%E7%89%8731.png

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

../_images/%E5%9B%BE%E7%89%8732.png

extents

基础语法

drc.extents(layer=layer)

使用说明

构建输入图层每个图形的包围矩形,如图所示,输出结果为虚线矩形。

../_images/%E5%9B%BE%E7%89%8733.png

关键字

  • square=True/False

设置是否使extents操作不再构建包围矩形,而是以包围矩形中心为中心,构建边长为包围矩形最长边边长的正方形,如图所示。

../_images/%E5%9B%BE%E7%89%8734.png

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多边形,默认情况下,会选择“边和边相交”,不选择“点和点相交”及“点和边相交”两种情况。如图所示,黑色矩形为输出结果。输入必须为多边形,不是多边形则报输入对象类型错误。

../_images/%E5%9B%BE%E7%89%8735.png ../_images/%E5%9B%BE%E7%89%8736.png

interact_not_polygons

基础语法

drc.interact_not_polygons(layer1=layer1,layer2=layer2)

使用说明

选择所有与layer2非多边形的图形存在相交的layer1的非多边形图形,可用对象包括点、边、边对。输入不能为多边形,是多边形则报输入对象类型错误。

../_images/%E5%9B%BE%E7%89%8737.png

center_point

基础语法

drc.center_point(layer=layer1)

使用说明

输出输入图层图形包围盒子的中心点。点对象仅在规则文件内使用,当作为规则检查结果输出时,在画板上显示为一个微小的正方形(边长为1)。

../_images/%E5%9B%BE%E7%89%8738.png

center_line

基础语法

drc.center_line(layer=layer_edge_pairs)

使用说明

输出输入图层的中线。该函数的输入必须为边对。不是边对则报输入对象类型错误。

../_images/%E5%9B%BE%E7%89%8739.png

intersection_angle

基础语法

drc.Intersection_angle_edges(layer=layer_edges,value="constraint")

使用说明

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

../_images/%E5%9B%BE%E7%89%8740.png