千线万网,电路之行——LVS检查的内核逻辑

数字后端的物理验证中,一项重要的任务当属LVS检查。 先来一张帅照镇贴(_)
在这里插入图片描述

定义

LVS(Layout Versus Schematic)检查:顾名思义,工具进行的是物理版图(Layout)和电路原理图(Schematic)的一致性比较,用于确保芯片后端实现的版图就是真正想要制造的逻辑电路

它包含3个重要的步骤:

  1. v2lvs:使用v2lvs工具,==将PR后的Verilog网表转化为Calibre LVS用到的SPICE网表==,在转化过程中需要include所有用到的std cell和macro的spi网表(类比merge gds)。
    在这里插入图片描述
  2. Extraction:Calibre工具==“Extract”由物理版图(Layout)所确定的SPICE网表==
  3. 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规则,生成对应的报告。
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8a1931d5f2d14f79b6f7d06a2026f531.png

常见错误

  • 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人生"!qxOWwKbl1tTzkyu.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值