Calibre eqDRC(方程化 DRC)核心技术解析与实战指南(14-2)

本文基于 Calibre v2017.1 官方手册,聚焦 eqDRC 核心 SVRF 语句集(DFM Property/Function/RDB 等),从语法格式、核心功能、实战案例三个维度,系统拆解复杂 DRC 规则的实现方法,覆盖单 / 多图层约束、自定义函数、属性关联等高级场景,助力先进工艺下的精准验证。

一、eqDRC 核心 SVRF 语句总览

可以通过一组 SVRF 语句,实现基于 eqDRC 的规则检查。表 4-1 列出了 eqDRC 对应的 SVRF 语句。

其中,DFM Property 语句尤为关键,它显著拓展了 Calibre nmDRC 的功能,具体支持以下特性:

  • 支持数学表达式与函数
  • 支持以图形化方式展示用户自定义的属性值
  • 支持条件表达式与表达式链
  • 支持任意数量的输入图层;在特定配置下,还支持任意图层类型的组合
  • 支持对来自多个输入图层的图形进行聚类分析

下文将对这些功能概念展开详细介绍。

表 1 eqDRC 对应的 SVRF 语句

语句 描述
DFM Property 创建附加指定属性的派生图层
DFM Function 创建用户自定义函数,供 DFM Property 表达式调用
DFM RDB 将原始图层或派生图层的数据(包括属性信息)写入指定的输出格式
DFM Copy 复制任意类型的图层(多边形图层、边缘图层或错误图层)
DFM Stamp 基于 DFM 属性为图层分配节点编号
DFM Defaults 允许为特定运算指定默认选项
DFM Property Merge 接收未合并的图层作为输入,并将其转换为常规的合并后图层
DFM Text 将文本对象转换为 DFM 属性,并输出一个未合并的图层
DFM Space 针对大距离约束场景,实现高效的边缘到边缘距离测量
DFM Read 允许将输入数据库中的版图属性作为 DFM 属性进行访问

:除 DFM Function 外,其余所有语句均可在 calibre -drc 命令中使用 Calibre nmDRC-H 许可。

eqDRC 工具集通过一组扩展 SVRF 语句实现多变量约束、数学运算、属性关联等高级功能,各语句的核心作用与适用场景如下:

语句名称 核心功能 关键特性 适用场景
DFM PROPERTY 生成带自定义属性的派生层 支持数学表达式、多图层聚类、条件筛选 多变量约束检查、属性计算(如修正值、比率)
DFM FUNCTION 定义自定义数学函数 / 查找表 支持单 / 多输入、线性 / 非线性插值 复用复杂表达式(如密度计算、工艺拟合函数)
DFM RDB 输出图层数据及属性到 RDB 文件 保留属性信息,兼容 Calibre RVE/DESIGNrev 结果可视化、属性查看、调试
DFM COPY 复制任意类型图层(多边形 / 边缘 / 错误层) 支持错误层格式转换(如边缘→多边形) 图层格式适配、中间层复用
DFM STAMP 基于 DFM 属性为图层分配节点号 关联几何对象与属性标识 多图层关联分析、节点级约束
DFM DEFAULTS 配置 eqDRC 操作的默认选项 统一设置聚类模式、插值方式等 简化规则文件,避免重复配置
DFM PROPERTY MERGE 将未合并图层转换为合并图层 处理多源图层的重叠区域 多图层联合检查后的结果整合
DFM TEXT 将文本对象转换为 DFM 属性 支持文本信息与几何对象关联 带有文本标签的约束检查(如网表名关联)
DFM SPACE 高效测量大间距边缘距离 优化大约束值的间距测量性能 先进工艺大间距约束(如 > 30um)
DFM READ 读取输入数据库中的版图属性 访问版图原生属性(如设计层级、坐标) 基于版图元数据的约束检查

注意:除 DFM FUNCTION 外,所有语句均支持 calibre -drc -hier 层级化运行(需 nmDRC-H 许可)。

二、核心语句详解与实战案例

1. DFM PROPERTY:eqDRC 的核心语句

