目录
[一、nmDRC 核心数据流程](#一、nmDRC 核心数据流程)
[二、nmDRC 调用方式与核心命令](#二、nmDRC 调用方式与核心命令)
[1. 命令行调用格式](#1. 命令行调用格式)
[2. 编译错误处理](#2. 编译错误处理)
[三、核心配置语句(Specification Statements)](#三、核心配置语句(Specification Statements))
[1. 核心特性](#1. 核心特性)
[2. 关键配置语句分类](#2. 关键配置语句分类)
[四、规则检查语句(Rule Check Statements)编写规范](#四、规则检查语句(Rule Check Statements)编写规范)
[1. 基础语法结构](#1. 基础语法结构)
[2. 典型示例:金属线宽检查](#2. 典型示例:金属线宽检查)
[3. 调试技巧:中间层结果查看](#3. 调试技巧:中间层结果查看)
[六 、检查文本](#六 、检查文本)
本文基于 Calibre v2017.1 官方手册,提炼 nmDRC 运行流程、核心配置、规则编写规范及性能优化手段,聚焦 DRC 规则开发与调试的实际需求,为高效编写规则文件、缩短运行时间提供技术指导。
一、nmDRC 核心数据流程
Calibre nmDRC 的输入为一个 SVRF 规则文件 和一个版图数据库;输出为一份运行日志、一个 DRC 结果数据库,以及一份可在规则文件中配置的可选 DRC 汇总报告。

Calibre nmDRC 的运行是输入→处理→输出的流水线过程,其核心数据流向如下:
-
输入层
-
必选输入:SVRF 规则文件 + 版图数据库 (支持 GDSII/OASIS/ 第三方格式等,参考前文格式说明)。 输入的版图数据库格式支持 GDSII、OASIS、二进制以及 ASCII 格式。其中后两种为明导国际公司(Mentor Graphics Corporation)的专有格式,且仅适用于平面模式的 Calibre nmDRC。输出的结果数据库格式可选择 ASCII(默认格式)、GDSII、OASIS 或二进制。
-
规则文件作用:定义检查规则、输入输出配置、运行参数。
-
-
处理层
- 规则文件编译:解析 SVRF 语法,生成可执行的检查逻辑。
- 版图数据读取:按规则文件指定的格式、层级、路径加载版图。
- 规则检查执行:对版图执行层操作、几何检查,生成中间层与错误层。
- 并发与调度优化:自动调度层操作、启用多线程加速(需配置)。
-
输出层
- 标准输出:运行日志(Transcript) + DRC 结果数据库(默认 ASCII 格式,支持 GDSII/OASIS/Binary)。
- 可选输出:DRC 汇总报告(通过规则文件配置生成)。
- 对于常规的设计规则检查,建议输出 ASCII 格式的 DRC 结果数据库 ;当使用 Calibre nmDRC-H 进行掩膜图层生成时,则应输出 GDSII 或 OASIS 格式的 DRC 结果数据库(详见《SVRF 手册》中的 DRC 检查映射章节),同时需配置
DRC MAXIMUM RESULTS ALL语句。这是因为 Calibre nmDRC-H 生成掩膜图层结果时,需要占用大量的内部系统资源。
关键说明:
- 扁平化运行(flat run)与层级化运行(hierarchical run)的核心区别在于:层级化运行会复用子单元(cell)的检查结果,大幅减少重复计算,适合大规模层级化版图。所以通常建议用户打开hierarchical 按钮,增加检查的效率。
- 结果数据库格式选择:常规 DRC 检查推荐 ASCII 格式;掩模层生成(nmDRC-H)推荐 GDSII/OASIS 格式,并需配置
DRC MAXIMUM RESULTS ALL。
二、nmDRC 调用方式与核心命令
1. 命令行调用格式
nmDRC 支持扁平化 与层级化两种运行模式,层级化模式可结合多线程 / 分布式加速:
调用 Calibre nmDRC(平面模式)的命令如下:
# 平面模式运行
calibre -drc rule_file
调用 Calibre nmDRC-H(层次化模式)的命令如下:
# 层次化模式运行
calibre -drc -hier rule_file
# 多线程层次化模式运行
calibre -drc -hier -turbo -hyper rule_file
calibre -drc -hier -turbo -remote host1,host2,host3 -hyper rule_file
整体汇总如下表:
| 运行模式 | 命令行示例 | 适用场景 |
|---|---|---|
| 扁平化运行 | calibre -drc rule_file |
小型扁平化版图、规则调试 |
| 层级化运行 | calibre -drc -hier rule_file |
大规模层级化版图 |
| 多线程层级化运行 | calibre -drc -hier -turbo -hyper rule_file |
单机多线程加速层级化检查 |
| 分布式层级化运行 | calibre -drc -hier -turbo -remote host1,host2 -hyper rule_file |
多主机分布式加速 |
2. 编译错误处理
- 规则文件的编译错误逐次检测:即一次运行仅提示一个错误,需修复后重新运行,直至无语法错误。
- 常见编译错误:规则名重复、层操作语法错误、关键字缺失(如规则检查的大括号
{})。
三、核心配置语句(Specification Statements)
规格语句用于控制 Calibre 运行的整体行为,其作用包括配置输入输出、指定需要运行的规则检查项、定义需要检查的版图区域等。部分规格语句是 Calibre nmDRC 工具运行时的必需语句。
规则检查语句可用于多款 Calibre 工具(同时也适用于其他采用 SVRF 文件的明导国际工具,例如 ICverify),其应用场景涵盖设计规则检查(DRC)、光学与工艺检查(OPC)、掩膜数据制备(MDP)以及在 LVS 流程中执行的电气规则检查(ERC)。规则检查语句通过定义图层运算,将运算得到的派生图层输出至结果数据库。
规则检查语句的输出结果可以是派生多边形图层 、派生边缘图层 、派生错误图层,或这三类图层的组合。一条规则检查语句必须向 DRC 结果数据库输出内容(即至少包含一个可独立执行并输出结果数据的图层运算),否则无法完成编译。
1. 核心特性
-
强制性 :部分语句为运行 nmDRC 的必要条件(如
LAYOUT SYSTEM、LAYOUT PATH,参考前文格式配置)。 -
作用域限制 :不能嵌套在规则检查块(Rule Check Statements)或宏定义(MACRO)内,需写在规则文件的顶层。
-
唯一性:规则检查名称必须唯一 ,且规则检查内容必须被包含在大括号
{}内。需要注意的是,本手册在讨论可用于规则检查的图层运算时,有时会省略大括号,但在实际编写规则文件时,必须添加大括号,否则规则文件无法通过编译。 -
GUI 映射:Calibre Interactive------DRC 模块支持配置多项规格语句。在图形用户界面(GUI)中设置的各项参数,最终都会以规格语句的形式,写入 Calibre Interactive 生成的控制文件中。
2. 关键配置语句分类
| 配置类别 | 核心语句 | 作用 |
|---|---|---|
| 版图输入配置 | LAYOUT SYSTEM/LAYOUT PATH/LAYOUT PRIMARY |
指定版图格式、路径、顶层单元 |
| 结果输出配置 | DRC RESULTS DATABASE/DRC CHECK MAP |
指定结果数据库格式、掩模层映射 |
| 检查范围控制 | LAYOUT REGION |
限定仅检查版图的指定区域,减少运行时间 |
| 结果文本配置 | DRC CHECK TEXT |
控制结果数据库中存储的文本信息(如规则注释、文件路径) |
| 性能优化配置 | CONCURRENCY/LAYER OPERATION SCHEDULING |
配置并发线程数、层操作调度策略 |
四、规则检查语句(Rule Check Statements)编写规范
规则检查语句是 nmDRC 的核心逻辑单元,用于定义具体的设计规则检查(如线宽、间距、缺口检查),语法严格且直接影响检查结果的准确性。
1. 基础语法结构
svrf
<rule_name> { // 规则名必须唯一,大括号不可省略
@ <rule_check_comment> // 规则注释,会写入结果数据库
<layer_definition> | <layer_operation> // 层定义或层操作语句
...
}
-
核心要求 :规则块内必须包含至少一个独立层操作 (即无等号
=的语句),用于输出结果到数据库;否则编译失败。 -
层定义 vs 层操作
类型 语法特征 作用 结果输出 层定义 含等号 =(如long_metal = metal LENGTH > 5)生成中间层,供后续操作调用 不输出到结果数据库 层操作 无等号 =(如INTERNAL long_metal < 4)执行几何检查,生成错误层 输出到结果数据库
2. 典型示例:金属线宽检查
svrf
METAL_WIDTH {
// 注释:金属线宽检查,长金属(>5μm)要求≥4μm,短金属要求≥3μm
@ Metal width check: long metal ≥4μm, short metal ≥3μm
long_metal = metal LENGTH > 5 // 层定义:长金属中间层
INTERNAL long_metal < 4 // 层操作:长金属线宽不足错误,输出到结果库
short_metal = metal NOT LENGTH > 5 // 层定义:短金属中间层
INTERNAL short_metal < 3 // 层操作:短金属线宽不足错误,输出到结果库
}
3. 调试技巧:中间层结果查看
若需查看层定义生成的中间层(如 long_metal),可使用 COPY 语句将中间层输出到结果数据库:
svrf
METAL_WIDTH {
@ Metal width check with debug
long_metal = metal LENGTH > 5
COPY long_metal // 调试语句:将long_metal输出到结果库,便于RVE查看
INTERNAL long_metal < 4
...
}
注意:调试完成后需注释或删除
COPY语句,避免结果数据库冗余。
五、规则文件注释规范
nmDRC 支持 3 种注释格式,不同格式的作用域和输出行为不同,合理使用可提升规则可读性与结果可追溯性。
-
第一种是标准注释,以双斜杠
//开头;第二种是规则检查专用注释,以@符号开头;第三种是多行注释,以/*开头、*/结尾。 -
以
//开头的注释为行注释,注释内容从//开始,至该行末尾结束。这类注释主要用于对规则文件进行标注说明,可在规则检查语句的内部或外部使用。 -
以
@开头的注释为规则检查专用注释 ,注释内容从@开始,至该行末尾结束。此类注释仅能放置在规则检查语句的大括号{}内部 。当 Calibre nmDRC 执行该规则检查时,会将规则检查语句内的所有@注释,连同该规则检查的输出数据一起存入 DRC 结果数据库。
| 注释类型 | 语法 | 作用域 | 核心特性 |
|---|---|---|---|
| 标准行注释 | // <comment_text> |
规则内 / 外均可 | 仅用于规则文件注释,不写入结果数据库 |
| 规则检查注释 | @ <comment_text> |
仅规则块 {} 内 |
写入结果数据库,在 Calibre RVE 中显示;支持变量值引用(^<variable>) |
| 多行块注释 | /* <comment_text> */ |
规则内 / 外均可 | 跨多行注释;慎用------ 注释大块规则可能导致语法歧义 |
关键特性:规则检查注释的变量引用
在 @ 注释中使用 ^ 符号,可将变量值(数组变量取第一个值)写入结果数据库,而非变量名:参考下行:
svrf
VARIABLE notch_delta 3.5
METAL_NOTCH {
@ Metal notch rule: ^notch_delta μm // 结果中显示 "3.5 μm"
metal EXTERNAL < notch_delta NOTCH
}
若不使用 ^,结果中会显示变量名(notch_delta μm)。
示例:
METAL_SPACING {
@ 金属线间距违规错误
@ 注意与缺口错误区分
@ 间距规则要求为 4 微米
metal EXTERNAL < 4 space // 检查不同多边形之间的间距
}
VARIABLE notch_delta 3.5
METAL_NOTCH {
@ 金属线缺口违规错误
@ 注意与间距错误区分
@ 缺口规则要求为 ^notch_delta 微米
metal EXTERNAL < notch_delta NOTCH /* 检查同一多边形
内部的缺口尺寸 */
}
在上述两个规则检查语句中,所有以 @ 开头的三条注释都会被写入 DRC 结果数据库。当在 Calibre RVE 中加载该 DRC 结果数据库时,这些注释也会显示出来。此外,Calibre RVE 在加载 DRC 结果数据库时,还会将部分规则检查专用注释识别为配置命令。
在 @ 规则检查注释中使用 ^ 符号时,会将变量的值(对于数组变量,仅取第一个元素的值)显示在 DRC 结果报告中;若不使用 ^ 符号,则报告中显示的是变量名称。
/* ... */ 格式为 C 语言风格的多行注释,可跨越多行文本。这类注释可在规则文件的任意位置使用,但使用时需格外谨慎 ------ 若用这种注释方式注释掉规则文件中的整段内容,可能会导致意外结果,尤其是在注释块的起始和结束位置不明确的情况下。
六 、检查文本
DRC 结果数据库中,每条规则检查记录除了存储实际的检查结果外,还会保存额外信息,包括该规则检查上一次的执行时间与日期,同时还可包含由 Calibre nmDRC 映射的文本信息,这类文本被称为检查文本。
检查文本的内容可以是规则检查注释,也可以是整条规则检查语句的完整文本,还能包含上一次运行该规则检查的规则文件路径及标题。在 Calibre RVE 中查看 DRC 结果时,可显示这些检查文本注释。
DRC CHECK TEXT 规格语句用于控制 Calibre nmDRC 向 DRC 结果数据库中映射的检查文本内容。默认情况下,映射的内容包括规则文件的路径、标题以及规则检查注释。