用Verilog-a描述的底层单元搭建的电路怎样做LVS

2019-04-13 10:55发布


首先介绍verilog-a,这是一种类似verilog风格的模拟描述语言,可以用来实现对单元的行为级描述。 他的好处在于,可以直接用行为级语言描述一个模块(或者cell),并带入到spectre中进行仿真。
如非门的verilog-a代码(cadenc的ahdlLib library中的nand_gate cellview)如下:
具体的语法细节就不多说了。写完一个verilog-a后,可以由此生成一个symbol,并由此symbol辅助搭建电路。
下面是关键问题,怎样做这个电路的LVS(Layout Vs Schematic)。 我们需要有对应的版图,layout部分已有,麻烦的地方在schematic。 众所周知,calibre工具的LVS只能对已有的单元做LVS,对于verilog-a写成的单元,由于没有对应网表信息,无法形成网表(netlist),也就没法做LVS。
这里提供一个只检查单元之间连线的方法。注意:这里不对单元内部做LVS,事实上这也不可能做到,因为单元是用verilog-a写的。
如下图,为用verilog-a单元写成的symbol搭成的电路。


图中的三个门均是以verilog-a为基础生成的symbol。下面来做它的LVS,我们只检查这些PIN之间的连线有没有问题。
对于每一个门的cell,本身是没有schematic的cellview的,我们新建一个,在其中只放入5个PIN,如下图,

对所有的门都新建一个这样的schematic的cellview。 注意这里的PIN 的名字必须和版图,symbol中的PIN名都一致,这样才能对应起来。
然后就可以做LVS了。 不过,再强调一下,这里的LVS只会检查PIN之间的连线是否正确。