4. 层次化设计规则:层次化DRC的概念、TOP与CELL层次、规则继承与覆盖机制
4.1 层次化DRC的核心概念
在超大规模集成电路(VLSI)设计中,芯片通常由数百万至数十亿个晶体管组成,采用层次化(Hierarchical)设计方法将复杂系统分解为多个子模块(Cell)。传统的“扁平化DRC”(Flat DRC)将所有层次展开为单一平面进行规则检查,随着设计规模增大,其内存消耗和运行时间呈指数级增长,已无法满足先进工艺节点的验证需求。
层次化DRC(Hierarchical DRC) 的核心思想是:“一次检查,多次复用”。它利用设计的层次结构,对每个标准单元或宏模块(Cell)只执行一次规则检查,然后在顶层(TOP)通过“逻辑运算”和“边界处理”来验证模块间的交互,从而大幅减少重复计算。
- 运行效率: 避免对重复实例(Instance)的反复检查,运行时间可降低 5~10 倍。
- 内存占用: 无需展开全芯片版图,内存需求显著降低。
- 增量验证: 修改某个子模块后,只需重新检查该模块及受影响的顶层区域,无需全量重跑。
4.2 TOP层次与CELL层次
在层次化DRC流程中,设计被抽象为两个核心层次:TOP(顶层) 和 CELL(单元/子模块)。理解这两个层次的定义与关系是配置规则文件的基础。
| 层次 | 定义 | DRC检查范围 | 典型示例 |
|---|---|---|---|
| TOP | 设计的最高层级,即芯片的顶层封装或系统级模块。 | 跨模块的全局规则(如顶层电源网络、IO环、顶层信号线宽/间距)。 | 芯片顶层(chip_top)、系统级封装(system_pkg)。 |
| CELL | 设计中的子模块,可以是标准单元、宏单元(SRAM、PLL)或自定义功能块。 | 模块内部的局部规则(如单元内金属间距、有源区尺寸、接触孔包围)。 | 标准单元(INV_X1、DFF_X2)、SRAM宏(sram_256x32)。 |
DRC CHECK MAP 语句将特定的检查命令映射到对应的层次。例如,DRC CHECK MAP "M1_SPACE" CELL 表示“M1间距检查”仅作用于CELL内部,而 DRC CHECK MAP "TOP_M1_WIDTH" TOP 表示“顶层M1线宽检查”仅作用于TOP层。
4.3 规则继承与覆盖机制
层次化DRC的灵活性体现在规则的继承(Inheritance)与覆盖(Override)机制上。这允许设计团队在顶层定义通用规则,同时在子模块中根据特殊需求进行局部调整,而无需修改全局规则文件。
4.3.1 规则继承(Inheritance)
默认情况下,子模块(CELL)会自动继承顶层(TOP)定义的所有DRC规则。这意味着,如果顶层规则要求“金属1最小间距为0.1μm”,那么所有子模块内部的金属1间距也必须满足此要求,除非被显式覆盖。
4.3.2 规则覆盖(Override)
当某个子模块有特殊工艺要求或设计约束时,可以通过层次化规则覆盖来修改继承的规则。覆盖机制通常通过以下方式实现:
- 规则文件中的层次化声明: 在规则文件中使用
CELL或TOP关键字限定规则的生效范围。 - 规则变量重定义: 在子模块的规则配置中,重新定义某个规则变量(如
M1_MIN_SPACE = 0.12),使其仅在该模块内生效。 - Calibre SVRF中的
DRC CHECK MAP与DRC RESULTS DATABASE结合: 通过指定检查的层次范围,实现规则的选择性应用。
4.4 层次化DRC的典型流程
下图展示了层次化DRC从CELL检查到TOP集成的标准流程,以及规则继承与覆盖在其中的作用点。
4.5 规则继承与覆盖的SVRF实现
在Calibre SVRF(Standard Verification Rule Format)中,层次化规则通过 DRC CHECK MAP 和 DRC RESULTS DATABASE 语句实现。以下是一个典型的配置示例:
// ============================================
// 顶层规则定义 (适用于所有层次)
// ============================================
M1_MIN_SPACE = 0.10
M1_MIN_WIDTH = 0.14
// ============================================
// CELL B 的规则覆盖 (仅作用于CELL B)
// ============================================
// 在CELL B的规则文件或局部配置中:
CELL_B_M1_MIN_SPACE = 0.12 // 覆盖为0.12μm
// ============================================
// DRC检查映射
// ============================================
DRC CHECK MAP M1_SPACE_CHECK CELL // M1间距检查应用于所有CELL
DRC CHECK MAP M1_WIDTH_CHECK TOP // M1线宽检查仅应用于TOP层
DRC CHECK MAP M1_SPACE_CHECK_B CELL B // 针对CELL B的特殊间距检查
// ============================================
// 检查命令
// ============================================
M1_SPACE_CHECK { @ M1 最小间距 (继承规则)
M1 M1 < M1_MIN_SPACE
}
M1_SPACE_CHECK_B { @ M1 最小间距 (CELL B 覆盖规则)
M1 M1 < CELL_B_M1_MIN_SPACE
}
M1_WIDTH_CHECK { @ TOP层 M1 最小线宽
M1 < M1_MIN_WIDTH
}
- 规则分层管理: 将通用规则(如
M1_MIN_SPACE)定义在顶层规则文件中,将特殊覆盖规则(如CELL_B_M1_MIN_SPACE)定义在子模块的局部规则文件中。 - 使用
DRC CHECK MAP明确范围: 避免使用全局默认值,显式指定每个检查的层次范围,提高规则可读性。 - 版本控制: 所有规则覆盖必须纳入版本控制系统,并附带修改注释,便于追溯。
4.6 层次化DRC的挑战与应对
| 挑战 | 描述 | 应对策略 |
|---|---|---|
| 边界效应 | 不同CELL之间的交互区域(如相邻CELL的金属线间距)可能被忽略。 | 使用“边界检查”(Boundary Check)技术,在TOP层对CELL边界区域进行额外的DRC检查。 |
| 规则冲突 | 子模块的覆盖规则可能与顶层规则冲突,导致检查结果不一致。 | 建立规则优先级机制(通常CELL覆盖优先级高于TOP),并在规则文件中明确注释。 |
| 调试复杂性 | 层次化DRC的错误定位比扁平化更困难,需要追溯错误所在的层次。 | 使用Calibre的 DRC RESULTS DATABASE 输出层次化结果,结合 DRC CELL NAME 定位错误源。 |
| 运行时间 | 虽然比扁平化快,但层次化DRC在边界处理阶段仍可能成为瓶颈。 | 优化边界检查的算法,使用“区域划分”技术减少边界计算量。 |