干货分享,本文介绍一个LVS检查中的一个有用的技巧
准备之后的文章按照系列来写,包括PV, STA, 综合,PR 等等,系统性的分享一些干货,敬请期待。本文介绍一个PV的技巧。
PV,也就是物理验证(physical verification),主要包括DRC, LVS, ERC, ANT,DFM。是基于晶圆厂提供的design rule来进行的针对于版图GDS的check。
我们要流片的话,
一定要经过晶圆厂提供的一整套工艺规则检查。这一整套design rule,一般称为Rule deck。(有时也会称为runset,鉴于Mentor在PV领域的地位,Rule deck更为深入人心)
LVS是检查layout(gds)与 cdl(由netlist转化而来)的一致性。
但是在layout中,有一些physical only的cell,里面是没有device的(res,cap,mos)。
那么这就会导致一个问题。在cdl中,存在这些cell。但是在layout中,有没有对应的device。
简单说来,即使逻辑上(cdl)存在,但是实际上(gds)不存在。这样LVS肯定过不了。
那么这个问题解决起来也不难,把cdl中的没有device的cell删掉就可以了。
这类cell有一定的规律,比如 stdcell fller cell, IO Filler,corner cell等等。
我们也不需要到netlist手动删掉,完全可以在写出netlist的时候指定那些cell不写出来。
比如:在ICC2中可以这样指定
write_verilog - compress gzip \
-exclude {scalar_ wire declarations leaf module_declarations empty_modules supply_statements unconnected_ports}
-force_no_reference { */F_FILL* */FILLTIE_* }
-hierarchy_all . /outputs/${DESIGN NAME} . BE . hv
这样,写出的netlist就不存在force_no_reference中指定的cell类型了。
下面是本文的重点,
对于我们熟悉的单元库,我们可以知道哪些cell是没有device的cell,但是如果是一个新的库呢?根据经验来说,filler cell是没有device的,主要是将well区域进行连接,而decap cell则是有divice的。但是有时候也不一定,例如,我曾经见到的一个40nm的库中,只有FILL1 FILL2是没有device的,而更大filler cell则是有device的,当然,decapcell也是有device的。所以说,经验是有用的,但是也不能完全依赖经验。
有没有通用的方法来得到这个没有device的cell list呢。
我的方法就是,在写出netlist的时候,暂时不需要填写force_no_reference的cell list。然后在lvs repor中寻找我们想要的cell list。例如,下面选的一个lvs report
我们找到对应的部分。
Layout部分为0, 而Source部分不为0行,对应的就是Souce中存在,而Layout中不存在的lib cell。我们就可以把这些cell添加到force_no_refence中。
我们可以看到,除了filler之外,还包括了ENCCAP,FILLTIE(是一种tap cell),对于一个我们不熟悉的库,我们也可以用这种方法抓到没有device的cell list。
需要注意的是,如果这些cell明显不是我们库里的cell,而是更底层的device,例如mos管,那么我们就需要看是什么别的原因了。或者说,如果这里面出现了正常的function cell,那么也不要直接把这种cell加到force_no_reference里去。