DFM PROPERTY 是实现多变量约束与属性计算的核心,支持单图层独立计算、多图层聚类关联,输出带属性的派生层(与第一个输入层类型一致)。

DFM Property 是 eqDRC 的核心组件。它是一种图层运算,支持接收一个或多个输入图层 (除特殊情况外,支持任意类型的组合,包括原始图层、派生多边形图层、派生边缘图层和派生错误图层)。该运算的输出图层类型与主输入图层(即第一个输入图层)保持一致,且会附加所有用户指定的属性(以 "名称 - 值" 对的形式存在)。

输出图层上的版图对象,是主输入图层上版图对象的子集。也就是说,主输入图层上的部分对象,可能会根据运算中指定的约束条件,被排除在输出图层之外。当属性计算涉及多个输入图层时,该运算会根据指定的关键字,将主输入图层上的对象与次要输入图层上的对象进行聚类关联。

1.1 核心语法格式

svrf

复制代码
<output_layer> = DFM PROPERTY <primary_layer> [secondary_layer1 ...] [clustering_mode]
  [property1 = expression1] [constraint1]
  [property2 = expression2]
  ...
  • 关键参数说明
    • primary_layer:主输入层(输出层类型与该层一致);
    • secondary_layer:次要输入层(可多个,用于多图层关联);
    • clustering_mode:多图层聚类模式(定义主 / 次要层的关联规则,见下表);
    • property = expression:自定义属性(如error_value),表达式支持数学函数(LOG/EXP)、测量函数(LENGTH/AREA)、属性访问(PROPERTY());
    • constraint:筛选条件(如>1/<=0.5),仅满足条件的主层对象会输出到结果层。

1.2 多图层聚类模式(关键!)

多图层模式下,需通过聚类模式定义主层与次要层的关联规则,核心模式如下:

聚类模式 适用图层类型 关联规则 示例场景
INTERSECTING 仅多边形层(默认) 主层多边形 + 与主层重叠的次要层多边形(次要层被裁剪) 源漏区与接触孔的关联计数
OVERLAP 所有类型(多边形 / 边缘 / 错误层) 主层对象 + 与主层重叠的次要层对象(含边缘重叠) 线宽与间距的协同约束
OVERLAP ABUT ALSO 所有类型 主层对象 + 与主层重叠 / 相邻的次要层对象 栅极与源漏区的关联检查
NODAL 多边形 / 边缘层 主层对象 + 与主层节点号相同的次要层对象(忽略空间关系) 基于节点标识的多图层关联

1.3 单层模式

(1)单图层模式:边缘长度测量与筛选

需求:测量金属层边缘长度,仅输出长度 > 5um 的边缘,并记录长度属性。

以派生边缘图层 L1 为输入,输出一个新图层,该图层附加了用于报告每条边缘长度的属性。本示例中,被方括号包裹的属性表达式(也称为 DFM 表达式)使用了 LENGTH 测量函数。

svrf

复制代码
// 1. 生成金属层边缘层
met1_edge = EDGE MET1  // 提取MET1层的边缘(派生边缘层)
// 2. DFM PROPERTY计算边缘长度并筛选
long_edge = DFM PROPERTY met1_edge
  [edge_length = LENGTH(met1_edge)]  // 测量边缘长度(LENGTH()为测量函数)
  > 5  // 仅保留长度>5um的边缘
// 3. 输出结果到RDB
LONG_EDGE_CHECK {
  DFM RDB long_edge "./long_edge.rdb"
  COMMENT "Metal1 edge length >5um check"
}

图1 Edge Length

(2)单图层模式:多边形面积 - 周长比计算

需求:计算 Poly 层多边形的面积 / 周长比,筛选比值≥0.4 的多边形。

以派生多边形图层 L3 为输入,使用 AREA(面积)和 PERIM(周长)两个测量函数,计算每个图形的面积周长比:

对于输出图层 L4 上的每个图形,都会计算一个名为 ratio 的属性,其值等于该图形的面积除以周长。表达式中设置了约束条件,仅当 ratio 属性值大于等于 0.4 时 ,对应的图形才会被输出到图层 L4。具体效果可参考下图。

