本文档聚焦 Calibre nmLVS 的核心功能 —— 电路对比,详细阐述其数据流程、对比机制、关键概念(如初始对应点、组件类型、内置器件)及结果分类,是验证版图拓扑与源网表功能一致性的核心参考,对规则文件配置、对比效率优化和差异调试至关重要。
一、LVS 电路对比概述
1. 核心目标与作用
-
目标:对比版图设计的拓扑结构与源网表(如 SPICE),验证版图是否正确实现了源网表的功能意图。
-
核心动作:建立版图与源网表中电路元素(实例、网、端口、实例引脚)的一一对应关系;若存在差异,从源正确、版图错误和版图正确、源错误两个视角生成差异报告。
2. 数据流程
LVS 支持单步流程和两步流程,核心输入输出如下:
(1)输入文件
Calibre nmLVS 的输入包括:SVRF 规则文件、版图网表或几何数据库、以及原始网表。在层次化 LVS(LVS-H)模式下,还会使用层次化单元(hcell)对应列表,该列表可在独立文件、规则文件中指定,或在版图与原始网表的单元名称匹配时自动生成。
- 规则文件(SVRF);
- 版图数据(几何数据库或提取的网表);
- 源网表(SPICE 格式);
- 分层 LVS(LVS-H)额外需要 hcell 对应列表(可在规则文件、独立文件中指定,或自动基于单元名匹配生成)。
(2)流程类型

图 1 展示了在单步流程中同时执行电路提取和网表对比的 LVS 数据流程。
若运行 Calibre nmLVS-H 时指定 -spice 选项,工具会输出 SPICE 格式的版图网表及电路提取报告。以下场景也会触发该输出:
- 指定 -hier 选项(但未指定 -spice 选项);
- 版图系统为几何数据库;
- 指定了掩模 SVDB 目录(用于 Calibre RVE 中的交互式 LVS 调试)。
-flatten 选项用于提取扁平化的版图网表。
若指定运行 ERC 检查、短路隔离检查或软连接检查,LVS 会在电路提取过程中为这些检查生成 DRC 格式的结果数据库。
执行网表对比(指定 -lvs 选项)时,工具始终会生成 LVS 报告。

