在ASIC物理实现中,一旦生成布局,它必须遵循成功制造的所有设计规则,并且必须与所需设计的原理图相匹配。为了在物理验证中确保这一点,进行设计规则检查(DRC)来检查布局是否遵循无故障制造的规则。这种DRC检查提供了良好的制造成品率,并防止在制造过程中出现故障,但它不能确保布局的正确性。需要确保设计的物理实现与设计的原理图相同。为此,将layout netlist的电路与原理图netlist进行比较,这称为layout vs schematic(LVS)。
在这里,IC验证器和IC编译器II(SYNOPSYS)工具用于LVS运行和PnR。
如上图所示,LVS是由GDS表示的布局与使用verilog netlist工具生成的原理图之间的比较。
ICV工具中LVS的输入文件如下:
GDS(layout stream
file):LVS工具通过提取生成布局网表,用于LVS比较。
原理图网表:用作LVS比较的源网表。
规则组文件:规则组文件由执行LVS所需的指令和指导工具的文件组成。此规则组文件还包含一个图层定义,该定义对于提取非常有用。
等效文件:用于ICV LVS比较的工具,由单元对组成,单元对由布局网表和原理图网表中的一个单元对组成。
LVS flow
LVS flow主要包括布局网表和原理图网表的提取和比较。LVS flow如图2所示。ICV具有nettran实用程序,用于将输入的verilog网表转换为ICV原理图网表,这对于比较更为有用。在布局提取步骤中,从GDS提取所有设备及其之间的连接。提取后,该工具还会生成一个等效点文件,用于比较布局和原理图。此等效文件可用于比较。在比较步骤中,将提取的网表与原理图网表进行比较,工具给出干净的结果,如果两个网表完全匹配,则工具生成错误报告。在比较步骤中,工具按照以下方式进行比较:工具比较原理图和布局中的设备数量、原理图和布局中的网络数量、原理图和布局中的设备类型,然后生成结果报告。错误报告包含错误设备、错误网络的列表,这对于调试LVS问题非常有用。
LVS常见问题及其调试
Open
Shorts
Missing components
Missing global net connect
open:在设计中,具有相同布局文字的网络形状不相交或不接触。设计中的开口负责设计中的浮动连接。这种浮动连接将导致芯片出现重大缺陷。因此,在设计中寻找开口是非常重要的。在运行LVS之前运行PnR工具的openfinding实用程序,对早期设计阶段很有帮助。
下面的示例显示了使用LVS工具检测设计中的open。工具生成的报告描述了设计中的open,如工具报告的以下片段所示。
错误摘要显示检测到的错误及其计数的摘要。对于open,提取器将打开的网络提取为两个不同的网络,因此布局中的网络数大于原理图中的网络数,如报告中所示。该报告显示了布局中的网络数量以及相应的示意图。如报告中所述,示意图BUF_net_152645在布局上由两个网络N_11965140和N_11989743 表示(由于open)。
该类问题可以通过连接打开的单个网络的布局形状来解决。
short:如果布局中的图层上有不同的布局文字,这些图层重叠或相交,将导致设计中的short。设计中存在短路会导致芯片失效。通过运行PnR shorts finding实用程序或通过运行LVS找到设计中存在的短路是很重要的。下面的示例显示了运行LVS后工具如何报告短路。
当设计中出现短路时,提取器会将短路的网络作为一个单独的网络进行提取,因此在原理图中只有一个布局对应的网络用于两个网络,如报告中所述。N738和BUF\ U net\ U 189972是短接网络。
短路可以通过正确地重新布线来解决。
Internal shorts with Macros:在设计中,由于设计的复杂性或不正确的设置,PnR工具可能会以创建Macro内部几何图形短路的方式路由网络。如果Macro的LEF中缺少路由阻塞,也可能发生这种情况。有时在执行手动自定义路由时,会在自定义路由和Macro的内部路由之间创建短路。在PnR工具环境中不容易报告这种短路。当我们将硬Macro的GDS与顶层块合并时,短代码在GDS中是可见的。可以使用ICV的VUE实用程序调试这个short。下面是一个代码片段,它显示了如何在硬宏上错误地路由信号网络。由于存在硬Macro的内部几何图形,该层在Macro上被阻塞。此网络将导致与Macro的内部几何图形短路。
下面是合并的GDS的片段,它清楚地显示了短代码。
生成的报告与short报告类似。此示例的代码段如下所示。
PG short with signal net:当设计中存在PG short时,很难识别它。PG short可以是电源网和接地网之间的短路,也可以是电源/接地网和信号网之间的短路。当一个PG网与相当长的信号网发生短路时,由于PG网连接的设备太多,很难确定一个短的位置。为了调试这个问题,在ICV中有一种方法,就是在信号网上加一个与PG网短路的文本。
下面是在信号网络上添加文本的示例。这个网名可以很容易地从LVS错误报告中找到。取短路信号网存在的任何位置(取任何层),并在其上放置任何标记名的文本,位置由以下命令中的原点值定义。
create_shape -shape_type text -layer <layer_name> -origin <{llx lly}> -height 1 -orientation R0 -justification LB -text "<any_text_name>"
下面是一个如何使用文本加法调试PG short与任何信号网的示例。
由于不正确的金属填充和手动布线更改,VSS网络和其中一个信号网络之间产生短路,如下图所示。
由于信号网本身很长,很难找出短的位置。在信号网络上,使用上面显示的命令创建一个文本层,然后重新运行LVS。现在,在LVS short finder中可以很容易地看到VSS和文本之间的短信息,上面的快照显示了使用ICV的VUE数据库突出显示的错误。
缺少组件:
如果在合并数据库时缺少某些spice文件或GDS文件,则会显示缺少组件错误。例如:如果您在设计中使用了单元格ABC,但没有在GDS列表或spice列表中定义用于LVS流,则可能会导致缺少组件错误。列表需要修改,或者ABC单元需要从LVS比较中排除(这取决于单元的功能,在比较中只能排除物理单元)。
缺少全局网络连接:
如果电池的PG管脚没有使用connect_PG_net命令连接到任何电源/接地网,则在大多数设计中会导致设备不匹配和LVS错误。例如,即使标准单元PG pin名称是VDD,工具也不会将其连接到设计的VDD网络。我们需要使用下面的命令来连接这样的引脚。
connect_pg_net -net VDD [get_pins -hierarchical */VDD]
总结
LVS是验证网表物理实现正确性的有用技术。打开、短路、缺少组件和缺少全局网络连接是可能影响设计功能的潜在问题,在早期实现阶段可能无法检测到,因此LVS在设计中报告这些问题非常有用。一旦物理验证工具报告了这些问题,就可以通过本文讨论的各种技术来解决。
网友评论