4. 电气规则验证的版图数据准备

PERC(Programmable Electrical Rule Check)与纯几何DRC最大的区别在于:它必须理解版图里“哪些图形构成器件、器件之间通过什么金属连在一起、电流从哪流到哪”。因此,在写任何一条电气规则之前,第一步是把版图数据正确读入并转换成带有器件与连接关系的“电气网表视图”。这一步做错,后面所有规则都会建立在错误的对象上。本节围绕四个关键环节展开:GDS/OASIS读入、层次化处理、器件识别、连接性提取。

一、GDS/OASIS读入:先把“几何”变成可查询的数据

Calibre PERC 的输入通常由 SVRF 文件描述,其中版图数据通过 LAYOUT PATH 与 LAYOUT PRIMARY 指定。GDSII 与 OASIS 在 PERC 流程中的处理方式基本一致,但 OASIS 支持压缩与重复引用,读入时更依赖 LAYOUT SYSTEM OASIS 声明,否则可能被误判为 GDSII 而报格式错误。

LAYOUT PATH "chip_top.oas"
LAYOUT PRIMARY "TOP"
LAYOUT SYSTEM OASIS
LAYOUT CASE YES
LAYOUT PRESERVE CELL YES

这里有两个容易忽略的设置。LAYOUT CASE YES 表示区分大小写,若版图单元名与规则文件中的器件层名大小写不一致,会导致后续器件识别找不到目标层;LAYOUT PRESERVE CELL YES 则保留原始单元层次,便于在结果中回溯到具体子单元。对于超大规模版图,还可以用 LAYOUT BUMP 或分块读入控制内存峰值,但分块会切断跨块连接,需谨慎使用。

二、层次化处理:决定“在哪一层做电气分析”

版图天然是层次化的,而电气规则往往需要跨层次追踪。PERC 提供两种典型策略:层次化提取与扁平化提取。层次化提取保留单元边界,对重复单元只分析一次,速度快、内存低,适合标准单元阵列;扁平化提取把所有层次打平,连接关系最完整,但数据量随实例数线性增长,适合小规模模拟模块或需要精确跨模块追踪的场景。

实际工程中更常用的是“混合策略”:对数字标准单元保持层次化,对模拟/电源模块做局部扁平化。Calibre 通过 LVS BOX 与 LVS CELL 控制哪些单元被当作黑盒、哪些被展开。例如把标准单元库声明为 LVS BOX,PERC 就不会进入其内部,而是把它当作一个已知器件集合处理,从而把分析资源集中在真正需要验证的模拟与电源网络上。

判断依据:若某单元内部没有需要验证的电气规则(如标准反相器),优先黑盒化;若某单元内部存在ESD、电源钳位或衬底连接,必须展开。

三、器件识别:从几何图形到电气器件

器件识别依赖规则文件中的 DEVICE 定义,把特定层组合识别为 MOS、二极管、电阻、BJT 等。以 NMOS 为例,典型识别条件是“多晶硅栅 + 有源区 + 源漏注入”三层交叠。PERC 会据此生成器件实例,并赋予端子(G、S、D、B)。

关键设置包括:DEVICE MOS 指定器件类型;DEVICE LAYER 指定识别层;PORT 指定端子对应的层。若器件识别失败,常见原因是层号映射错误或 LAYOUT CASE 与规则文件不一致。识别完成后,可用 LVS REPORT 查看器件数量与类型统计,作为连接性提取前的自检。

四、连接性提取:把器件“接”成网络

连接性提取的核心是 CONNECT 语句,它告诉 PERC 哪些层在物理接触时视为电气连通。例如:

CONNECT METAL1 METAL2 BY VIA1
CONNECT METAL2 METAL3 BY VIA2
CONNECT POLY METAL1 BY CONT
CONNECT NWELL PSUB BY NWELL

每条 CONNECT 定义一对层及其连接方式。若漏掉某条,网络会被错误地切成两段,导致“悬空节点”误报或漏报。提取完成后,PERC 生成内部网表,可用 LVS REPORT 或 PERC NETLIST 输出检查网络数量、节点数与器件端子连接情况。

PERC 版图数据准备流程与关键设置 ① GDS/OASIS 读入 LAYOUT PATH / PRIMARY LAYOUT SYSTEM OASIS LAYOUT CASE YES ② 层次化处理 LVS BOX / LVS CELL 层次化 vs 扁平化 混合策略 ③ 器件识别 DEVICE MOS / LAYER PORT 端子定义 LVS REPORT 自检 ④ 连接性 CONNECT BY VIA 网表输出 连接性提取示例(CONNECT 语句) CONNECT METAL1 METAL2 BY VIA1 CONNECT METAL2 METAL3 BY VIA2 CONNECT POLY METAL1 BY CONT CONNECT NWELL PSUB BY NWELL ⚠ 漏写一条 → 网络被切断 → 悬空节点误报 器件识别条件(NMOS 示例) 多晶硅栅 + 有源区 + 源漏注入 → 交叠区域识别为 MOS 器件 → 端子:G / S / D / B ⚠ 层号映射错误 → 器件识别失败 提取后自检:LVS REPORT 关键观察项 器件数量与类型 MOS / DIO / RES 统计 网络节点数 是否与预期一致 悬空节点 检查 CONNECT 完整性 端子连接状态 G/S/D/B 是否全部连通

五、常见问题与判断依据

实际项目中,数据准备阶段最常出现三类问题。第一类是层号映射错误:GDS 中的层号与规则文件中的层名不一致,导致器件识别为零。判断方法是先用 calibre -drc 输出层图形,确认目标层确实存在。第二类是连接缺失:某条 CONNECT 漏写,导致网络被切断,表现为大量悬空节点。判断方法是查看 LVS REPORT 中网络数量是否远大于预期。第三类是层次化策略不当:把需要验证的模块黑盒化,导致内部电气规则被跳过。判断方法是检查 LVS BOX 列表是否覆盖了所有含电气规则的单元。

数据准备阶段的目标不是“跑通”,而是“跑对”。建议在正式 PERC 之前,先用一个小规模测试单元验证器件识别与连接性提取结果,确认无误后再扩展到全芯片。

总结来说,GDS/OASIS 读入解决“数据能不能进来”,层次化处理解决“在哪一层分析”,器件识别解决“什么是器件”,连接性提取解决“器件怎么连”。四者环环相扣,任何一环设置不当,都会让后续电气规则验证失去意义。掌握这些关键设置,是 PERC 工程化落地的基础。