本文始于2024年12月,主要讲解屏蔽cell或包含第三方IP的版图如何正确跑LVS。文中案例以virtuoso与calibre演示,其他工具亦可参考本文。文章中共列举出3种不同的方法,其共同核心思路是,忽略cell内部情况,保证边缘接口的正确性。但其应用的场景应有所区分,前2种较适合前期版图设计阶段,第3种更较适合于top层的lvs验证阶段。对该主题感兴趣者,请继续阅读正文。
1. 在Calibre中使用LVS BOX 功能
相关LVS BOX 语句添加的位置如下图:
运行Calibre nmLVS,在弹出的界面中按如下图设置;
1.1 当layout和schematic文件名称相同时;
这里有三种标准格式的语句,选择其中的一种添加到上图指定的地方即可;
LVS BOX A A
LVS BOX A
LVS BOX LAYOUT A
LVS BOX SOURCE A
1.2 当layout和schematic文件名称不相同时;
举例:A为对应layout_name;B为对应schematic_name
此时我们需要结合H-cell功能来实现BOX功能;
首先我们先创建对应的h-cell文件,其内容格式如下图:
然后按如下图添加对应的h-cell文件;
最后在include选项卡中添加相关语句,如下:
LVS BOX A B
请注意:在使用LVS BOX时,被屏蔽的cell需要包含全部的pin信息,并且对应的pin和上一层有正确的连接关系;(如下图所示)
2. 在Schematic中使用”Ignore Instances”功能
此方法较LVS BOX 方式相比,无需再写额外lvs rule即可实现屏蔽cell。
相关设置如下:
在Schematic界面中,菜单栏Edit—Ignore Instances,然后点击需要屏蔽的cell,此时会看到对应的cell会有红色的大”X”(如下图所示),表明此cell在接下来的lvs比对中将不做检查。
请注意:使用”Ignore Instances”功能做lvs比对时,在对应的layout中,此cell需要做删除处理(即layout版图中将不出现此cell),但需要保留该cell对外相连的pin。(如下图所示)
3. 使用IP Vendor提供cell的gds和netlist文件
命名声明:
- IP Vendor 提供的gds名称为:KXA.gds;提供的netlist名称为:KXA.cdl (或 KXA.spi)
- 待验证schematic名称为:KXTOP;对应导出的netlist名称为:KXTOP.cdl
步骤1:确认IP Vendor提供的KXA.gds和KXA.cdl是可以过LVS的;
步骤2:从待验证的原理图KXTOP中导出对应的网表KXTOP.cdl,打开KXTOP.cdl,在网表开头中include对应的IP Vendor提供的网表KXA.cdl;如下图所示;
注意:”./” 表示KXTOP.cdl和KXA.cdl文件在当同一目录下,如果文件不在同一目录下,请使用文件的绝对路径。
步骤3:在KXTOP.cdl网表中找到,“KXA”网表定义部分,然后删除它定义的内容,因为你在最开始已经include了该网表。
步骤4:在KXTOP.cdl网表中找到,“KXTOP”网表定义的部分,再从定义的内容中找到定义”KXA” Pin顺序的部分。把这些Pin顺序用IP Vendor提供的KXA.cdl网表中的Pin 顺序替换掉,并保证pin_name的正确性。
请留意:版图和原理图pin name中方括号“[]”和尖括号“<>”的匹配情况,如果两种符号不匹配会造成lvs无法通过。
最后我们得到了一个正确的网表如下:如果有多个IP,请重复上述步骤1-4即可。
4. 问题与讨论
4.1 在使用LVS BOX 时,如果想屏蔽多个cell,需要怎么处理呢?
Ans:依次添加对应的语句即可;
LVS BOX A B
LVS BOX C D
LVS BOX E F...
4.2 在第3种方法的“步骤4”中,有没有什么快速的办法既能保证导出的netlist中的pin和IP Vendor网表中pin顺序一致还能保证pin_name也能和top层一致呢?
Ans:请参考本站文章,点这里。
4.3 “LVS BOX”与”Ignore Instances”还有“使用IP Vendor 提供cell的gds和netlist文件”这3种屏蔽cell 的办法有什么不同吗?
Ans:当然有,如果你仔细看了本文的描述,相信你会注意到,”LVS BOX”只是不检查内部的线路,但外部pin的连接关系也是检查的;而”Ignore Instances”则是屏蔽的更彻底,不但不检查内部线路,而且对于外部pin的连接关系也不检查。(看到这里,读者可以仔细想一想,然后再用鼠标选择并翻白下面一段话。)
举例:如果你有A、B两个模块都需要屏蔽,那么使用”LVS BOX”功能时,会检查A、B两个模块之间的连接关系;但如果你使用了”Ignore Instances”功能时,那么lvs将不检查A、B之间的连接关系,即使有错误,lvs依然会显示笑脸。
至于“使用IP Vendor 提供cell的gds和netlist文件”这种方法,则是更加的严谨,所以这种方法也大多数是在顶层验证才使用。
所以这里笔者建议:当项目合作过程中,你又想快速验证lvs时,首选使用”Ignore Instances”功能,会更快捷方便(省去放置屏蔽cell内pin的动作);当你进一步想要验证屏蔽cell中pin的正确性时,你可以使用”LVS BOX”功能;而当你在做顶层验证时,请使用IP Vendor提供的gds和netlist进行lvs验证。
-END-
2024年收官之文,2025年精彩继续!!!