图 2 展示了在两步流程中分别执行电路提取和对比的 Calibre nmLVS-H 数据流程。
| 单步流程 | 电路提取 + 网表对比一次性完成 | calibre -lvs -hier layout.gds source.spi rules |
| 两步流程 | 先执行电路提取生成版图网表,再执行网表对比 | 1. calibre -spice layout.net -hier layout.gds rules(提取)2. calibre -lvs -hier layout.net source.spi rules(对比) |
(3)输出文件
- 提取的版图网表(.net);
- 电路提取报告、LVS 对比报告(核心差异文档);
- 结果数据库(可在 Calibre RVE 中交叉探测);
- 超大规模(hyperscaling)模式下额外生成对比日志(lvs_report_name.log)。
二、核心对比机制
LVS 工具对比指定原始网表和版图中的电路连接关系。当对比的电路完全等效时,LVS 会在原始网表的电路元件(实例、网络、端口、实例引脚)与版图电路的对应元件之间,建立一一对应的映射关系。
对于存在差异的设计,LVS 报告中会列出两个电路的不一致之处。报告将分别从原始网表视角和版图视角呈现差异:首先假设原始网表数据正确、版图数据错误,然后假设版图数据正确、原始网表数据错误。这种呈现方式可帮助用户对比两种可能的数据分析视角。
Calibre nmLVS 会报告与错误电路元件相关的差异,并提供辅助分类和定位错误的附加信息。为确保不同元件的匹配不会产生误导性结果,工具会应用内部启发式算法。这些内部技术会在程序不同阶段,从多种方法生成的结果中选择最优解决方案。
Calibre nmLVS 会尽可能匹配更多元件,包括对比电路中存在差异的元件。例如,若两个网络的大部分连接是等效的,即使部分连接不同,也可进行匹配。元件之间的对应关系可用于 Calibre RVE 中的交叉探测功能。
用户无需强制提供电路元件之间的初始对应点或 LVS Cpoint 语句),但提供初始对应点通常可以缩短运行时间。对于版图与原始网表中名称不匹配的网络,指定初始对应点(Cpoint)尤为有用。
注意通常建议在默认配置下运行 Calibre nmLVS。这意味着,除非有特殊需求必须修改 LVS 默认设置,否则一般无需在规则文件中指定除 LVS Report、LVS Power Name 和 LVS Ground Name 之外的其他 LVS 专用语句。LVS 报告中会列出所有规则文件规范语句的设置,包括保持默认值的选项。
2.1 网表对比的超大规模优化(Hyperscaling)
通过命令行选项 -hyper cmp,可在 Calibre nmLVS-H 中启用超大规模优化(Hyperscaling)。该优化适用于电路提取模块,且会在提取过程中执行部分对比模块任务(如读取原始网表)。仅当同时指定 -turbo 选项时,才能使用 -hyper cmp 选项。
启用超大规模优化的命令行示例如下:
# MT 模式
calibre -spice layout.net -turbo -hyper cmp -lvs -hier -hcell hcells rules
# MTflex 模式
calibre -turbo -remotefile config.txt -hyper cmp -lvs -hier -hcell hcells rules
当版图系统为几何数据库时,后一条命令行会触发电路提取;否则,仅执行 LVS 对比。
注意-hyper remote 选项会导致 LVS 对比模块不执行 cmp 选项触发的优化。
启用超大规模优化后,运行过程中对比阶段的记录会写入文件 lvs_report_name.log(其中 lvs_report_name 为 LVS 报告的名称)。重要的对比信息仍会输出到标准输出(stdout),但完整的信息集将写入上述日志文件。详情请参见第 542 页的「带超大规模优化记录的层次化对比」章节。
当启用超大规模优化时,若规则文件中指定了 LVS Abort On ERC Error YES、LVS Abort On Supply Error YES 或 LVS Abort On Softchk YES 语句,LVS 会在读取原始网表后、执行对比前终止运行。
2.2 初始对应点
Calibre nmLVS 将原始网表和版图电路中具有相同用户定义名称的网络对、实例对和端口对,作为初始对应点。工具不要求必须存在初始对应点,但建议通过在顶层单元的输入引脚上添加文本,为原始网表和版图的端口指定初始对应点。
Calibre nmLVS 会信任初始对应点,并强制匹配构成初始对应点的元件,即使这些元件本身存在差异。用户也可在规则文件中通过 LVS Cpoint 规范语句指定对应点。
在 Calibre nmLVS-H 中,若初始对应点出现在底层单元,不会阻止逻辑注入、逻辑门形成、串并联器件归并等转换操作;但在顶层单元中,初始对应点会阻止此类转换。
2.3 元件类型
LVS 元件类型是一个名称,用于唯一标识版图或原始网表实例的电气或逻辑功能。Calibre nmLVS 在匹配版图与原始网表实例的过程中会使用元件类型值。实例必须具有相同的元件类型才能被正确匹配。若实例的元件类型不同,但连接关系完全一致,工具有时也会进行匹配,但会在这种情况下报告差异。
1. 掩模版图
提取的版图器件的元件类型,等效于规则文件中对应 Device 操作的 element_name 参数值。例如,语句:
device MP tran poly(g) srcdrn(s) srcdrn(d) bulk(b)
指定了一个 MOS 晶体管器件,其元件类型为 MP。
2. SPICE 网表
SPICE 元件的元件类型描述请参见第 673 页的「元件语句」章节。
LVS Compare Case 语句结合 Layout Case 和 Source Case 语句,可控制 LVS 对比网络、实例、端口、元件及模型名称时的大小写敏感性。LVS 默认不区分大小写。
2.4 元件子类型
LVS 元件子类型(模型)是一个可选名称,与元件类型共同对版图或原始网表实例的电气或逻辑功能进行分类。元件子类型不是匹配原始网表与版图实例的必要条件。仅当两个匹配实例均指定了子类型时,Calibre nmLVS 才会报告其子类型的差异。
以下章节描述了 Calibre nmLVS 用于确定实例元件子类型的规则。
1. 掩模版图
提取的版图器件的元件子类型,等效于对应 Device 操作中可选的 model_name 参数值。例如,操作:
device C(PM) cap poly(pos) metal(neg)
指定了一个电容器件,其元件类型为 C,子类型为 PM。若 Device 操作中未指定 model_name,则该器件无子类型。
2. SPICE 网表
SPICE 元件的子类型描述请参见第 673 页的「元件语句」章节。
LVS Compare Case 语句结合 Layout Case 和 Source Case 语句,可控制 LVS 对比网络、实例、端口、元件及模型名称时的大小写敏感性。LVS 默认不区分大小写。
2.5 必需的器件模型名称
在规则文件的 Device 语句中,器件元件名称 MP、MN、ME、MD、Q 和 D 必须附带与原始网表中使用的模型名称完全一致的模型名。这是网表到网表对比流程的强制要求。
该规则存在两个例外情况:
若原始网表中对应的模型名称分别为 P、N、E 和 D,则可在规则文件中为器件元件名称 MP、MN、ME 和 MD 省略模型名。
若原始网表中对应的模型名称分别为 Q 和 D,则可在规则文件中为器件元件名称 Q 和 D 省略模型名。
三、命名规范与大小写敏感性
LVS 使用多种命名规则,这些规则会体现在 LVS 报告、运行记录和掩模 SVDB 目录结果中。在调试结果时,熟悉这些规则将有助于提高效率。
LVS 的命名规范直接影响初始对应点的生成和对比结果,需重点关注实例引脚、网 / 实例名、端口名、电源地网络的定义,以及大小写敏感性的配置。
3.1. 实例引脚与引脚名称
Calibre nmLVS 在连接关系对比过程中,使用实例引脚名称匹配电路元件。引脚及引脚名称通常由实例从规则文件操作和 SPICE 网表元件中继承。
3.1.1 掩模版图
Calibre nmLVS 在规则文件中指定提取的版图器件的引脚名称,或采用默认规则。
-
内置器件:此类器件具有默认的引脚命名和排序规则,并会被 LVS 进行特殊处理:器件类型 C、D、MD、ME、MN、MP、Q 和 R 对于器件识别和 LVS 对比均为内置类型。每种类型都有一组必须使用的硬编码引脚名称。若遵循第 395 页「内置器件类型」中指定的引脚名称,器件类型 J、L、LDD、LDDD、LDDE、LDDN、LDDP、M 和 V 在 LVS 对比中会被视为内置类型。若使用 LVS Device Type 规范语句,且遵循标准引脚命名和排序规则,任意命名的器件都可被视为内置类型。
-
用户定义器件:规则文件中的 Device 操作可指定用户定义器件(此处的「用户定义」指针对器件识别的目的)。此类器件具有用户定义的引脚名称,提取网表中的引脚顺序遵循对应 Device 语句中指定的顺序。若未遵循第 395 页「内置器件类型」中指定的引脚名称,器件类型 J、L、LDD、LDDD、LDDE、LDDN、LDDP、M 和 V 会被视为用户定义类型。
3.1.2 SPICE 网表
SPICE 元件的引脚名称描述;
3.1.3 引脚过滤
Calibre nmLVS 仅处理具有名称的实例引脚。在单个设计中,可使用同一元件类型但引脚数量不同的实例。例如,在单个设计中可同时存在双引脚电阻和三引脚电阻。
对于给定的元件类型和引脚数量,对应的版图和原始网表引脚应具有完全相同的名称。但允许版图元件实例的引脚不存在于对应的原始网表元件中,反之亦然。LVS 对比算法在建立版图与原始网表元件的对应关系时,会过滤掉这些不存在的引脚。
Calibre nmLVS 过滤缺失引脚的目的,是为了允许高层版图元件拥有对应的原理图元件中不存在的引脚(如电源和地引脚)。经过引脚过滤后,实例必须具有相同的引脚数量和引脚名称,才能被正确匹配。若实例的引脚数量或名称不同,但连接关系相似,工具有时也会进行匹配,但会在这种情况下报告差异。
对于每种元件类型,版图中存在但原始网表中缺失的引脚,以及原始网表中存在但版图中缺失的引脚,都会在 LVS 报告中列出。缺失的电源或地引脚会被报告为警告,其他缺失的引脚会被报告为错误。
若在 LVS Power Name 或 LVS Ground Name 规范语句中分别指定了电源或地引脚的名称,Calibre nmLVS 会对这些引脚名称进行分类。
3.2 网络与实例名称
网络和实例名称在几何版图和 SPICE 网表中指定,两种设计类型的名称获取方式不同。
3.2.1 掩模版图
Calibre nmLVS (默认情况下)从顶层单元中版图图形和路径上的文本对象值获取版图网络名称。这些值在 LVS 触发的电路提取过程中被分配为网络的名称。在掩模 LVS 中,无法为版图实例命名。
3.2.2 SPICE 网表
Calibre nmLVS 从网表中的节点名称获取网络名称,从网表中的元件名称获取实例名称。
3. 3 端口与端口名称
设计端口和端口名称在几何版图和 SPICE 网表中指定。
3.3.1 掩模版图
Calibre nmLVS 通过规则文件中的 Port Layer Text、Port Layer Polygon 和 Port Layer Merged Polygon 规范语句,指定几何版图的端口。
3.3.2 SPICE 网表
Calibre nmLVS 通过两种方式指定设计端口:
若指定了顶层子电路,其子电路的外部节点将作为 LVS 中的设计端口。
除非在规则文件中指定 LVS Globals Are Ports NO,否则 .GLOBAL 语句中指定的所有具有用户定义名称的节点,都将作为 LVS 中的设计端口。
在上述两种情况下,节点名称均作为端口名称。
3. 4. 电源与地网络
Calibre nmLVS 在逻辑门识别、未使用 MOS 晶体管过滤及其他应用中会使用电源和地网络。单个设计中允许存在多个电源网络和多个地网络。
当满足以下任一条件时,一个网络将被视为电源网络(或地网络):
网络名称出现在 LVS Power Name 或 LVS Ground Name 规范语句中。
网络连接到一个端口,且该端口名称出现在 LVS Power Name 或 LVS Ground Name 规范语句中,同时同一设计中没有其他网络使用该名称。若存在多个具有相同电源(或地)名称的端口连接到不同网络,则仅使用其中一个。
通过 LVS Cell Supply 语句,与 LVS Power Name 和 LVS Ground Name 设置匹配的单元端口名称,可在层次结构中向上和向下传播电源和地网络名称,传递至连接到这些端口的网络。
3. 5. 用户定义名称
版图和原始网表数据库的网络、实例和端口可具有用户定义名称、系统生成名称,或同时具有两者。Calibre nmLVS 会报告版图和原始网表元件的用户定义名称之间的差异。
匹配的用户定义名称会在 LVS 中建立初始对应点。
Calibre nmLVS 按以下规则判断一个名称是否为用户定义名称:
-
掩模版图:若一个名称不以 n$、N$、i$ 或 I$ 开头,且不包含超过一个斜杠(/)字符(允许一个前导斜杠),则该名称为用户定义名称。若存在前导斜杠,该斜杠将被忽略。例如,版图名称 /ABC 是用户定义名称,会与原始网表名称 ABC 形成初始对应点;版图名称 ABC 也是用户定义名称,同样会与原始网表名称 ABC 形成初始对应点。
-
SPICE 网表:
-
若一个节点名称至少包含一个非数字字符(字母),且不包含超过一个斜杠(/)字符(允许一个前导斜杠),则该节点名称为用户定义名称。若存在前导斜杠,该斜杠将被忽略。
-
若一个元件名称(排除第一个字符)至少包含一个非数字且非等号(=)的字符,则该元件名称为用户定义名称(SPICE 元件名称的第一个字符始终为 SPICE 元件类型)。此外,该名称不得包含任何 / 字符。例如,C2a、Xabc 和 M1==A 是用户定义元件名称,而 C123、X1、Xabc/X2 和 M1==2 不是。请注意,当原始 SPICE 网表的层次结构被展开时,源自层次结构底层的节点和元件名称永远无法成为用户定义名称,因为这些名称会变成包含 / 字符的层次化路径名。
-
按照惯例,前缀 n$ 和 i$ 表示 Mentor Graphics 原理图数据库中的系统生成网络和实例名称。/ 用作分隔符以形成层次化路径名。等号(=)被 SPICE 解析器用于为通过 M 参数复制的元件生成名称。
3. 6. 名称的大小写敏感处理
默认情况下,版图和原始网表名称的处理不区分大小写。
网表处理分为两个不同的阶段:读取时的网表解析,以及网表对比。这些阶段由不同的规范语句分别控制。
用户可通过 Layout Case 和 Source Case 规范语句,控制输入网表解析时的大小写敏感性。默认情况下,两者均设置为 NO。当设置为 NO 时,SPICE 解析器会在内部统一网表的大小写格式。若将其中任意一个设置为 YES,则 SPICE 网表解析器会以区分大小写的方式处理对应的网表,名称仅大小写不同的网表元件会被视为不同的元件。
当设计中存在仅大小写不同、且需要被视为不同网络的网络名称时,用户可能需要以区分大小写的方式处理输入网表。例如:
$$ SOURCE
.SUBCKT BLOCK SIG sig Y $$ SIG 和 sig 是有意区分的网络
…
$$ LAYOUT
.SUBCKT BLOCK 1 2 3
…
由于 SIG 和 sig 应被视为不同的网络,用户需要在规则文件中指定 Source Case YES,以确保这些网络能够正确对比。
若希望以区分大小写的方式执行 LVS 对比,需要将 LVS Compare Case 指定为 NO 以外的选项。同时,还应将 Layout Case 和 Source Case 设置为 YES;否则,输入网表的文本大小写将无法保留,大小写对比也无法达到预期效果。Layout Case 和 Source Case 语句本身不会触发区分大小写的对比。
下表展示了五种可能有用的大小写敏感性语句组合。未展示的三种组合在大多数设计流程中通常没有实用价值。
| 实例引脚 | 内置器件:硬编码引脚名(如 MOS 管的 G/S/D);用户定义器件:DEVICE 语句指定的引脚名 | SPICE 元素的引脚定义(如电阻的 POS/NEG) | 仅处理有名称的引脚;缺失引脚会被过滤,电源地引脚缺失报警告,其他报错误 |
| 网 / 实例名 | 网名:顶层单元中图形的文本值;实例名:不支持在 Mask LVS 中命名 | 网名:节点名;实例名:元素名(如 M1、R2) | 用户定义名需满足特定格式(不包含 n$/i$、最多一个 /),系统生成名会被自动识别 |
| 端口名 | 由 Port Layer Text/Polygon 语句指定 | 顶层子电路的外部节点;.GLOBAL 语句指定的节点(需 LVS Globals Are Ports YES) | 端口名是重要的初始对应点来源 |
| 电源地网络 | 满足 LVS Power Name/Ground Name 的网名或端口名 | 同上 | 支持多个电源 / 地网络;用于逻辑门识别、未使用器件过滤等 |
3.7 区分大小写语句的不良影响
启用大小写敏感性可能会导致一些不良副作用,例如丢失初始对应点(详情请参见第 385 页的「初始对应点」)。假设原始网表中有网络 a,版图中有网络 A:在不区分大小写的对比中,这些网络会形成初始对应点;但在启用大小写敏感性后,它们将不会形成初始对应点,从而导致性能下降。
对于给定元件的文本大小写不统一的网表,启用大小写敏感性可能会在解析网表时导致错误。例如,假设原始网表中包含以下内容:
.SUBCKT inst pos neg
.ENDS
…
X3 vss vdd INST
若设置 Source Case NO,子电路名称 inst 和 INST 可被正确解析;但若设置 Source Case YES,且原始网表中不存在名为 INST 的子电路,则会导致错误。网表中此类大小写差异在启用大小写敏感性时可能会引发问题。
请注意,当将 Layout Case 或 Source Case 设置为 YES 时,Layout Primary 和 Source Primary 单元名称的处理会区分大小写。若规则文件与网表中的顶层单元名称存在大小写不匹配,将导致错误。
四、内置器件类型与特殊处理
Calibre 对内置器件提供特殊处理(如器件归约、引脚交换、逻辑门识别),前提是器件满足固定的引脚命名规则;若不满足,则视为用户定义器件,无特殊处理。
1. 核心内置器件及引脚要求
请注意,这些器件类型是相对于 LVS 电路对比子系统的内置类型。其中部分(但非全部)器件类型,对于由 Device 操作管辖的器件识别模块也是内置类型。

