ADS调用spectre网表仿真异常—薛定谔的NetlistInclude

描述

ADS是支持调用spice/spectre等网表文件进行仿真的,可以用NetlistInclude控件来进行调用。其中,spectre的网表可以直接读取,并不需要执行Import-->Design-->Netlist流程来进行导入。

01

简单示例

参考ADS的help文档,调用netlist非常简单。

比如有一个PEX生成的spectre网表:pex_spectre.netlist,里面有一只MOS管,有三个端口D/G/S。只需要添加一个NetlistInclude控件,然后浏览并添加该网表,对应放三个端口D/G/S,再生成一个Symbol就可以当一个元件在ADS中来调用了。

Layout

Layout

02

薛定谔的NetlistInclude

然而作者在仿真过程中发现事情不没有那么简单,由于工艺PDK限制,该PDK仅支持原理图仿真和Layout绘制,但因为GDS Layer Number和Layer Purpose存在重复,跟ADS不兼容,导致无法进行EM仿真,EM仿真用的Substrate文件也没有也没有集成进PDK中,因此无法像GaAs那样全ADS搞定所有设计。

但是该工艺又单独提供了一个用于ADS进行EM仿真的Library(包含了Substrate文件,本文用EM_library代称),它大致思路就是抛弃了大量EM无关的GDS Layer,例如DRC/LVS等验证用的辅助识别图层,而仅保留了EM仿真相关的几个工艺图层,例如金属和过孔图层,这样就不存在图层重复的问题了,要想进行EM仿真,还需要从Cadence中导出GDS,然后导入进ADS工程的EM_library中,再添加端口进行EM仿真。

最后就导致了我为了进行一个完整的芯片设计,需要在多个软件环境、多个Library中来回折腾:

在Cadence中建立一个Library(本文用LVS_library代称),attach到Cadence专用的PDK,进行Schematic和Layout、DRC、LVS;

在ADS中建立一个EM仿真用的Library(本文用EM_library代称),不需要attach到任何工艺包,这是厂家定义好的;

在ADS中建立一个联合仿真用的Library(本文用Cosim_library代称),attach到ADS专用的PDK,将PDK中的晶体管等元件与EM_library得到的emModel联合起来进行完整的仿真。

以上全部流程都没有问题了,虽然繁琐到令人反感、恶心、头痛,但终归是都能跑通,得到正常的仿真结果。

但当我需要更进一步,把晶体管等原理图模型换成PEX提取的spectre网表进行后仿时幽灵就出现了,我把它称为薛定谔的NetlistInclude:

一开始,我参考前文示例中描述的那样用NetlistInclude,生成symbol,再调用cell,OK没问题;这个symbol我是放在Cosim_library中的;

后来,不知道什么时候由于什么原因,在调用这个Cosim_library中的cell仿真死活就不对了,表现出来的现象就等于这个cell是完全的、理想的开路状态,就是压根没接入电路中;

这时候,再把这个cell复制到一个新建的Library中,或者file-->import-->design-->netlist导入时选择自动新建Library(本文用PEX_library代称),最后再调用这个PEX_library中的cell,联合仿真结果就正常了;

然后,把前面这个正常的PEX_library中的cell复制到Cosim_library中,重新调用,结果还是完全的、理想的开路状态,就是压根没接入电路中;

最后,用emCosim模式时,对应器件partitioning选择circuit/schematic调用ADS的PDK元件模型是正常的,但是调用PEX_library中的cell结果还是完全的、理想的开路状态,就是压根没接入电路中;

总之,这个NetlistInlude去调用PEX生成的spectre netlist仿真完全就是一个让人琢磨不透的幽灵状态。




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分