4. 规则分层策略:将规则按层次(金属层、有源区、通孔层)拆分,减少单次检查的规则数量
在大型 SoC 或先进工艺节点(如 7nm/5nm)的物理验证中,DRC 规则集通常包含数万至数十万条检查语句。若将所有规则一次性加载并执行,不仅会耗尽内存资源,还会因规则间的交叉引用导致运行时间呈指数级增长。规则分层策略的核心思想是:按照物理层次(Layer)或工艺模块(Module)将规则集拆分为多个独立的检查子集,每次只运行与当前层次相关的规则,从而大幅降低单次检查的复杂度。
4.1 分层策略的基本原理
现代工艺的 DRC 规则天然具有层次属性。例如,金属层的规则只涉及金属线宽、间距、最小面积等几何约束,与有源区(AA)的注入规则完全解耦。通过将规则按层次拆分,可以实现:
- 规则集瘦身:单次检查的规则数量减少 60%–80%,降低解析与编译开销。
- 内存占用降低:只需加载当前层次的几何数据与规则,避免全芯片数据驻留。
- 并行化基础:不同层次可独立提交至不同计算节点,实现线性加速。
- 增量验证:修改某层版图后,只需重新运行该层的 DRC,无需全量重跑。
关键指标:某 12nm 芯片项目采用分层策略后,单次 DRC 运行时间从 48 小时降至 6 小时,内存峰值从 256 GB 降至 64 GB。
4.2 典型分层结构
下表展示了基于工艺模块的规则分层方案,每个模块对应一个独立的 DRC 运行脚本:
| 层次模块 | 包含规则类型 | 典型规则数量 | 检查对象 |
|---|---|---|---|
| 有源区 (AA / OD) | 最小宽度、间距、有源区到阱边距、OD 密度 | ~1,200 | 扩散层、阱层 |
| 多晶硅 (PO / Poly) | 栅极长度、多晶硅间距、栅极延伸、PO 密度 | ~800 | 多晶硅层、栅氧化层 |
| 接触孔 (CA / CO) | 接触孔尺寸、孔到有源区包覆、孔到栅极间距 | ~600 | 接触孔层、有源区、多晶硅 |
| 金属层 (M1–Mx) | 线宽、线间距、最小面积、通孔包覆、金属密度 | ~2,500/层 | 各金属层、对应通孔层 |
| 通孔层 (V1–Vx) | 通孔尺寸、通孔间距、通孔到金属包覆、阵列规则 | ~1,000/层 | 通孔层、上下金属层 |
| 顶层金属 / 钝化层 | 顶层线宽、钝化开窗、焊盘间距、ESD 规则 | ~400 | 顶层金属、钝化层、焊盘层 |
实践建议:分层时需注意跨层规则(如通孔到金属包覆)的处理。通常将跨层规则归入“上层”模块,或单独建立“接口规则”子集,避免重复检查。
4.3 分层策略的 SVG 架构图
下图展示了规则分层策略的整体架构,从原始规则集到分层模块,再到并行执行与结果合并:
4.4 分层策略的实施步骤
在实际项目中实施规则分层策略,建议遵循以下步骤:
- 规则审计与分类:遍历所有 DRC 规则,按所属物理层次(AA、PO、M1、V1 等)打标签,识别跨层规则。
- 模块划分:将同层规则归入同一模块,跨层规则归入“接口模块”或附加到上层模块。
- 脚本拆分:为每个模块创建独立的 DRC 运行脚本(如
drc_aa.drc、drc_m1.drc),确保脚本内无冗余依赖。 - 数据准备:按模块提取对应的 GDS/OASIS 层次数据,可使用
layermap或clip命令过滤。 - 并行调度:利用 LSF、SGE 或云原生调度器,将各模块提交至不同计算节点并行执行。
- 结果合并:收集各模块的 DRC 结果(如
.drc.summary、.drc.db),使用合并工具生成全芯片报告。
常见陷阱:分层后若跨层规则被遗漏,会导致“假通过”。务必在接口模块中显式包含所有跨层约束,并在合并阶段进行交叉验证。
4.5 分层策略的收益对比
以下表格对比了未分层与分层策略在典型 28nm 芯片项目中的实测数据:
| 指标 | 未分层(单次全量) | 分层并行(5 模块) | 提升比例 |
|---|---|---|---|
| 规则数量 | 18,000 | 3,600 / 模块 | 80% 减少 |
| 内存峰值 | 128 GB | 32 GB | 75% 降低 |
| 运行时间 | 36 小时 | 7.2 小时 | 80% 缩短 |
| 增量验证时间 | 36 小时(全量重跑) | 1.5 小时(单模块) | 96% 缩短 |
4.6 分层策略的适用场景与限制
分层策略并非万能,以下场景特别适合:
- 芯片规模大(>100 mm²),层次结构清晰。
- 工艺节点先进(≤28nm),规则数量多且层次独立性强。
- 团队具备并行计算基础设施(LSF、Kubernetes 等)。
以下场景需谨慎使用:
- 层次间存在大量复杂跨层约束(如 3D NAND、BCD 工艺)。
- 规则引擎不支持增量合并或结果合并工具缺失。
- 芯片面积小(<10 mm²),分层带来的调度开销可能超过收益。
进阶技巧:对于跨层约束密集的工艺,可采用“混合分层”——将强耦合层次(如 M1+V1)合并为一个模块,弱耦合层次独立拆分。例如,将 M1 与 V1 合并为“后端第一层模块”,M2 与 V2 合并为“后端第二层模块”,以此类推。