目录
[一、尺寸检查操作(DRC 核心)](#一、尺寸检查操作(DRC 核心))
[1. 核心尺寸检查类型(按工艺规则分类)](#1. 核心尺寸检查类型(按工艺规则分类))
[1.1 最小宽度检查(WIDTH)](#1.1 最小宽度检查(WIDTH))
[1.2 最小间距检查(SPACING)](#1.2 最小间距检查(SPACING))
[1.3 覆盖 / 包围检查(OVERLAP/ENCROACHMENT)](#1.3 覆盖 / 包围检查(OVERLAP/ENCROACHMENT))
[1.4 最小面积检查(AREA)](#1.4 最小面积检查(AREA))
[1.5 伸长率检查(ASPECT_RATIO)](#1.5 伸长率检查(ASPECT_RATIO))
[1.6 倒角 / 圆角检查(CHAMFER/CORNER)](#1.6 倒角 / 圆角检查(CHAMFER/CORNER))
[2. 尺寸检查的高级选项](#2. 尺寸检查的高级选项)
[1. 调试类辅助操作(定位问题核心)](#1. 调试类辅助操作(定位问题核心))
[1.1 输出中间层(WRITE_LAYER)](#1.1 输出中间层(WRITE_LAYER))
[1.2 生成详细报告(REPORT)](#1.2 生成详细报告(REPORT))
[1.3 标记违规(MARK)](#1.3 标记违规(MARK))
[2. 数据过滤类辅助操作](#2. 数据过滤类辅助操作)
[2.1 过滤图形(FILTER)](#2.1 过滤图形(FILTER))
[2.2 平滑图形(SMOOTH)](#2.2 平滑图形(SMOOTH))
[3. 图层管理类辅助操作(简化规则集)](#3. 图层管理类辅助操作(简化规则集))
[3.1 复制 / 重命名图层(COPY/RENAME)](#3.1 复制 / 重命名图层(COPY/RENAME))
[3.2 合并图层(MERGE)](#3.2 合并图层(MERGE))
[3.3 过滤无效图形(CLEAN)](#3.3 过滤无效图形(CLEAN))
[4. 规则集优化类辅助操作](#4. 规则集优化类辅助操作)
[4.1 条件判断(IF/ELSE)](#4.1 条件判断(IF/ELSE))
[4.2 注释与分组(COMMENT/GROUP)](#4.2 注释与分组(COMMENT/GROUP))
[三、实战组合:尺寸检查 + 辅助操作的完整流程](#三、实战组合:尺寸检查 + 辅助操作的完整流程)
[1. 尺寸检查误报](#1. 尺寸检查误报)
[2. 辅助操作失效](#2. 辅助操作失效)
[3. 规则集维护困难](#3. 规则集维护困难)
在 IC 验证流程中,尺寸检查操作 是 DRC(设计规则检查)的核心,用于验证版图是否符合工艺库定义的几何尺寸规范(如最小宽度、间距、覆盖等);辅助操作则用于优化规则集、调试问题、生成报告,提升验证效率。本文结合实战场景,详细拆解两类操作的语法、示例及应用技巧,适用于数字 / 模拟 IC 的 DRC 验证需求。
一、尺寸检查操作(DRC 核心)
尺寸检查操作针对版图几何形状的关键参数(宽度、间距、面积等)进行合规性判断,核心命令遵循 SVRF 语法,直接关联工艺规则手册(DRC Rulebook)。所有尺寸检查的结果会生成违规标记层(MARKER 层),用于后续查看和修改。
1. 核心尺寸检查类型(按工艺规则分类)
1.1 最小宽度检查(WIDTH)
功能 :验证单个图层中图形的最小宽度(如金属线、多晶硅、接触孔的最小宽度),避免因图形过窄导致光刻 / 蚀刻失败。语法:
WIDTH <layer> <min_width> [OPTIONS] → <violation_marker>
- 关键参数:
-
<layer>:待检查的目标层(原始层或派生层); -
<min_width>:工艺允许的最小宽度(单位:工艺默认单位,如 um); -
OPTIONS:可选参数(如DIRECTION {HORIZONTAL|VERTICAL}指定方向,EXCLUDE <exclude_layer>排除特定区域)。
-
实战示例(0.18um CMOS 工艺):
# 1. 金属1层最小宽度检查(最小0.18um,所有方向)
WIDTH metal1 0.18 → metal1_width_viol
# 2. 多晶硅层最小宽度检查(仅水平方向,最小0.15um)
WIDTH poly1 0.15 DIRECTION HORIZONTAL → poly1_h_width_viol
# 3. 接触孔最小宽度检查(最小0.12um,排除隔离环内区域)
WIDTH contact 0.12 EXCLUDE isolated_region → contact_width_viol
1.2 最小间距检查(SPACING)
功能 :验证同一图层(同层间距)或不同图层(异层间距)中图形的最小距离,避免相邻图形短路或寄生参数超标。语法:
# 同层间距(同一图层内图形的间距)
SPACING <layer> <min_spacing> [OPTIONS] → <violation_marker>
# 异层间距(两个不同图层间图形的间距)
SPACING <layer1> <layer2> <min_spacing> [OPTIONS] → <violation_marker>
-
关键参数:
-
SAME_NET/DIFFERENT_NET:仅检查同一网络 / 不同网络的图形间距(LVS 关联时使用); -
DIRECTION {X|Y|BOTH}:指定间距检查方向(X 轴 / Y 轴 / 双向); -
OVERLAP <overlap_layer>:仅检查与指定层重叠的区域。
-
实战示例:
# 1. 金属1层同层最小间距(最小0.18um,双向)
SPACING metal1 0.18 → metal1_spacing_viol
# 2. 多晶硅与有源区异层间距(最小0.12um,仅X轴方向)
SPACING poly1 active 0.12 DIRECTION X → poly_active_x_spacing_viol
# 3. 金属2层不同网络的最小间距(最小0.2um,SAME_NET时放宽至0.18um)
SPACING metal2 0.2 DIFFERENT_NET → metal2_diff_net_spacing_viol
SPACING metal2 0.18 SAME_NET → metal2_same_net_spacing_viol
1.3 覆盖 / 包围检查(OVERLAP/ENCROACHMENT)
功能:验证两个图层的重叠程度(覆盖)或一个图层对另一个图层的延伸程度(包围),确保连接可靠性(如接触孔覆盖有源区、金属层覆盖接触孔)。
-
OVERLAP(覆盖检查) :要求层 A 必须覆盖层 B 的最小面积 / 宽度,语法:
OVERLAP <layer1> <layer2> <min_overlap> [OPTIONS] → <violation_marker> -
ENCROACHMENT(包围检查) :要求层 A 必须延伸出层 B 的最小宽度(如有源区延伸出栅极),语法:
ENCROACHMENT <layer1> <layer2> <min_encroach> [OPTIONS] → <violation_marker>
实战示例:
# 1. 接触孔对有源区的最小覆盖(接触孔必须覆盖有源区至少0.05um)
OVERLAP contact active 0.05 → contact_active_overlap_viol
# 2. 金属1层对接触孔的最小覆盖(金属1覆盖接触孔至少0.04um)
OVERLAP metal1 contact 0.04 → metal1_contact_overlap_viol
# 3. 有源区对多晶硅栅极的最小包围(有源区延伸出栅极至少0.06um)
ENCROACHMENT active poly_gate 0.06 → active_poly_encroach_viol
1.4 最小面积检查(AREA)
功能 :验证图层中图形的最小面积(如接触孔、有源区的最小面积),避免因图形过小导致电气性能异常。语法:
AREA <layer> <min_area> [OPTIONS] → <violation_marker>
- 可选参数:
MAX_AREA <max_area>(最大面积限制,少见)。
实战示例:
# 接触孔最小面积检查(最小0.0144um² = 0.12um × 0.12um)
AREA contact 0.0144 → contact_area_viol
# 有源区最小面积检查(最小0.2um²,用于避免过小的源漏区)
AREA active 0.2 → active_area_viol
1.5 伸长率检查(ASPECT_RATIO)
功能 :验证图形的长宽比(伸长率),避免因图形过于细长导致制造工艺中出现断裂(如金属线、多晶硅电阻)。语法:
ASPECT_RATIO <layer> <min_ratio> <max_ratio> [OPTIONS] → <violation_marker>
- 长宽比 = 长边长度 / 短边长度。
实战示例:
# 多晶硅电阻的伸长率限制(最小2:1,最大100:1)
ASPECT_RATIO poly_res 2 100 → poly_res_aspect_viol
# 金属1线的最大伸长率(最大50:1,避免过长过细导致断裂)
ASPECT_RATIO metal1 1 50 → metal1_aspect_viol
1.6 倒角 / 圆角检查(CHAMFER/CORNER)
功能 :验证图形角落的倒角(斜角)或圆角半径,避免锐角导致电场集中(如高压工艺中的金属线、有源区)。语法:
# 倒角检查(要求角落倒角最小宽度)
CHAMFER <layer> <min_chamfer> → <violation_marker>
# 圆角检查(要求角落圆角最小半径)
CORNER <layer> <min_radius> TYPE ROUND → <violation_marker>
实战示例:
# 高压金属层倒角检查(最小倒角0.1um)
CHAMFER metal_hv 0.1 → metal_hv_chamfer_viol
# 有源区圆角检查(最小圆角半径0.08um)
CORNER active 0.08 TYPE ROUND → active_corner_viol
2. 尺寸检查的高级选项
| 选项 | 功能 | 应用场景 | |||
|---|---|---|---|---|---|
EXCLUDE <layer> |
排除指定层覆盖的区域,不进行检查 | 隔离环内的特殊结构、引脚区域 | |||
INCLUDE <layer> |
仅检查与指定层重叠的区域 | 仅验证栅极区域的多晶硅尺寸 | |||
| `DIRECTION {X | Y | HORIZONTAL | VERTICAL}` | 限制检查方向 | 不同方向有不同间距要求的工艺 |
SAME_NET/DIFFERENT_NET |
按网络属性过滤检查 | LVS 关联后,同一网络的间距可放宽 | |||
LAYER_PAIR <layer1> <layer2> |
针对层对的对称检查 | 金属层与过孔的双向覆盖检查 |
示例(含高级选项):
# 仅检查与有源区重叠的多晶硅间距(排除隔离环内区域)
SPACING poly1 0.15 INCLUDE active EXCLUDE isolated_region → poly1_active_spacing_viol
# 同一网络的金属2层间距放宽至0.18um(不同网络为0.2um)
SPACING metal2 0.18 SAME_NET → metal2_same_net_spacing_viol
二、辅助操作
辅助操作不直接进行合规性检查,而是用于调试规则集、过滤无效数据、生成报告、管理图层,是提升 DRC/LVS 验证效率的关键。
1. 调试类辅助操作(定位问题核心)
1.1 输出中间层(WRITE_LAYER)
功能 :将原始层或派生层输出为 GDS/OAS 格式文件,用于可视化查看层操作结果,定位尺寸检查误报 / 漏报的原因。语法:
WRITE_LAYER <layer1> [ <layer2> ... ] FILE "<output_file>" [FORMAT {GDSII|OASIS}]
实战示例:
# 输出金属1层、接触孔层及中间派生层到调试文件
WRITE_LAYER metal1 contact metal1_contact_drc FILE "drc_debug.gds" FORMAT GDSII
- 用法:在 Calibre DESIGNrev 中打开输出文件,查看图层的几何形状,确认尺寸检查的输入层是否正确。
1.2 生成详细报告(REPORT)
功能 :输出图层属性、违规统计、规则执行日志等报告,用于量化分析验证结果。语法:
# 图层属性报告(面积、图形数量、尺寸分布)
REPORT LAYER <layer> FILE "<report_file>" [DETAILS]
# 违规统计报告(按违规类型、位置汇总)
REPORT VIOLATIONS FILE "<violation_report>" [SORT BY {TYPE|LOCATION|COUNT}]
实战示例:
# 输出金属1层的详细属性报告(含每个图形的宽度、面积)
REPORT LAYER metal1 FILE "metal1_report.txt" DETAILS
# 输出所有DRC违规的统计报告(按违规类型排序)
REPORT VIOLATIONS FILE "drc_violation_summary.txt" SORT BY TYPE
1.3 标记违规(MARK)
功能 :手动标记自定义违规区域(如特殊工艺的禁止区域),或增强自动检查的违规标记可读性。语法:
MARK <violation_marker> = <layer> [WHERE <condition>]
实战示例:
# 标记金属1层与nwell重叠的禁止区域(自定义违规)
MARK metal1_nwell_viol = metal1 AND nwell WHERE AREA > 0.1um²
2. 数据过滤类辅助操作
2.1 过滤图形(FILTER)
功能 :按几何属性(面积、宽度、周长)过滤图层中的图形,保留符合条件的部分,避免无效图形导致的尺寸检查误报。语法:
FILTER <output_layer> = <input_layer> <attribute> <condition> <value>
- 支持的属性:
AREA(面积)、WIDTH(宽度)、PERIMETER(周长)、ASPECT_RATIO(伸长率)。
实战示例:
# 过滤金属1层中宽度小于0.1um的无效图形(避免尺寸检查误报)
metal1_valid = FILTER metal1 WIDTH >= 0.1um
# 过滤接触孔中面积小于0.01um²的噪声图形
contact_valid = FILTER contact AREA >= 0.01um²
2.2 平滑图形(SMOOTH)
功能 :消除图层中的锯齿状边缘(如版图导入时的几何失真),优化尺寸检查的准确性,减少因边缘畸变导致的误报。语法:
SMOOTH <output_layer> = <input_layer> <radius> [TYPE {GAUSSIAN|MEDIAN}]
<radius>:平滑半径(越大越平滑,建议取工艺最小尺寸的 1/10~1/5)。
实战示例:
# 平滑金属1层的边缘(半径0.02um),避免锯齿导致的宽度检查误报
metal1_smoothed = SMOOTH metal1 0.02 TYPE GAUSSIAN
3. 图层管理类辅助操作(简化规则集)
3.1 复制 / 重命名图层(COPY/RENAME)
功能 :复制图层(备份原始数据)或重命名图层(简化规则集语法),避免图层名称冲突。语法:
# 复制图层
COPY <output_layer> = <input_layer>
# 重命名图层(等价于复制)
RENAME <new_layer> = <old_layer>
实战示例:
# 复制原始金属1层作为备份(避免层操作修改原始数据)
metal1_backup = COPY metal1
# 重命名长图层名称(简化后续操作)
poly_gate = RENAME poly1_active_intersect
3.2 合并图层(MERGE)
功能 :将多个图层合并为一个图层(几何形状并集),用于批量检查多个相似图层的尺寸。语法:
MERGE <output_layer> = <layer1> <layer2> ... <layerN>
实战示例:
# 合并金属1、金属2、金属3层为"所有金属层",批量检查最小宽度
all_metals = MERGE metal1 metal2 metal3
WIDTH all_metals 0.18 → all_metals_width_viol
3.3 过滤无效图形(CLEAN)
功能 :删除图层中的微小图形、重复图形或自相交图形,净化图层数据,提升尺寸检查效率。语法:
CLEAN <output_layer> = <input_layer> [MIN_AREA <min_area>] [REMOVE_DUPLICATES]
实战示例:
# 清除接触孔层中面积小于0.005um²的微小图形和重复图形
contact_clean = CLEAN contact MIN_AREA 0.005 REMOVE_DUPLICATES
4. 规则集优化类辅助操作
4.1 条件判断(IF/ELSE)
功能 :根据设计参数(如电压等级、模块类型)动态启用 / 禁用部分规则,适配多场景验证。语法:
IF <condition> THEN
<rule1>
<rule2>
ELSE
<rule3>
ENDIF
实战示例:
# 高压模块(hv_module层存在)启用更严格的间距规则,否则使用普通规则
IF EXISTS hv_module THEN
SPACING metal1 0.25 → metal1_hv_spacing_viol
ELSE
SPACING metal1 0.18 → metal1_std_spacing_viol
ENDIF
4.2 注释与分组(COMMENT/GROUP)
功能 :对规则集进行注释和分组,提升可读性和维护性(尤其是复杂工艺的规则集)。语法:
# 单行注释
/* 多行注释:金属层尺寸检查规则组 */
GROUP "Metal Layer DRC Rules"
WIDTH metal1 0.18 → metal1_width_viol
SPACING metal1 0.18 → metal1_spacing_viol
ENDGROUP
三、实战组合:尺寸检查 + 辅助操作的完整流程
以 0.18um CMOS 工艺的金属 1 层 DRC 验证为例,展示两类操作的组合使用:
###########################################################################
# 步骤1:定义原始层和辅助层
###########################################################################
LAYER metal1 TYPE CONDUCTOR COLOR 2 WIDTH 0.18um
LAYER contact TYPE CONDUCTOR COLOR 6
LAYER isolated_region TYPE DIELECTRIC COLOR 10
###########################################################################
# 步骤2:辅助操作(净化图层数据)
###########################################################################
# 1. 平滑金属1层边缘,消除几何失真
metal1_smoothed = SMOOTH metal1 0.02 TYPE GAUSSIAN
# 2. 过滤无效图形(宽度≥0.1um,面积≥0.01um²)
metal1_valid = FILTER metal1_smoothed WIDTH >= 0.1um
metal1_valid = FILTER metal1_valid AREA >= 0.01um²
# 3. 输出中间层用于调试
WRITE_LAYER metal1_smoothed metal1_valid FILE "metal1_debug.gds"
###########################################################################
# 步骤3:尺寸检查操作(核心DRC规则)
###########################################################################
# 1. 最小宽度检查(排除隔离环内区域)
WIDTH metal1_valid 0.18 EXCLUDE isolated_region → metal1_width_viol
# 2. 最小间距检查(仅检查与接触孔重叠的区域)
SPACING metal1_valid 0.18 INCLUDE contact → metal1_spacing_viol
# 3. 金属1对接触孔的覆盖检查(最小0.04um)
OVERLAP metal1_valid contact 0.04 → metal1_contact_overlap_viol
###########################################################################
# 步骤4:辅助操作(生成报告)
###########################################################################
# 1. 输出金属1层属性报告
REPORT LAYER metal1_valid FILE "metal1_report.txt" DETAILS
# 2. 输出DRC违规统计报告
REPORT VIOLATIONS FILE "metal1_drc_summary.txt" SORT BY TYPE
四、常见问题与解决方案
1. 尺寸检查误报
| 问题原因 | 解决方案 |
|---|---|
| 图层边缘有锯齿,导致宽度 / 间距测量偏差 | 使用SMOOTH操作平滑边缘,调整平滑半径(建议 0.01~0.03um) |
| 存在微小无效图形,被误判为违规 | 使用FILTER/CLEAN操作删除微小图形(设置 MIN_AREA) |
| 规则未排除特殊区域(如引脚、隔离环) | 在尺寸检查中添加EXCLUDE选项,排除特殊结构 |
2. 辅助操作失效
| 问题原因 | 解决方案 |
|---|---|
WRITE_LAYER输出文件为空 |
检查图层名称是否正确,确保输出的图层有几何图形 |
REPORT报告无数据 |
确认图层已执行层操作,添加DETAILS选项获取详细信息 |
FILTER过滤后无图形 |
调整过滤条件(如放宽宽度 / 面积阈值),检查输入层是否有效 |
3. 规则集维护困难
| 问题原因 | 解决方案 |
|---|---|
| 规则过多,结构混乱 | 使用GROUP分组,添加详细注释,按图层 / 功能分类编写 |
| 多场景验证需要重复修改规则 | 使用IF/ELSE条件判断,动态适配不同场景(如高压 / 低压模块) |
五、总结
-
尺寸检查操作 是 DRC 的核心,需严格遵循工艺规则手册,结合
WIDTH/SPACING/OVERLAP等命令,覆盖几何尺寸的关键指标; -
辅助操作 是优化验证流程的工具,
SMOOTH/FILTER用于净化数据,WRITE_LAYER/REPORT用于调试,GROUP/IF用于提升规则集可维护性; -
实战中需遵循 "辅助操作净化数据 → 尺寸检查执行验证 → 辅助操作生成报告" 的流程,确保 DRC 结果的准确性和可追溯性。