由于最左侧的 L3 多边形,其属性值低于约束阈值 0.4,因此该多边形被排除在输出图层 L4 之外。

图2 Polygon Area to Perimeter Ratio

svrf

复制代码
L4 = DFM PROPERTY L3
[ratio = AREA(L3)/PERIM(L3)] >= 0.4

1.4 多图层模式:

在涉及多个输入图层DFM Property 运算中,Calibre 会执行聚类操作 ,将主输入图层上的每个图形,以一种或多种方式与次要输入图层上的零个、一个或多个图形进行关联。若主输入图层某图形对应的聚类中,包含来自同一次要输入图层的多个图形,则 DFM Property 运算表达式的结果,将取该次要图层上所有图形对应属性值的总和。

DFM Property 支持以下四种聚类模式:

  1. INTERSECTING(相交模式) 仅适用于所有输入图层均为多边形图层的场景(默认聚类模式)。在该模式下,每个聚类由一个主图层多边形,加上所有与该主多边形存在相交关系(即共享内部点)的次要图层多边形构成。与主多边形相交的次要图层多边形,会被主多边形裁剪。

  2. OVERLAP(重叠模式) 适用于所有图层类型。在该模式下,每个聚类由一个主图层版图对象,加上所有与该主对象存在重叠关系的次要图层对象构成(多边形需共享内部点,边缘需共享非端点的点)。

  3. OVERLAP ABUT ALSO(重叠 + 邻接模式) 适用于所有图层类型。在该模式下,每个聚类由一个主图层版图对象,加上所有与该主对象存在重叠或邻接关系的次要图层对象构成。

  4. NODAL(节点模式) 仅适用于输入图层为多边形图层或边缘图层的场景。在该模式下,每个聚类由一个主图层版图对象,加上所有与该主对象具有相同节点编号的次要图层对象构成。聚类内各版图对象之间的空间位置关系会被忽略。

(1)多图层模式:多边形计数器

本示例对应下图用于统计与派生多边形图层 L5 相关联的派生多边形图层 L6 的实例数量,并将统计结果以名为 cnt 的属性进行输出。在 DFM Property 运算中,分别使用 INTERSECTINGOVERLAP ABUT ALSO 两种聚类模式,创建派生多边形图层 L7L8

复制代码
L7 = DFM PROPERTY L5 L6 INTERSECTING
[cnt = COUNT(L6)]
L8 = DFM PROPERTY L5 L6 OVERLAP ABUT ALSO
[cnt = COUNT(L6)]

图 Multi-Layer DFM Property

对于图层 L7,每个 L5 多边形对应的 cnt 属性值均为 2,这是因为表达式仅统计与 L5 图层存在相交关系的 L6 图形。

对于图层 L8,左侧 L5 多边形对应的 cnt 属性值为 3,右侧 L5 多边形对应的 cnt 属性值为 2。这是因为 OVERLAP ABUT ALSO 聚类模式,会统计所有与 L5 图层存在重叠或邻接关系的 L6 图形。

(2)多图层模式:源漏区接触孔计数

需求:统计每个源漏区(SD)内的接触孔(CON)数量,并关联到 SD 区域。本示例通过多层模式的 DFM Property 运算,统计每个源漏区中的接触孔数量。下图 展示了在 Calibre DESIGNrev 中查看的输出结果,其中高亮区域的接触孔计数为 2。

svrf

复制代码
// 1. 生成源漏区(SD)派生层
gate = POLY AND AA  // 栅极层(Poly与有源区重叠)
imp = AA NOT POLY   // 有源区非栅极部分
sd = imp INTERACT POLY  // 源漏区(与栅极相邻的有源区)
// 2. 多图层聚类:统计SD内的接触孔数量
sd_con_count = DFM PROPERTY sd CON INTERSECTING  // 聚类模式:SD与CON重叠
  [con_num = COUNT(CON)]  // COUNT():统计次要层对象数量
// 3. 输出结果(SD区域附带接触孔计数属性)
SD_CON_CHECK {
  DFM RDB sd_con_count "./sd_con.rdb"
  COMMENT "Contact count in source-drain regions"
}

