3. Calibre LVS运行机制

Calibre LVS 并不是“点一下按钮就出结果”的黑盒,它是一条由多个可观察、可干预阶段组成的执行链路。理解这条链路的意义在于:当 LVS 报出 mismatch 时,你能迅速判断问题出在版图、网表、规则文件还是比较设置,而不是盲目修改版图。本节按真实执行顺序,把 Calibre LVS 的内部机制拆开讲解,并给出每个阶段的关键输入、可观察输出与判断依据。

一、执行链路的整体结构

一次完整的 Calibre LVS 运行,可以划分为五个阶段:读入与解析、器件与连接提取、网表归一化、拓扑比较、报告输出。前两个阶段处理版图侧,第三阶段同时处理版图侧与原理图侧,第四阶段是核心判定,第五阶段把判定结果转化为可读报告。下图给出这条链路的信号与数据流向。

版图 GDSII layout.gds 规则文件 lvs.cal / rule deck 原理图网表 schematic.spi ① 读入与解析 GDS 层次展开 层号/数据类型映射 网表语法解析 器件模型绑定 输出:内部几何+网表对象 ② 器件与连接提取 识别 MOS/电阻/电容 生成端口与节点 构建连接关系图 提取器件参数 W/L 输出:版图侧网表 ③ 网表归一化 器件类型统一 · 节点命名对齐 · 电源/地全局网络合并 参数容差设定(如 W/L 相对误差 1%) 输出:可比较的标准化网表对 ④ 拓扑比较 节点匹配 · 器件匹配 · 参数比对 · 端口一致性检查 生成匹配/不匹配/多余/缺失四类结果 输出:比较判定结果集 ⑤ 报告输出 lvs.rep 错误分类 节点/器件 差异定位 RVE 高亮 结果汇总 输出:可读报告

二、读入与解析阶段

Calibre 首先读入三份输入:版图 GDSII、LVS 规则文件、原理图网表。版图侧的关键动作是层次展开与层映射。GDSII 中的层号(layer)与数据类型(datatype)本身没有物理含义,规则文件通过 LAYER 语句把它们映射为可识别的工艺层,例如:

LAYER nwell    31
LAYER poly     17
LAYER ndiff    14
LAYER cont     16
LAYER metal1   18
LAYER text     63

如果层映射写错,后续提取会直接失败或提取出错误器件。因此读入阶段的第一判断依据是:Calibre 是否报出“layer not defined”或“no device recognized”。原理图网表侧则进行语法解析与器件模型绑定,SPICE 网表中的 M、R、C 等器件必须与规则文件中定义的器件类型对应,否则会在归一化阶段被标记为未知器件。

三、器件与连接提取阶段

这是 LVS 中最能体现“版图到电路”转换的环节。Calibre 依据规则文件中的 DEVICE 定义,从几何图形中识别器件。以 MOS 管为例,规则文件会描述:多晶硅与扩散区交叠形成沟道,源漏区由扩散注入决定,栅极由 poly 引出。Calibre 据此生成器件实例,并提取关键参数:

  • W/L:沟道宽度与长度,由几何尺寸换算;
  • 源漏区:由扩散区与接触孔连接关系判定;
  • 衬底/阱:由 nwell、psub 等层决定;
  • 端口:由 text 层或 pin 层标注的节点名确定。

提取完成后,Calibre 会生成一份版图侧网表。此时可以观察到一个重要现象:版图侧网表的节点名往往不是设计者期望的名字,而是 Calibre 自动生成的编号(如 N_12、N_45),只有被 text 层标注的节点才会保留真实名称。这正是后续比较阶段需要“节点对齐”的原因。

四、网表归一化阶段

版图侧网表与原理图侧网表在格式、命名、器件顺序上都不一致,直接比较没有意义。归一化阶段做三件事:

  1. 器件类型统一:把版图提取出的 MOS 与原理图中的 MOS 归为同一类,避免因模型名不同而误判;
  2. 节点命名对齐:以电源、地、端口等全局网络为锚点,把版图侧自动编号节点与原理图节点建立对应关系;
  3. 参数容差设定:LVS 允许 W/L 存在一定误差,例如规则文件中设置 LVS PROPERTY TOLERANCE,常见做法是相对误差 1% 或绝对误差 0.01μm。

归一化后的网表对才是真正参与比较的对象。如果这一阶段节点对齐失败,比较阶段会报出大量“unmatched node”,而不是真正的电路错误。

五、拓扑比较阶段

比较阶段是 LVS 的判定核心。Calibre 采用图同构算法,把两个网表视为两张图:节点是图的顶点,器件是连接顶点的边。比较过程依次检查:

  • 节点匹配:每个原理图节点是否在版图中存在对应节点;
  • 器件匹配:每个器件是否在另一侧存在类型相同、连接关系一致的器件;
  • 参数比对:匹配器件的 W/L 是否在容差范围内;
  • 端口一致性:顶层端口数量、名称、方向是否一致。

比较结果分为四类:matched(匹配)、mismatched(连接或参数不一致)、extra(版图多出器件或节点)、missing(版图缺少器件或节点)。这四类结果直接对应报告中的错误分类,是定位问题的第一手线索。

六、报告输出阶段

Calibre 把比较结果写入 lvs.rep 报告文件,并可通过 RVE(Results Viewing Environment)在版图上高亮显示差异位置。报告的核心内容包括:

报告段落含义典型判断
CELL COMPARISON RESULTS单元级匹配结论CORRECT / INCORRECT
INCORRECT NETS节点连接不一致检查短路/断路
INCORRECT INSTANCES器件参数或类型不一致检查 W/L、器件类型
EXTRA / MISSING多余或缺失对象检查是否漏画/多画
PORT MISMATCH端口不一致检查 pin 标注

报告末尾会给出总体结论:CORRECT 表示版图与原理图一致,INCORRECT 表示存在差异。工程上通常先看总体结论,再按错误分类逐项定位。RVE 高亮是最高效的定位手段:它把报告中的节点或器件直接映射回版图坐标,让设计者一眼看到差异发生在哪个位置。

执行链路的关键观察点:读入阶段看层映射是否完整;提取阶段看器件是否被正确识别;归一化阶段看节点对齐是否成功;比较阶段看四类结果分布;报告阶段看 RVE 高亮是否与预期一致。任何一环异常,都会在后续阶段放大为大量误报。

七、一次典型运行的参数与结果示例

假设一个反相器单元,规则文件设置 W/L 容差为 1%,电源地分别为 VDD、VSS。运行命令如下:

calibre -lvs -hier -turbo 4 lvs.cal

其中 -hier 表示层次化比较,-turbo 4 表示使用 4 个 CPU 并行。运行结束后,报告可能显示:

CELL COMPARISON RESULTS
    CORRECT
    LAYOUT CELL: inv
    SOURCE CELL: inv
    TOTAL NETS: 5
    MATCHED NETS: 5
    TOTAL INSTANCES: 4
    MATCHED INSTANCES: 4

若把版图中某个 MOS 的 W 从 2μm 误画为 2.5μm,报告会变为 INCORRECT,并在 INCORRECT INSTANCES 段落列出该器件,提示参数差异超出容差。此时通过 RVE 高亮即可定位到具体坐标,修改版图后重新运行,直到报告回到 CORRECT。

掌握这条完整执行链路后,LVS 就不再是一个“通过/不通过”的开关,而是一条可以逐段观察、逐段干预的工程流水线。每一段都有明确的输入、输出和判断依据,这也是后续排障与优化运行效率的基础。