3. Calibre LVS运行机制
Calibre LVS 并不是“点一下按钮就出结果”的黑盒,它是一条由多个可观察、可干预阶段组成的执行链路。理解这条链路的意义在于:当 LVS 报出 mismatch 时,你能迅速判断问题出在版图、网表、规则文件还是比较设置,而不是盲目修改版图。本节按真实执行顺序,把 Calibre LVS 的内部机制拆开讲解,并给出每个阶段的关键输入、可观察输出与判断依据。
一、执行链路的整体结构
一次完整的 Calibre LVS 运行,可以划分为五个阶段:读入与解析、器件与连接提取、网表归一化、拓扑比较、报告输出。前两个阶段处理版图侧,第三阶段同时处理版图侧与原理图侧,第四阶段是核心判定,第五阶段把判定结果转化为可读报告。下图给出这条链路的信号与数据流向。
二、读入与解析阶段
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 层标注的节点才会保留真实名称。这正是后续比较阶段需要“节点对齐”的原因。
四、网表归一化阶段
版图侧网表与原理图侧网表在格式、命名、器件顺序上都不一致,直接比较没有意义。归一化阶段做三件事:
- 器件类型统一:把版图提取出的 MOS 与原理图中的 MOS 归为同一类,避免因模型名不同而误判;
- 节点命名对齐:以电源、地、端口等全局网络为锚点,把版图侧自动编号节点与原理图节点建立对应关系;
- 参数容差设定: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 高亮是最高效的定位手段:它把报告中的节点或器件直接映射回版图坐标,让设计者一眼看到差异发生在哪个位置。
七、一次典型运行的参数与结果示例
假设一个反相器单元,规则文件设置 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 就不再是一个“通过/不通过”的开关,而是一条可以逐段观察、逐段干预的工程流水线。每一段都有明确的输入、输出和判断依据,这也是后续排障与优化运行效率的基础。