结果查看:在 Calibre RVE 中高亮 SD 区域,会显示con_num属性(如 2 表示该 SD 内有 2 个接触孔)。若要在高亮显示结果时,同时展示属性名称和属性值,请在 Calibre RVE 中执行以下操作:选择 Setup > Options > Highlighting ,展开 DRC/DFM Highlighting 区域,并确保勾选 While highlighting, show ... Properties 选项。

图 Number of Contacts in Source-Drain Regions

1.4 属性的访问

在 DFM 表达式中,DFM Property 允许访问在其他 DFM 运算中定义的属性值。这一功能在聚类图层与主图层无直接交互关系的场景下尤为实用。

例如,基于前文的接触孔计数示例,若你不需要统计每个源漏区的接触孔数量,而是需要统计每个栅极对应的接触孔数量,即可通过属性访问功能实现。

具体实现步骤如下:

  1. 首先,按照前文的方法,计算出每个源漏区对应的接触孔数量。

  2. 由于 sd 图层(源漏区图层)与 gate 图层(栅极图层)存在邻接关系,因此可以定义第二个 DFM Property 运算:将 gate 作为主图层,将 sd_count(包含源漏区接触孔计数属性的图层)作为次要图层,并使用 OVERLAP ABUT ALSO 关键字。

    gate = POLY AND AA
    imp = AA NOT POLY
    sd = imp INTERACT POLY
    sd_count = DFM PROPERTY sd CON INTERSECTING
    [sd_con = COUNT(CON)]
    gate_count = DFM PROPERTY gate sd_count OVERLAP ABUT ALSO MULTI
    [gate_con = PROPERTY(sd_count,sd_con)]

gate_con 属性的值,由 PROPERTY 函数计算得出。该函数的作用是,返回指定图层上指定属性的数值。在本示例中,就是从 sd_count 图层中提取 sd_con 属性的值。

注意 若在 DFM Property 运算中指定了 INSIDE ONLY 关键字,则无法使用 PROPERTY 函数。

在第二个 DFM Property 运算中,必须添加 MULTI 关键字。这是因为一个接触孔可能会关联到多个栅极图形。若不指定该关键字,Calibre 会随机将每个接触孔关联到一个栅极,并在运行日志中发出警告。若这种 "一对一" 的关联是你预期的行为,则可以通过指定 NOMULTI 关键字来抑制该警告。

下图展示了在 Calibre DESIGNrev 中查看的输出结果,其中高亮栅极对应的接触孔数量为 3。

图 栅极对应接触孔数量统计结果示意图

1.5 条件表达式(三目运算符)

条件表达式的作用是:当指定条件为真时,返回一个结果;当条件为假时,返回另一个结果。

条件表达式的语法格式如下:

复制代码
(condition) ? result_if_true : result_if_false

其中,condition(条件)、result_if_true(条件为真时的结果)和 result_if_false(条件为假时的结果)均为合法的 DFM 表达式。condition 表达式中必须包含关系运算符(<<===>=>!=)。

支持基于条件返回不同属性值,语法:(condition) ? result_if_true : result_if_false

2. DFM FUNCTION:自定义函数与查找表

DFM Function 语句的作用是,创建自定义数学表达式查找表 ,供 DFM Property 语句调用。

DFM FUNCTION 用于定义可复用的数学函数或查找表,简化复杂表达式编写,支持单 / 多输入、线性 / 非线性插值。

示例 1

本示例通过 DFM Function 语句,定义了一个名为 Ratio 的函数。该函数接收一个图层作为输入参数,返回该图层中图形的面积周长比。随后,在 DFM Property 表达式中调用了该函数。

复制代码
DFM FUNCTION [Ratio(LAYER L1) AREA(L1)/PERIM(L1)]
M1_ratio = DFM PROPERTY M1 [area_perim_ratio = Ratio(M1)]

示例 2

本示例基于前文的 "接触孔计数" 示例进行拓展,通过 DFM Function 语句定义了一个包含两个输入参数的函数。对于每个源漏区,CON_AREA 函数用于计算接触孔面积与源漏区面积的比值。

