物理验证LVS流程和技术点滴(上)

*【编者按】 在之前的Calibre Calibre物理验证技术点滴 有一个对LV整体概貌的讲解,但是针对LV里边相对有一点挑(fu)战(za)的LVS而言,这里拿出来专本的一个系列进行讲解,期待各位读者从中获取一些灵感和收获。 *

在一个芯片的最终tape-out时候,物理验证的一个重要的检查项当属LVS莫属。先来一张帅图镇贴。 ^_^
在这里插入图片描述

LVS 的目的

和功能类的一致性的比较formal相对而言,芯片里边的LVS可以视为物理版图(GDS)和原理图(Schematic)的已于比对规则文件(LVS)完成的一致性比较。所以LVS的全称即是:Layout Versus Schematic。
版图(Layout)是指:工具(Calibre)对二进制文件(GDS)进行到spice网表的转化,
原理图(Schematic)是指:工具(v2lvs)将verilog进行spice的网表转化,
规则文件(RSF):是对GDS的操作,以及LVS比对是的常规配置
所以,用下表来对LVS和formal(LEC/formality)进行一个比较

类目/工具GoldenRevised
formal RTLRTLsyn-netlist
formal gatesyn-netlistlayout-netlist
LVSlayout-netlistGDS

可以看到,最终的用户会得到这样一个功能侧的恒等式
RTL = syn-netlsit = layout-nelist = GDS
最终的目标就是让流片的GDS功能恒等于RTL,确保功能,版本等等的正确。
PS:这里的等式标注了功能侧,这是因为GDS里边包含了除过功能侧意外的其他的组件(这些组件并不会影响对RTL功能的比对),包括但不限于:

  • std-cell 版本
  • 合规RSF版本:TO的GDS,必须是包含在某个合规RSF检查通过的数据。
  • IP/phy的版本
  • PG/UPF/PD/MV 信息
  • physical-only cell: Clamp,process-cell,marker-cell etc.

LVS 的输入文件和使用

综上所述,开始一个LVS的比对,通常需要有下列三个文件,分别是:

  • GDS
  • PG netlist
  • RSF
    下面对这些输入文件的数据要求和使用分布做一下阐述。

GDS 导出和处理技巧

GDS导出和整合(merge)

这里的GDS的源头,就是从APR的layout数据库里边直接吐出来的GDS,但是通常这个GDS是无法直接给LVS去使用的,可能会有包含并不限于下列的因素:

  • GDS不完整
    • S家流程:ICC/ICC2的MW/NDM,的数据源是LEF,instance 的GDS的只有边框信息
    • C家流程:enconter/innovus的数据源是LEF,instance 的GDS的只有边框信息
  • GDS 的merge和版本问题
    • 通过APR merge GDS
      • S家的ICC:完全不支持GDS 导出时的 GDS merge
      • S家的ICC2:使用命令write_gds -merge_files $GDS_FILE LIST进行GDS导出时的GDS merge。这个是强制复写,无论NDM是否包含实际的instance的GDS信息,通过-merge_files选项,在导出GDS的时候强行merge-in 指定的GDS信息
      • C家enconter/innovus:使用命令streamOut -merge $GDS_FILE LIST进行GDS导出时的GDS merge。通过-merge选项,在导出GDS的时候merge-in 指定的GDS信息。
    • 通过Calibre命令进行GDS merge:layout filemerge -in $TOP_GDS -in $LIB1_GDS -in $LIB2_GDS [-mode append|overwrite|rename|forcerename] -out $FULL_GDS
    • 推荐和理由
      • 上述多种方法的merge结果相同,这里依然推荐Calibre,理由如下:
      • 从方便和版本控制的角度讲:首推Calibre。由于芯片在APR工具里边进行的修复,通常和IP/LIB的GDS没有直接关系,加之芯片流片前的:ROM_code/IP_update/parition_update等需求,在顶层人员手中,只需要控制好各个版本,而无需打开APR工具,既可以完成最终的合片,所以,使用Calibre的优势就比较明显。
      • calibre的GDS merge,对于控制(模式/版层/深度/缩放/cell_name映射等)和rename的报告比较友好,对于大芯片的GDS merge质量控制是有一定优势的

PS:Calibre里边还有一个layout merge,这个命令的作用将两个GDS内容合并成一个新的GDS,这里不做赘述

GDS port信息的准备