表 2 中以上标 ¹ 标记的器件,是对于器件识别和 LVS 对比均为内置的类型。此类器件具有硬编码的引脚名称,无法被覆盖。
对于器件识别非内置的器件,其引脚名称并非硬编码。表 13-2 中以上标 ² 标记的器件,若使用公认的引脚名称,在 LVS 对比中会表现为内置器件;但若指定了用户定义的引脚名称,则这些器件会被视为用户定义类型。此行为的详细描述请参见本节后续内容。
为了执行以下章节中描述的特殊处理,Calibre nmLVS 要求内置器件必须遵循关于引脚数量和引脚名称的特定规则。对于不遵循这些规则的内置器件,将不会执行任何特殊处理。关于如何确定原始网表电路和版图中的引脚名称,请参见第 388 页的「实例引脚与引脚名称」章节。
用户可通过 LVS Device Type 规范语句,将任意名称的器件指定为内置器件。此类器件必须遵循本节讨论的引脚命名规则,才能参与 LVS 流程(如归并、过滤、引脚交换等)。
1. MOS 晶体管
被识别为内置器件的普通 MOS 晶体管,会被 Calibre nmLVS 进行以下特殊处理:逻辑门识别、并联晶体管归并、分裂栅归并、未使用晶体管过滤、默认启用源 / 漏引脚交换、软衬底引脚处理,且引脚名称始终不区分大小写。
为了表现为内置器件,MOS 晶体管(元件类型 MN、MP、ME、MD、M、LDDN、LDDP、LDDE、LDDD、LDD,以及通过 LVS Device Type 规范语句指定的等效类型)必须至少具有三个引脚—— 栅极(Gate)、源极(Source)和漏极(Drain),如表 13-3 所示。此外,它们可具有任意数量的附加引脚,名称不限。第四个引脚通常代表衬底连接,按照惯例命名为 B。规则文件的 Device 语句语法会强制遵循此惯例,但 LVS 电路对比模块不强制。可选引脚可代表一个或多个衬底连接,或用于其他任何目的。
表 3 MOS 晶体管的必需引脚名称
| MOS 晶体管栅极 | G 或 GATE |
| MOS 晶体管源极 | S 或 SOURCE |
| MOS 晶体管漏极 | D 或 DRAIN |
| 可选引脚 | 任意名称(第四个引脚若要通过 Device M* 或 LDD* 语法检查,必须为 B) |
LDD 器件是源极和漏极引脚不可交换的 MOS 晶体管。五种 LDD 晶体管类型 LDDN、LDDP、LDDE、LDDD 和 LDD 分别对应五种普通晶体管类型 MN、MP、ME、MD 和 M。LDD 是轻掺杂漏极(Lightly Doped Drain)的缩写。
若 MOS LDD 晶体管遵循表 13-3 的引脚规则,会被进行以下处理:逻辑门识别、并联晶体管归并、分裂栅归并、未使用晶体管过滤、软衬底引脚处理,且引脚名称始终不区分大小写。
若 MOS 器件 M、LDDN、LDDP、LDDE、LDDD 和 LDD 不具有表 13-3 所示的必需引脚名称,将不会得到任何特殊的 LVS 对比处理,会被视为用户定义类型。请注意,用户定义器件的引脚顺序取自规则文件中对应的 Device 语句。
以下规范语句控制 Calibre nmLVS 用于 MOS 晶体管的特殊处理功能:
- LVS Builtin Device Pin Swap
- LVS Builtin MOS NRD_NRS
- LVS Device Type
- LVS Discard Pins By Device
- LVS Ignore Device Pin
- LVS Filter
- LVS Filter Unused MOS
- LVS Map Device
- LVS MOS Swappable Properties
- LVS Property Map
- LVS Recognize Gates
- LVS Reduce
- LVS Reduce Parallel MOS
- LVS Reduce Semi Series MOS
- LVS Reduce Series MOS
- LVS Reduce Split Gates
- LVS Spice Rename Parameter
- LVS Short Equivalent Nodes
2. 电容器
Calibre nmLVS 对内置电容器进行以下处理:串联电容器归并、并联电容器归并、按需启用引脚交换、软衬底引脚处理,且引脚名称始终不区分大小写。
为了表现为内置器件,电容器(元件类型 C,以及通过 LVS Device Type 规范语句指定的等效类型)必须至少具有两个引脚,且符合表 4 的引脚名称。此外,它们可具有任意数量的附加引脚,名称不限。第三个引脚通常代表衬底连接,器件提取器默认将其命名为 SUB,但在 Device 语句中可使用任意名称。可选引脚可代表一个或多个衬底连接,或用于其他任何目的。
若在 Device 语句中指定的电容器器件与表 4 所示不同,这些器件会被视为用户定义类型,不会得到 LVS 的任何特殊对比处理。用户定义器件的引脚顺序取自规则文件中对应的 Device 语句。
表 4 电容器的必需引脚名称
| 电容器正极引脚 | POS 或 P |
| 电容器负极引脚 | NEG 或 N |
| 可选引脚 | 任意名称 |
以下规范语句控制 Calibre nmLVS 用于电容器的特殊处理功能:
- LVS Device Type
- LVS Discard Pins By Device
- LVS Map Device
- LVS Netlist Comment Coded Properties
- LVS Property Map
- LVS Reduce
- LVS Reduce Parallel Capacitors
- LVS Reduce Series Capacitors
- LVS Spice Rename Parameter
3. 电阻器
Calibre nmLVS 对电阻器进行以下处理:串联电阻器归并、并联电阻器归并、默认启用引脚交换、软衬底引脚处理,且引脚名称始终不区分大小写。
为了表现为内置器件,电阻器(元件类型 R,以及通过 LVS Device Type 规范语句指定的等效类型)必须至少具有两个引脚,且符合表 5 的引脚名称。此外,它们可具有任意数量的附加引脚,名称不限。第三个引脚通常代表衬底连接,器件提取器默认将其命名为 SUB,但在 Device 语句中可使用任意名称。可选引脚可代表一个或多个衬底连接,或用于其他任何目的。
若在 Device 语句中指定的电阻器器件与表 5 所示不同,这些器件会被视为用户定义类型,不会得到 LVS 的任何特殊对比处理。用户定义器件的引脚顺序取自规则文件中对应的 Device 语句。
表 5 电阻器的必需引脚名称
| 电阻器正极引脚 | POS 或 P |
| 电阻器负极引脚 | NEG 或 N |
| 可选引脚 | 任意名称 |
以下规范语句控制 Calibre nmLVS 用于电阻器的特殊处理功能:
- LVS Builtin Device Pin Swap
- LVS Device Type
- LVS Discard Pins By Device
- LVS Ignore Device Pin
- LVS Map Device
- LVS Property Map
- LVS Reduce
- LVS Reduce Parallel Resistors
- LVS Reduce Series Resistors
- LVS Spice Rename Parameter
4. 二极管
Calibre nmLVS 对二极管进行以下处理:并联二极管归并、软衬底引脚处理,且引脚名称始终不区分大小写。
为了表现为内置器件,二极管(元件类型 D,以及通过 LVS Device Type 规范语句指定的等效类型)必须至少具有两个引脚,且符合表 6 的规则。此外,它们可具有任意数量的附加引脚,名称不限。第三个引脚通常代表衬底连接,器件提取器默认将其命名为 SUB,但在 Device 语句中可使用任意名称。可选引脚可代表一个或多个衬底连接,或用于其他任何目的。
若在 Device 语句中指定的二极管器件与表 6 所示不同,这些器件会被视为用户定义类型,不会得到 LVS 的任何特殊对比处理。用户定义器件的引脚顺序取自规则文件中对应的 Device 语句。
表 6 二极管的必需引脚名称
| 二极管正极引脚 | POS 或 P |
| 二极管负极引脚 | NEG 或 N |
| 可选引脚 | 任意名称 |
以下规范语句控制 Calibre nmLVS 用于二极管的特殊处理功能:
- LVS Device Type
- LVS Discard Pins By Device
- LVS Filter
- LVS Filter Unused Diodes
- LVS Ignore Device Pin
- LVS Map Device
- LVS Property Map
- LVS Reduce
- LVS Reduce Parallel Diodes
- LVS Spice Rename Parameter
5. 双极晶体管
Calibre nmLVS 对双极器件进行以下处理:并联双极晶体管归并、未使用双极晶体管过滤、软衬底引脚处理,且引脚名称始终不区分大小写。
为了表现为内置器件,双极器件(元件类型 Q,以及通过 LVS Device Type 规范语句指定的等效类型)必须至少具有三个引脚—— 集电极(Collector)、基极(Base)和发射极(Emitter)。此外,它们可具有任意数量的附加引脚,名称不限。第四个引脚通常代表衬底连接,按照惯例命名为 S。规则文件的 Device 定义语法会强制遵循此惯例,但 LVS 电路对比模块不强制。可选引脚可代表一个或多个衬底连接,或用于其他任何目的。表 7 列出了引脚名称:
表 7 双极晶体管的必需引脚名称
| Q 晶体管集电极 | C |
| Q 晶体管基极 | B |
| Q 晶体管发射极 | E |
| 其他引脚 | 任意名称(第四个引脚若要通过 Device Q 语句语法检查,必须为 S) |
若在 Device 语句中指定的双极器件与表7 所示不同,这些器件会被视为用户定义类型,不会得到 LVS 的任何特殊对比处理。用户定义器件的引脚顺序取自规则文件中对应的 Device 语句。
以下规范语句控制 Calibre nmLVS 用于双极晶体管的特殊处理功能:
- LVS Device Type
- LVS Discard Pins By Device
- LVS Filter
- LVS Filter Unused Bipolar
- LVS Ignore Device Pin
- LVS Map Device
- LVS Netlist Comment Coded Properties
- LVS Property Map
- LVS Reduce
- LVS Reduce Parallel Bipolar
- LVS Spice Rename Parameter
6. JFET 晶体管
JFET 晶体管器件(元件类型 J)必须至少具有三个引脚—— 栅极、源极和漏极。此外,它们可具有任意数量的附加引脚,名称不限。可选引脚可代表一个或多个衬底连接,或用于其他任何目的。
若 JFET 符合表 8 的规则,Calibre nmLVS 会对其进行以下处理:软衬底引脚处理;引脚名称始终不区分大小写。
表 8 JFET 晶体管的公认引脚名称
| J 晶体管栅极 | G 或 GATE |
| J 晶体管源极 | S 或 SOURCE |
| J 晶体管漏极 | D 或 DRAIN |
| 其他引脚 | 任意名称 |
若在 Device 语句中指定的 J 器件与表 8 所示不同,这些器件会被视为用户定义类型,不会得到 LVS 的任何特殊对比处理。用户定义器件的引脚顺序取自规则文件中对应的 Device 语句。
以下规范语句控制 Calibre nmLVS 用于 JFET 晶体管的特殊处理功能:
- LVS Discard Pins By Device
- LVS Filter
- LVS Ignore Device Pin
- LVS Map Device
- LVS Property Map
- LVS Reduce
- LVS Spice Rename Parameter
7. 电感器
电感器件(元件类型 L)必须至少具有两个引脚—— 正极和负极。此外,它们可具有任意数量的附加引脚,名称不限。可选引脚可代表一个或多个衬底连接,或用于其他任何目的。
若电感器符合表 9 的规则,Calibre nmLVS 会对其进行以下处理:软衬底引脚处理;引脚名称始终不区分大小写。
表 9 电感器的公认引脚名称
| 电感器正极引脚 | POS 或 P |
| 电感器负极引脚 | NEG 或 N |
| 可选引脚 | 任意名称 |
若在 Device 语句中指定的 L 器件与表 9 所示不同,这些器件会被视为用户定义类型,不会得到 LVS 的任何特殊对比处理。用户定义器件的引脚顺序取自规则文件中对应的 Device 语句。
以下规范语句控制 Calibre nmLVS 用于电感器的特殊处理功能:
- LVS Discard Pins By Device
- LVS Filter
- LVS Ignore Device Pin
- LVS Map Device
- LVS Property Map
- LVS Reduce
- LVS Spice Rename Parameter
8. 电压源
电压源器件(元件类型 V)必须至少具有两个引脚—— 正极和负极。此外,它们可具有任意数量的附加引脚,名称不限。可选引脚可代表一个或多个衬底连接,或用于其他任何目的。
若电压源符合表 10 的规则,Calibre nmLVS 会对其进行以下处理:软衬底引脚处理;引脚名称始终不区分大小写。
表 10 电压源的公认引脚名称
| 电压源正极引脚 | POS 或 P |
| 电压源负极引脚 | NEG 或 N |
| 可选引脚 | 任意名称 |
若在 Device 语句中指定的 V 器件与表10 所示不同,这些器件会被视为用户定义类型,不会得到 LVS 的任何特殊对比处理。用户定义器件的引脚顺序取自规则文件中对应的 Device 语句。
以下规范语句控制 Calibre nmLVS 用于电压源的特殊处理功能:
- LVS Discard Pins By Device
- LVS Filter
- LVS Ignore Device Pin
- LVS Map Device
- LVS Property Map
- LVS Reduce
- LVS Spice Rename Parameter
9. X+ 器件
X+ 器件是子类型以字母 X 开头且至少包含一个其他字符的 MOS 晶体管。
规则文件示例:
DEVICE M(XP) gate poly sd sd well // X+ 器件
DEVICE M(XABC) gate poly sd sd well // X+ 器件
DEVICE M(X) gate poly sd sd well // 普通 MOS 器件
SPICE 网表示例:
M1 1 2 3 4 XP $ X+ 器件
M2 1 2 3 4 XABC $ X+ 器件
M3 1 2 3 4 X $ 普通 MOS 器件
X+ 器件会阻止逻辑门的形成,并对分裂栅归并(参见第 418 页的「分裂栅归并」)产生限制作用。在其他方面,它们的行为与普通 MOS 晶体管一致;例如,它们会受 LVS Reduce Parallel MOS、LVS Reduce Series MOS 等语句的管辖。
10. MS 和 MF 原理图器件
MS 和 MF 是 LVS 支持的特殊器件类型。它们是三引脚原理图符号,代表四引脚 CMOS 晶体管。第四个衬底引脚由器件类型隐含定义:
- MS 器件的衬底引脚隐含连接到源极;
- MF 器件的衬底引脚浮空。
Calibre nmLVS 会在内部为原理图中的所有 MS 实例添加一个虚拟衬底引脚,该引脚在内部连接到实例的源极网络,引脚名称为 B。
Calibre nmLVS 会在内部为原理图中的所有 MF 实例添加一个虚拟衬底引脚,并为每个实例在内部创建一个虚拟网络以表示浮空的衬底节点,实例的衬底引脚在内部连接到该虚拟网络,引脚名称为 B。
要触发此特殊处理,实例的 LVS 元件类型必须为 MN、MP、LDDN 或 LDDP,且实例必须恰好具有三个引脚,并使用第 395 页「内置器件类型」中指定的标准引脚名称。这意味着,必须使用除元件或 SPICE 模型以外的其他属性(建议选择 phy_comp 属性),为这些实例指定 LVS 元件类型。
2. 电路元件匹配方法
Calibre nmLVS 在两种元件匹配方法之间迭代:基于特征的哈希方法和追踪方法。
1. 基于特征的方法
Calibre nmLVS 根据网络和实例的类型及连接关系,为两个电路中的网络和实例分配特征(Signature)。然后,工具会根据以下因素对电路元件进行哈希处理:
- 元件的特征
- 邻近环境中元件的特征
- 环境中是否存在先前匹配的元件
环境规模会不断增大,直到找到至少一对唯一匹配的元件。工具会为所有找到的唯一匹配元件建立对应关系。
2. 追踪方法
Calibre nmLVS 将先前匹配的元件作为初始对应点,从这些对应点开始,逐步追踪两个电路。工具会在每一步为可唯一匹配的元件建立对应关系。追踪过程会持续进行,直到发生以下情况之一:
- 所有元件均被匹配
- 检测到阻止进一步追踪的差异
- 检测到阻止进一步追踪的电路可互换部分
Calibre nmLVS 会重复上述两种方法,直到所有元件均被匹配,或无法再匹配更多元件。在后一种情况下,工具会在内部尝试修正部分错误。若错误可被修正,则会匹配更多元件,并重复该过程。
3. 电路对比结果
Calibre nmLVS 将两个对比电路的元件(网络、实例、端口)分为以下三类:
1. 正确(Correct)
这些元件属于电路中实现正确的部分。它们是与相同元件唯一匹配的元件,且在另一个电路中始终具有对应的正确元件。
2. 错误(Incorrect)
这些元件确定存在错误。它们是在另一个电路中没有相同元件的元件。错误元件可能会与另一个电路中的不同元件匹配,或保持未匹配状态(工具会给出建议匹配)。尽管原始网表电路被视为参考,但从版图视角来看,其元件也可能被分类为错误。
3. 未匹配(Unmatched)
这些元件无法唯一匹配到另一个电路中的元件,也无法被分类为错误。这可能是由附近的错误元件导致的。
Calibre nmLVS 区分错误元件和未匹配元件,以帮助用户分析错误。在大多数情况下,只需修复被分类为错误的元件,而忽略未匹配元件列表即可。当错误元件被修复后,未匹配元件在大多数情况下会被重新分类为正确。(更多信息请参见第 547 页的「LVS 报告」章节。)
4. 歧义解决(Ambiguity Resolution)
歧义通常出现在高度并行和对称的电路中。在这些电路中,部分电路可以互换而不影响连接关系,因此无法区分这些可互换部分。
Calibre nmLVS 使用命名的网络、实例和端口作为初始对应点,以解决歧义情况。此外,工具还会使用元件子类型解决歧义,并通过检查 Trace Property 规范语句追踪的属性来解决歧义。后一种技术仅适用于每组包含不超过一定数量元件的歧义元件组,该数量由规则文件中的 LVS Property Resolution Maximum 规范语句指定,默认值为 32。
Calibre nmLVS 会为哈希电路元件所用的环境规模设置最大限制。环境规模由多种因素决定,包括电路大小。若超过环境限制且无法找到唯一匹配,LVS 会进入歧义解决阶段。在该阶段,工具会对无法通过其他方式解决的部分元件进行任意匹配。工具仅允许进行最少量的任意匹配,任意匹配的元件会在 LVS 报告中列出。若任意匹配不正确,Calibre nmLVS 会在后续阶段产生差异。在这种情况下,用户应为任意匹配的元件或其附近的其他元件分配版图文本名称。
为避免任意匹配,用户应为电路可互换部分的网络命名。可为每个可互换部分命名一个元件。对于对称电路的外部端口,应始终进行命名。
| MOS 管(含 LDD 型) | MN/MP/ME/MD/M/LDDN/LDDP | G/GATE、S/SOURCE、D/DRAIN | 并行 / 串联归约、分裂栅归约、S/D 引脚交换、逻辑门识别、未使用器件过滤 |
| 电阻 | R | POS/P、NEG/N | 并行 / 串联归约、引脚交换 |
| 电容 | C | POS/P、NEG/N | 并行 / 串联归约、可选引脚交换 |
| 二极管 | D | POS/P、NEG/N | 并行归约 |
| 双极晶体管 | Q | C(集电极)、B(基极)、E(发射极) | 并行归约、未使用器件过滤 |
七、关键注意事项
默认配置优先:除非有特殊需求,否则无需修改 LVS 的默认配置,仅需指定报告、电源地网络即可;
初始对应点的重要性:顶层端口的命名是最有效的初始对应点,能大幅提升对比效率;
内置器件的引脚规则:严格遵循内置器件的引脚命名要求,才能获得归约、引脚交换等特殊处理,减少差异报告的数量;
大小写敏感的副作用:开启前需确保网表中名称的大小写一致性,避免丢失初始对应点或解析错误。