复制代码
gate = POLY AND AA
imp = AA NOT POLY
sd = imp INTERACT POLY
DFM FUNCTION [CON_AREA(LAYER L1,LAYER L2) AREA(L2)/AREA(L1) ]
sd_count = DFM PROPERTY sd CON INTERSECTING
[sd_con = COUNT(CON)]
[contact_area = CON_AREA(sd,CON)]

示例 3

本示例中,函数 F 会根据输入数值,从指定的查找表中返回对应的结果。查找表中的数值以隐式成对的方式存在:每一对的第一个数值为输入值,第二个数值为函数映射后的输出值。

在以下代码中:

  • AREA(MET1) 的值为 0.1,则函数返回 12;

  • AREA(MET1) 的值为 0.2,则函数返回 16;

  • AREA(MET1) 的值介于查找表中两个指定数值之间,则函数会通过线性插值 的方式计算返回值。例如,当 AREA(MET1) 的值为 0.15 时,函数返回 14。

    DFM FUNCTION [ F(NUMBER X) TABLE LINEAR { 0.0 10 0.1 12 0.2 16 0.3 22 0.4 30 0.5 46 0.6 54 0.7 60 0.8 66 0.9 72 1.0 76 } ]
    met1_f = DFM PROPERTY MET1 [A2 = F(AREA(MET1)) ]

若要将插值算法从线性插值改为双三次插值 ,只需将 LINEAR 关键字替换为 SPLINE 关键字即可。

3. DFM RDB:结果输出与属性保留

DFM RDB 用于将派生层(含自定义属性)输出到 ASCII 格式的 RDB 文件,兼容 Calibre RVE/DESIGNrev,便于结果可视化与调试。

DFM RDB 是一种图层运算,用于将原始图层或派生图层的数据(包括附加的属性信息)写入 ASCII RDB 格式 的文件。该运算必须嵌套在规则检查语句的内部

calibre -dfm 命令的运行流程中,输出的 RDB 文件会被存储在 DFM 数据库中,并非独立文件;而在 calibre -drc 命令的运行流程中,输出的 RDB 文件为独立文件。

3.1 核心语法格式

以下代码示例中,eqdrc_err 图层(通过 DFM Property 运算创建的派生图层)被写入名为 eqDRC.rdb 的 DFM RDB 文件。该图层被包含在一个名为 via_count_gate_width 的规则检查中。

svrf

复制代码
<rule_check_name> {
  DFM RDB <input_layer> <output_file.rdb> [CHECKNAME <check_name>]
  [COMMENT "description"]
}
  • 必须包含在规则检查块({})内;
  • CHECKNAME:可选,指定结果在 RVE 中的显示名称;
  • 输出文件:保留图层几何信息与所有自定义属性(如error_valuefix建议)。

3.2 实战示例

svrf

复制代码
WIDE_METAL_EQDRC {
  DFM RDB eqdrc_err "./wide_metal_eqdrc.rdb" CHECKNAME "Wide Metal Spacing (eqDRC)"
  COMMENT "eqDRC check for CMP erosion risk: error_value > 1"
}
  • 结果查看:用 Calibre RVE 打开wide_metal_eqdrc.rdb,高亮违规区域可查看error_valuechange_space_by等属性。

4. DFM COPY:灵活复制与格式转换

DFM COPY 支持复制任意类型图层(多边形 / 边缘 / 错误层),并可将错误层转换为多边形或边缘层,比基础COPY语句更灵活。

对于派生错误图层,该运算支持以下三种处理方式:

  1. 将错误簇转换为多边形,并输出一个多边形图层;
  2. 将错误簇转换为独立的边缘,并输出一个边缘图层;
  3. 将包含两条边缘的错误簇,转换为一条单独的边缘 ------ 该边缘为原错误簇两条边缘的中心线,并输出一个边缘图层。

4.1 核心语法格式

svrf

复制代码
<output_layer> = DFM COPY <input_layer> [CONVERT {POLYGON | EDGE | CENTERLINE}]
  • 转换选项:
    • CONVERT POLYGON:将错误层 / 边缘层转换为多边形层;
    • CONVERT EDGE:将错误层 / 多边形层转换为边缘层;
    • CONVERT CENTERLINE:将双边缘错误层转换为中心线(如间距错误→中心线)。

