2. DRC规则文件与运行环境搭建
DRC(Design Rule Check)能否跑起来,取决于三件事是否同时正确:代工厂提供的规则文件(deck)本身、你为它准备的运行目录与工艺选项、以及版图数据与规则文件之间的层映射是否对齐。很多“第一次DRC就报错”的情况,并不是版图真的违反了设计规则,而是环境没搭对——规则文件找不到、变量没赋值、层号对不上、工艺角选错。本节围绕“读懂deck结构 → 配置运行目录 → 设置层映射与工艺选项 → 完成首次DRC运行”这条主线展开。
一、读懂代工厂DRC deck的结构
主流DRC工具(Cadence Pegasus、PVS/SVRF、Calibre等)的规则文件通常由若干逻辑段组成,虽然语法细节不同,但结构高度相似。以Pegasus的规则文件为例,典型结构如下:
// 1. 头文件与变量定义
#INCLUDE "tech_vars.inc"
#DEFINE METAL1_MIN_WIDTH 0.05
#DEFINE METAL1_MIN_SPACE 0.05
// 2. 层定义(Layer Definition)
LAYER M1 = 31
LAYER M1_PIN = 31.1
LAYER VIA1 = 51
// 3. 派生层(Derived Layer)
M1_ALL = M1 OR M1_PIN
// 4. 规则检查主体
M1.W.1 {
@ "Metal1 minimum width"
width(M1_ALL) < METAL1_MIN_WIDTH
}
// 5. 输出与报告控制
#DEFINE DRC_REPORT "drc_results.rpt"
读deck时重点关注四类信息:变量定义(决定规则数值,如最小宽度、最小间距)、层定义(GDS层号与规则层名的对应关系)、派生层(由基础层做布尔运算得到的复合层,如“所有M1图形”)、规则检查块(每条规则的名称、描述、判断条件与输出)。规则块中的@后字符串就是DRC报告里显示的规则名,排障时靠它定位问题。
二、运行目录与规则文件配置
建议为每次DRC运行建立独立工作目录,避免不同项目、不同工艺角互相污染。典型目录结构如下:
drc_run/
├── runset/ # 规则文件与include文件
│ ├── drc_main.rs
│ ├── tech_vars.inc
│ └── layer_map.txt
├── layout/ # 待检查的GDS/OASIS
│ └── top.gds
├── work/ # 工具中间文件
├── report/ # DRC结果报告
└── run_drc.sh # 运行脚本
Pegasus常用命令行方式启动,核心参数包括规则文件、版图文件、工作目录、报告输出和工艺选项。示例脚本:
pegasus -drc \
-rules ./runset/drc_main.rs \
-layout ./layout/top.gds \
-top_cell TOP \
-workdir ./work \
-report ./report/drc_results.rpt \
-threads 8 \
-define "PROCESS=TT" \
-define "METAL1_MIN_WIDTH=0.05"
其中-define用于覆盖deck中的变量,是切换工艺角、调整规则阈值的常用手段。-top_cell必须与GDS顶层单元名一致,否则工具会报“找不到顶层单元”。
三、层映射与工艺选项
层映射是DRC环境搭建中最容易出错的一环。版图GDS中的层号(layer/datatype)必须与deck中LAYER定义一致。若代工厂deck使用LAYER M1 = 31,而你的GDS中M1实际是31/0,则需确认datatype是否匹配;若deck写的是31.1,则对应31/1。层映射文件通常以文本形式给出:
# layer_map.txt
M1 31 0
M1_PIN 31 1
VIA1 51 0
M2 32 0
工艺选项(process option)决定规则文件启用哪一套阈值。例如PROCESS=TT对应典型工艺角,PROCESS=FF对应快角,某些deck会据此调整间距或宽度检查的余量。若deck中未定义该变量,工具会使用默认值,此时需在运行脚本中显式-define,否则可能跑到错误的规则集上。
-drc -rules ... -layout ... -top_cell ... -workdir ... -report ...做一次“空跑”,只加载规则文件不检查版图,确认deck语法与include路径无误,再放入真实版图。四、首次DRC运行与结果判读
首次运行建议先用一个小规模测试版图(例如只含一个M1矩形和一条M1间距)验证环境。运行后重点看三处:
- 日志开头:确认规则文件路径、工艺选项、层映射文件是否被正确加载;
- 规则加载段:确认所有
#INCLUDE文件都找到,没有“file not found”; - 报告文件:每条违规会给出规则名、层、坐标和数量,例如
M1.S.1: Metal1 minimum space, 2 violations。
若报告为空且日志无报错,说明版图在该规则集下通过;若报告有违规,先核对坐标是否落在预期图形上,再判断是版图问题还是层映射/工艺选项问题。常见误报原因包括:层号映射错位导致规则检查了错误的层、工艺选项未定义导致阈值取默认值、派生层布尔运算写错导致检查范围扩大。
完成首次运行后,建议把本次使用的规则文件版本、工艺选项、层映射文件和运行命令记录到项目日志中。DRC环境一旦稳定,后续换版图、换工艺角只需替换对应输入,不必重复搭建。真正需要反复调试的,往往是层映射与工艺选项这两处“看不见的接口”——它们不出现在版图里,却直接决定规则检查是否作用在正确的图形和阈值上。