Calibre nmDRC 运行机制与规则文件(13-1)

目录

[一、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 的运行是输入→处理→输出的流水线过程,其核心数据流向如下:

  1. 输入层

    • 必选输入:SVRF 规则文件 + 版图数据库 (支持 GDSII/OASIS/ 第三方格式等,参考前文格式说明)。 输入的版图数据库格式支持 GDSII、OASIS、二进制以及 ASCII 格式。其中后两种为明导国际公司(Mentor Graphics Corporation)的专有格式,且仅适用于平面模式的 Calibre nmDRC。输出的结果数据库格式可选择 ASCII(默认格式)、GDSII、OASIS 或二进制。

    • 规则文件作用:定义检查规则、输入输出配置、运行参数。

  2. 处理层

    • 规则文件编译:解析 SVRF 语法,生成可执行的检查逻辑。
    • 版图数据读取:按规则文件指定的格式、层级、路径加载版图。
    • 规则检查执行:对版图执行层操作、几何检查,生成中间层与错误层。
    • 并发与调度优化:自动调度层操作、启用多线程加速(需配置)。
  3. 输出层

    • 标准输出:运行日志(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 SYSTEMLAYOUT 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 种注释格式,不同格式的作用域和输出行为不同,合理使用可提升规则可读性与结果可追溯性。

  1. 第一种是标准注释,以双斜杠 // 开头;第二种是规则检查专用注释,以 @ 符号开头;第三种是多行注释,以 /* 开头、*/ 结尾。

  2. // 开头的注释为行注释,注释内容从 // 开始,至该行末尾结束。这类注释主要用于对规则文件进行标注说明,可在规则检查语句的内部或外部使用。

  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 结果数据库中映射的检查文本内容。默认情况下,映射的内容包括规则文件的路径、标题以及规则检查注释。

相关推荐
阿拉斯攀登2 小时前
设计模式:实战概要
java·设计模式
阿拉斯攀登2 小时前
设计模式:工厂模式概要
java·设计模式·抽象工厂模式
曹轲恒2 小时前
Java Collections & Arrays 工具类
java
.卡2 小时前
(022)FastJson 序列化导致的 java.util.ConcurrentModificationException
java
独自破碎E2 小时前
Kafka的索引设计有什么亮点?
数据库·分布式·kafka
武子康2 小时前
Java-218 RocketMQ Java API 实战:同步/异步 Producer 与 Pull/Push Consumer
java·大数据·分布式·消息队列·rocketmq·java-rocketmq·mq
tangweiguo030519872 小时前
Objective-C 核心语法深度解析:基本类型、集合类与代码块实战指南
开发语言·ios·objective-c
不爱吃米饭_2 小时前
Spring Security、Apache Shiro、Sa-Token,主流安全框架如何选择?
java·安全
我命由我123452 小时前
Java 开发 - 含有 null 值字段的对象排序(自定义 Comparator、使用 Comparator、使用 Stream API)
java·开发语言·学习·java-ee·intellij-idea·学习方法·intellij idea