4.2 实战案例

svrf

复制代码
// 1. 复制边缘层并转换为多边形层(用于后续面积计算)
met1_edge_poly = DFM COPY met1_edge CONVERT POLYGON
// 2. 复制间距错误层并转换为中心线(便于定位错误位置)
space_err_center = DFM COPY space_err CONVERT CENTERLINE

三、关键技术要点

1. 测量函数与数学运算支持

DFM PROPERTYDFM FUNCTION 支持以下核心函数,满足复杂计算需求:

  • 测量函数LENGTH()(边缘长度)、AREA()(多边形面积)、PERIM()(周长)、EW()(有效宽度)、COUNT()(对象计数);
  • 数学函数LOG()(自然对数)、LOG10()(常用对数)、EXP()(指数)、ABS()(绝对值)、SQRT()(平方根);
  • 字符串函数STR()(数值转字符串)、CONCAT()(字符串拼接);
  • 属性函数PROPERTY(layer, prop_name)(访问其他层属性)。

2. 多图层关联的关键注意事项

  • MULTI 关键字 :当一个次要层对象关联多个主层对象时,必须添加MULTI(否则工具随机分配并报警告);
  • NOMULTI 关键字 :明确仅需关联一个主层对象时,用NOMULTI抑制警告;
  • 聚类模式优先级 :多图层模式下未指定聚类模式时,默认使用INTERSECTING(仅适用于多边形层),非多边形层需显式指定OVERLAPOVERLAP ABUT ALSO

3. 性能优化建议

  • 限制输入图层范围 :用LAYOUT REGION或层过滤(如MET1 AND REGION core)减少计算对象;
  • 复用中间层 :将多规则共用的图层(如sdgate)提前定义,避免重复生成;
  • 大约束间距测量 :大间距约束(如 > 30um)优先使用DFM SPACE替代EXT,提升性能;
  • 合理设置聚类模式 :非必要时避免OVERLAP ABUT ALSO(关联范围最广,计算量最大),优先使用OVERLAPINTERSECTING

4. 兼容性与版本要求

  • 输出的 RDB 文件需用 Calibre RVE/DESIGNrev 2017.1 及以上版本打开;
  • 层级化运行(-hier)需 nmDRC-H 许可,DFM FUNCTION不支持层级化运行;
  • 自定义函数中使用的测量函数需与输入图层类型匹配(如LENGTH()仅适用于边缘层)。

四、summary

对于 32nm 以下先进工艺的 DFM 验证、限制性设计规则(RDR)检查,eqDRC 已成为必备工具。建议优先在 "面积 - 间距协同约束""宽金属 CMP 侵蚀""接触孔密度" 等场景落地,逐步替代传统离散规则,提升验证效率与良率保障能力。

相关推荐
qunaa01012 小时前
YOLO13-C3k2-RFCBAMConv:基于改进卷积的显卡型号识别与分类技术详解
人工智能·数据挖掘
F_D_Z2 小时前
K-Means 聚类的目标函数:簇内误差平方和
机器学习·kmeans·聚类
周杰伦fans2 小时前
BIM(建筑信息模型)不仅仅是一项技术
人工智能
seasonsyy2 小时前
再说机器学习与深度学习的关系
人工智能·深度学习·机器学习
饼干,2 小时前
期末考试3
开发语言·人工智能·python
乾元2 小时前
AI 在 BGP 池管理与路由安全(RPKI / ROA)中的自动化运用——服务提供商网络中“可验证路由”的工程化实现
运维·服务器·网络·人工智能·网络协议·安全·自动化
视觉&物联智能2 小时前
【杂谈】-AGI的皇帝新衣:OpenAI商业模式能否抵御开源模型冲击?
人工智能·ai·开源·openai·agi·deepseek
jackylzh2 小时前
数据集标签文件转换方法--将 XML 文件类型转化为 TXT 文件类型
人工智能·python·深度学习
小程故事多_802 小时前
Manus AI技术架构深度解析,CPU与GPU的异构协作革命
人工智能·架构·aigc