由于LVS的比对方式很像formal,把实际的目标当作一个黑盒,所以无论是flatten(nmLVS)还是hierarchy(nmLVS-H:这个基本是现代LV的常用方式)的LVS,都需要将两个目标黑盒(GDS/netlist)的port先进行比对。所以GDS里的port信息,在用户导出GDS之前需要谨慎处理,但是calibre DRC通常对这个信息不敏感,这个也是LVS的特殊之处。
Calibre通常使用text(label)对芯片的port进行识别,通过查阅DRM手册,可以看到GDS里边的text版层定义
在这里插入图片描述
所以,用户在导出GDS的之前,需要在所有的port上定义好对于的port text(label),譬如:port:“A”对于的terminal 在M5,那么用户需要在M5 terminal的shape 范围上创建一个文本:“A”。通常建议放置到这个terminal的中心位置,并且要谨记port和terminal layer的不能错层,这个对于后期出bump坐标也是可以共用的坐标点。譬如这里的信号port:P11
在这里插入图片描述
对于所有的信号port,通常比较容易,因为常规的方法是一个信号 port通常只会有一个terminal,多terminal通常是被禁止的,不利于extraction和顶层连接。
PG的port会有一些特殊,这是因为PG通常是multi-terminal,这个会很方便连接PG,通过看IP的PG pin 就能感受到这个现象
在这里插入图片描述
主要是可以有效提高供电质量。
所以对于PG 的text,这里需要强调以下几点:

  • 需要符合设计初衷:尽管设计中的PG是一张网络,用户需要严格定义PG text的位置,只能对真正会有PG输入的点进行定义,不能每个PG terminal 都定义一个text,这里分为block和top 两种情形
    • 譬如这样一个block,有两层PG走线
      在这里插入图片描述
      现在很多项目为了保留更多的绕线资源给block,通常只连接最顶层的PG 网络,譬如这里的M5,所以用户如果需要在局部使用M4作为internal route,还是有操作余地的,所以在创建PG text的时候只能创建M5的text,这样在做后期block LVS (后续会详细展开)以及IR的时候才能算是尊重设计。
    • 对于top设计,PG的text尤其重要:用户只能在bump/bonding out的PG terminal定义text,否则会给芯片的LVS带来真实的hole
      在这里插入图片描述
      这个例子里边,上部(upper)的PG shape和下部(lower)的PG shape在芯片内部是隔断的,这恶时候芯片也只会在下部的VDD bump point一个对外连接点,这个时候,如果用户错误的在上部定义了另一个

对于port还有一个有趣的事情,所有的IP都有自己的port text,也会放到比较高的层级,譬如IO上的port,VDD IO的通常会在M5层级创建一个text恰好也叫VDD,但是top-level的对于这恶VDD IO在顶层的应用是在VDD_MAIN net上,譬如下图
在这里插入图片描述
所以,最终的GDS在同样的M5 shape会有两个text:VDD和VDD_MAIN,遇到这种情形,通常需要在LVS的配置里边声明如下命令,来强制工具只识别top-level的text,来避免产生这种冲突:TEXT DEPTH PRIMARY
随着工艺复杂度不断提升,layer:datatype的应用也越来越普遍,APR工具在导出GDS的时候,都会应用一些类似map file的方式进行GDS stream-out的微控制,可以控制port/text的输出。就算用户创建了port text,也需要在mapfile里边,进行对应的配置,否则也会出现text没有被导出的情形,这样也会导致LVS的失败。具体操作细节,请参考各个EDA工具的配置手册
PS:由于C家和S家的一些策略区别,prboundary的处理也有一些不同:S家需要在工艺指定的prboundary层基于die boundary创建user_shape ,才可以导出;C家需要在mapfile 里边定义layerObjName/layerObjType 非别为DIEAREA/ALL,以及层号和数据类型(layer 和datatype),即可导出。

未完待续(To Be Continued )…

【敲黑板划重点】

在这里插入图片描述
LVS可以简单理解为物理级别的formal,专注目标,一定要从专注细节开始。

参考资料

Cadence Innovus user guide
Synopsys ICC/ICC2 user guide
Mentor Standard Verification Rule Format(SVRF) Manual
Mentor Calibre® DESIGNrev™ Reference Manual
Mentor Calibre® Verification User’s Manual

  • 19
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
LVS是一个负载均衡器,常用于分布式系统中,以提高系统的可用性和性能。在LVS的配置和使用过程中,可能会出现一些常见的错误。以下是一些常见的LVS验证错误集合: 1. 配置错误:可能会出现配置文件中的语法错误或者逻辑错误,导致LVS无法正常启动或者工作。这包括IP地址、端口号、转发规则等配置错误。 2. 服务不可达:有时候LVS无法将请求转发给后端服务器,这可能是由于网络问题、服务器故障或者防火墙配置错误等原因引起的。这时需要检查网络连接、服务器配置和防火墙规则,以确保服务能够正常访问。 3. 处理性能不佳:LVS在处理大量请求时可能会出现性能瓶颈,导致响应变慢或者服务不可用。这可能是由于负载均衡算法选择不当、服务器配置不合理或者LVS配置不合理等原因导致的。需要对负载均衡算法、服务器配置和LVS配置进行优化,以提高处理性能。 4. 会话状态问题:LVS是基于IP的转发,对于有状态的应用程序可能会出现会话状态不一致的问题。这可能导致用户在不同后端服务器上的会话失效或者数据不一致。需要使用会话粘性或者会话复制等机制来解决这个问题。 5. 监控和故障转移:在LVS的配置中,需要设置合适的监控和故障转移机制,以确保当后端服务器出现故障时,LVS能够自动将请求转发到其他可用的服务器上。如果监控配置不正确或者故障转移机制不完善,可能会导致服务中断或者请求无法正常处理。 总之,LVS验证过程中可能会出现配置错误、服务不可达、处理性能不佳、会话状态问题以及监控和故障转移等问题。需要认真排查和解决这些问题,以确保LVS能够正常工作并提供高可用性和性能的负载均衡服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值