千线万网,电路之行——LVS检查的内核逻辑
数字后端的物理验证中,一项重要的任务当属LVS检查。 先来一张帅照镇贴(_)
定义
LVS(Layout Versus Schematic)检查:顾名思义,工具进行的是物理版图(Layout)和电路原理图(Schematic)的一致性比较,用于确保芯片后端实现的版图就是真正想要制造的逻辑电路。
它包含3个重要的步骤:
- v2lvs:使用v2lvs工具,
==将PR后的Verilog网表转化为Calibre LVS用到的SPICE网表==
,在转化过程中需要include所有用到的std cell和macro的spi网表(类比merge gds)。
- Extraction:Calibre工具==“Extract”由物理版图(Layout)所确定的SPICE网表==
- Compare:将Layout所确定的SPICE网表与设计Verilog网表转化后的SPICE网表进行对比。
在这个阶段,工具会将“提取网表”和“原理图网表”进行逐一比对,比对内容包括:
1.器件数量是否一致(如多少个NMOS、PMOS等);
2.器件类型是否一致;
3.网络连线是否一致;
4.器件连接方式、端口命名、子模块调用是否匹配;
5.等效性文件中定义的Cell匹配是否正确。
从上面的分析可知,LVS检查本质上还是两份SPICE网表的对比——一份从版图提取,一份来自原理图设计——进而确保器件类型、数量、尺寸以及电气连接关系完全一致。
GDS port信息
都知道,在跑lvs前,需要将导出的gds的pg打上text信息,才能完成lvs的比对,这是为什么呢?
其实LVS在进行物理版图(Layout/GDS)和v2lvs Netlist对比时,都需要先将两个目标黑盒(GDS/netlist)的port先进行比对。对于信号port,一个信号port通常只会有一个terminal,多terminal通常是被禁止的,因此工具(如innovus/icc)在导出GDS时会自带信号port的text信息,以便于lvs识别。
但是对于PG的port会有一些特殊,因为PG通常是multi-terminal的,这可以有效提高供电质量。因此工具无法识别PG的terminal并带上text信息,所以用户需要手动定义PG text的位置,只能对真正会有PG输入的点进行定义。比如对于一个block的设计,有M4、M5两层PG走线,我们在创建PG text的时候只能创建M5的PG text。
流程
LVS的流程如下,工具将 design的layout抽取出其对应的Layout netlist,然后和v2lvs后 source 的netlist 进行比对。进而根据LVS规则,生成对应的报告。
常见错误
- Spice netlist file error
这种情况 LVS 报告提示 “NOT COMPARED”。通过查看 LVS 报告 lvs.rep 得知,因为 source 的 spice 网表存在错误,工具没有读取成功(比如某个 ip 的. spi 文件不存在或者路径不正确)。 - LVS Port name 不一致
这种情况可能是由于 TEXT 打的方式不正确,比如少打 TEXT,或者 TEXT name 不对。 - LVS OPEN
设计中存在线路open的情况。表现为LAYOUT 上的两条 NET,对应到SOURCE 只有一条 NET。 - LVS SHORT
layout 上存在 short,表现为 LAYOUT 上的一条 NET,对应到 SOURCE 则有两条 NET。 - Device type mismatch
device 在 LAYOUT 和 SOURCE 上 Device type 不匹配,比如一个是NMOS,一个是PMOS。 - LVS stamping conflict in SCONECT- multiple source nets stamp one target net
当不同的net对应的net shape连接到同一条net上,此时LVS检查就会报Stamping Conflict。而且这个连接关系是通过LVS Deck文件中SCONNECT定义的。通常是由于PG Floating导致的,检查是否VDD 和 VSS是否存在open的情况。
如何快速通过LVS?
在解决任何问题时,都要先把能解决的问题先解了,首先就是先把能解决的问题先解了,保证问题的干净度,避免问题之间的互相干扰。
在解决lvs问题时,一定要现在Innovus中坐online的LVS检查,只要这个online LVS pass了,那么Calibre LVS基本上就没有什么问题了。
如何在innovus 中做online LVS?
1、检查PG的connectivity
verifyConnectivity -type special-noAntenna-noWeakConnect -noUnroutedNet-error 1000-warning 50 -net VDD/VSS/VDD_LOCAL
检查PG的连接性,确保没有open的情况。
2、检查PG Short
verify_PG_short -no_routing_blkg
确保PG 没有Short的情况。如果PG short会导致电源、地认错,导致一系列问题。所以必须优先解决。
3、检查信号的connectivity
verifyConnectivity -type all -error 1000 -warning 50
要确保所有cell的信号线没有open的情况
4、检查信号的Short
verify_drc
通过verify_drc,可以检查出信号是否存在short
以上Online LVS全部检查通过之后,可以大幅确保LVS能够pass!!!
代码与文字齐飞,逻辑共创意一色!若我的文章让你会心一笑,点个赞我们一起笑谈"IC人生"!