2. Calibre PERC工具架构与运行机制
Calibre PERC 并不是一个孤立的“检查器”,它更像一条把版图、网表、规则与结果串起来的验证流水线。理解它的架构,关键是看清四个部分:规则文件如何描述“要查什么”,输入数据如何提供“查的对象”,执行引擎如何完成“怎么查”,以及它与 Calibre 其他工具如何协同完成“查完之后怎么用”。这四者共同决定了 PERC 能否在真实项目中稳定、可复现地运行。
规则文件结构:从版图对象到电气意图
PERC 的规则文件通常以 .rul 或 .perc 为扩展名,内部由若干逻辑段组成。最外层是 PERC 块,声明本次验证的顶层单元、版图来源和网表来源。随后是 LAYOUT 与 SOURCE 段,分别指定 GDS/OASIS 版图文件和 SPICE 网表,并建立版图节点与网表节点之间的映射关系。真正决定“查什么”的是 CONNECT、DEVICE、NET 和 CHECK 这几类语句:CONNECT 定义金属、通孔、扩散区之间的电气连接方式;DEVICE 声明需要识别的器件类型及其端口;NET 用于提取或命名关键网络;CHECK 则写出具体的电气规则,例如“某电源域到某信号域之间必须存在至少两个串联电阻”或“ESD 路径上的二极管宽度不得小于 20 µm”。
规则文件还包含变量与参数段,例如 VARIABLE 和 PARAM,用于把电压阈值、电阻下限、器件尺寸等数值抽出来,便于在不同工艺角或不同项目间复用。一个常见的结构顺序是:先声明变量,再定义层映射,然后建立连接关系,最后写检查语句。顺序本身不强制,但连接关系必须先于依赖它的检查,否则引擎无法解析网络拓扑。
输入输出数据:版图、网表与结果报告
PERC 的核心输入有三类。第一类是物理版图数据,通常来自 GDSII 或 OASIS,包含各层几何图形、文本标签和单元层次。第二类是电气网表,通常来自 Calibre xRC 或外部 SPICE 提取结果,包含器件实例、端口和寄生参数。第三类是规则文件本身,它把前两者“粘合”起来。除此之外,工艺层映射文件(layer map)和器件识别文件(device recognition)也常作为辅助输入,用于告诉 PERC 哪一层是 M1、哪一层是 POLY、哪种图形组合构成一个 MOS 管。
输出方面,PERC 默认生成结果数据库和文本报告。结果数据库通常以 .perc.db 或 ASCII 格式保存,记录每条违规的坐标、网络名、器件名、违反的规则编号和严重等级。文本报告则按规则分类汇总,给出违规总数、分布和典型示例。如果启用了图形化输出,还可以生成 RVE 可读的标记文件,方便在版图界面中逐条定位。输出中还会包含运行日志,记录规则解析、网络提取、检查执行各阶段的耗时和警告,这对排障非常重要。
执行引擎:从规则解析到网络求解
PERC 执行引擎的工作可以概括为“解析—提取—求解—判定”四个阶段。解析阶段读取规则文件,构建内部规则树,并检查语法和变量引用是否完整。提取阶段根据 CONNECT 和 DEVICE 定义,从版图中识别器件、端口和连接关系,同时与网表进行交叉映射,形成统一的电气图。求解阶段在电气图上执行网络遍历、路径搜索和参数计算,例如查找从 A 点到 B 点的所有导电路径、计算路径上的总电阻、判断是否存在二极管或晶体管。判定阶段把计算结果与 CHECK 中的条件比较,生成违规记录。
引擎支持层次化处理和扁平化处理两种模式。层次化模式保留单元边界,适合大型 SoC,能显著减少内存占用;扁平化模式把所有单元打平,适合小规模模块或需要跨层次精确路径搜索的场景。运行方式上,PERC 通常由 calibre -perc 命令驱动,配合 -hier、-turbo 等选项控制并行度和层次策略。一个典型的运行命令如下:
calibre -perc -hier -turbo 8 \
-layout top.gds \
-source top.spi \
-rules perc_esd.rul \
-report perc_esd.rep \
-db perc_esd.db
其中 -turbo 8 表示使用 8 个线程并行处理,-hier 启用层次化模式。运行结束后,perc_esd.rep 是文本报告,perc_esd.db 是结果数据库,两者配合使用可以快速定位问题。
与 Calibre 其他工具的协同关系
PERC 在 Calibre 生态中处于“电气规则验证”层,向上依赖物理验证和寄生提取,向下衔接结果查看与修复。典型协同链路是:Calibre nmDRC 完成设计规则检查,Calibre LVS 完成版图与网表一致性检查,Calibre xRC 提取寄生参数并生成带寄生的 SPICE 网表,PERC 读取该网表和版图执行电气规则检查,最后 Calibre RVE 加载 PERC 结果数据库,在版图界面中高亮违规位置。如果 PERC 发现的是 ESD 路径问题,还可以把结果反馈给 Calibre 的可靠性分析流程,形成“DRC→LVS→xRC→PERC→RVE”的完整闭环。
这种协同关系决定了 PERC 的输入必须与 LVS 和 xRC 保持一致:版图层次、单元名、网络名、器件命名规则都要对齐,否则 PERC 在交叉映射时会出现大量“未匹配节点”警告,导致检查结果不可信。因此在实际项目中,通常先跑通 LVS 和 xRC,确认网表与版图一致后,再启动 PERC。
CONNECT 语句决定了 PERC 如何理解“电气连通”。如果版图中存在未声明的连接层(例如新增的顶层金属或特殊通孔),PERC 会把它当作断路处理,导致路径搜索失败。因此每次工艺层或版图层变化后,都应同步更新层映射和连接定义。理解 PERC 的架构与运行机制,最终要落到“可复现”三个字上:规则文件结构清晰、输入数据对齐、执行参数明确、输出结果可追溯。只有这四者同时成立,PERC 才能从一次性的检查动作,变成可重复、可审计、可迭代的电气规则验证流程。