关注公众号

关注公众号

手机扫码查看

手机查看

喜欢作者

打赏方式

微信支付微信支付
支付宝支付支付宝支付
×

模拟后仿真的几种做法以及优缺点

2020.10.26

  后仿真要是从方法上分类,我觉得大概有三种,一种是gui,一种是网表,一种是反标注。

  gui的就是用calibre产生calibre view,然后仿真的时候自动从calibre view中生成网表。这种我没用过,看别人用过。好处是方便,与原来的流程整合度很高。不过要是想做些debug的事情就很麻烦。

  网表就是直接产生相应的网表,然后在前仿真的网表里替换。这种方法比较土,工作量也大,根据不同的提取工具和仿真工具,需要修改一些东西。我最不可理解的就是做提取时用的是cdl,做仿真时用的是spectre view,然后如果pdk做的不好,这两种view总会多多少少有些差异,导致产生的网表需要修改。这种差异是换什么提取工具都不能消除的,只能怪pdk。但是这种流程EDA公司一直没有修改过。一般的差异包括了:端口顺序,节点名字(仿真器有时会修改节点名字,特别是总线,可以看我之前blog,cdl也可能会用不同格式的名字)。随着EDA工具的版本提高,PDK库的升级,以及提取文件的选项设置,好像目前需要修改的越来越少了(不知道为什么,05年的时候需要修改的地方非常多,即使t这样的公司给的pdk,前后仿真连模型名都完全不一致,需要自己找到对应的然后修改)。一般只用修改接口处的内容就可以了,内部只要保持自恰就行。需要注意的是需要保存节点的名字和ic设置的名字。有时候这个地方最麻烦,因为提取后的名字会和原来可能有差异。再就是有时bipolar会在前仿中用m=...,但是后仿用area=...,后一种与器件模型不自恰,会导致仿真失败(这是我又一处不理解 EDA公司的地方)。这种方法的好处是比较灵活。有时候为了debug,只要在网表中手工修改一下,看看效果,就可以知道找的地方对不对。有的人习惯前仿用cdl的网表,这样后仿就能保持基本的一致性。不过说实话,我觉得cdl格式并不是为仿真用的,很多pdk里提取出的cdl网表也就是能用而已。

  还有一种是反标注(back annotation)。我挺看好这种方法的,但是目前工具对这种方法的支持也有问题。提取的时候,如果选反标注,就会生成诸如dspf之类的文件,按照我的理解,就是把寄生器件和节点对应关系之类的信息写在这个文件里。(实际中可能会有dpf,包括器件的实际信息,dspf,寄生参数,spef,另一种格式的寄生信息)。然后仿真器再根据这个dspf里的信息,结合前仿网表,自己自动产生内部的仿真网表,但是对外保持接口不变。由于对外接口不变,设计者的工作量就小很多,不用找名字对应关系了。可惜,这种方法目前的问题是:

  1.只有有限的仿真器支持,比如hsim,spectre不支持。

  2.不同提取工具产生的可能语法有差异,导致对一些信息的解释不同,特别是耦合电容,所以换仿真器或者提取工具时要小心。

  3.有时由于前仿网表和lvs网表的差异(还是pdk,cdl的问题,这无解),存在反标率,就是可能有的寄生参数找不到位置。这种问题还很难debug,因为有时候给的信息不全,想修改都不知道问题在哪里。不过我做下来,大部分还是由于名字大小写,总线,spectre自动改名之类的问题,或者由于做了一些简化,导致一些节点消失或者多出来。

  我不知道为什么仿真器目前不能很好的支持这种反标注,按理说就是一个重新解释网表的过程,应该比写仿真器容易多了。

  总结一下,目前后仿真许多问题的根源大部分来自于仿真用的网表和lvs用的网表来源不一致。如果来源一致,让EDA工具自己做那些改名字的事情就好多了(我的这些经验都来自于11年之前的EDA版本和t的pdk版本)。

  还有另一种分类,就是按照提取的是r,是c,是cc等来区分。一般来说流程上差异不大,但是对于有r和没有r,名字一般会变化较大,因为有r的会增加不少新节点。如果多看看网表,还是能找到命名规律的。我比较看好新版工具的一个特色,就是让r和c的提取可以混合进行。以前是要么是提r,要么是提c,要么提 r+cc,但必须是全局设置。现在可以在局部设置不同的提取方式,比如全局是提c,但局部提r,考虑到仿真时间,这种方法还是挺不错的。

  再一种分类就是按照是打散了提取还是层次化的提取。前者据说精度最高,但是一般前仿都是层次化的,所以名字一定会变。后者偶尔用用也不错,但是我同事碰到一次奇怪的问题,就是网表出错了,查进去说有一个cell的端口名字不对,不知道为什么,这种事情难得碰到一回。

  想到一个小事情,现在在新工艺下,经常要加dummy metal。如果提取时忽略dummy metal,往往比不忽略得到的寄生小,但是如果不忽略,网表将巨大无比。所以提取工具还给了个简化的选项,这也是在时间和精度上做巨大的trade off。

  另一件事情就是无论提取工具多么好,最后起主要作用的还是规则文件。曾经有一次有个工艺给的规则文件里忘了提as,ad这些,至于sa,sb那就更不用提了,这样的东西即使提取了寄生,准不准是一方面,信不信是令一方面。

  再就是提取的寄生电容到底准确度有多少?有人说提取的是为数字电路考虑的,所以会偏大20,30%。又有人说差了2,3倍。由于也没有可靠数据,都是道听途说,所以有foundry做这方面的人能说说实际情况最好。


推荐
关闭