模拟集成电路设计流程之:HSPICE仿真电路的方法
cadence原理图仿真 0 分享至
用微信扫码二维码
分享至好友和朋友圈
来源:IC技能搬运工
上一次和大家一起学习了原理图设计与仿真的基础内容,其中原理图绘制还有少量的内容没有完成,今天会加以补充。另外,一般工艺会同时提供spectre和spice仿真模型,前面已经学习了采用spectre仿真电路的方法,今天再介绍一下采用HSPICE仿真电路的方法。
为原理图建立symbol
上一次的电路仿真是在原理图的基础上直接添加激励进行的,在实际中,电路设计完成之后可能会被多次调用,比如设计的反相器可能在很多其它电路中会被调用,如果每次使用反相器都需要重新画一遍原理图,未免太繁杂,Cadence工具提供了一个方法,可以让用户为电路原理图建立symbol并调用,让原理图调用更加简便。
原理图的symbol是什么?之前说过一个cell可以有不同的表达方式,对于不同的view,原理图、版图、原理图symbol都是不同的表现方式,甚至有些会直接用电路网表来描述一个电路。
打开上次画好的原理图,从原理图中删除电压源、地和负载电容,仅仅留下MOS管和端口,因为建立symbol只想纯粹表示反相器电路,而不希望把仿真用到的激励和负载电容包含进去。
在原理图界面:Create->Cellview->From Cellview,打开新建symbol窗口,一路确认,直到弹出框关闭,这时候就完成了电路原理图的symbol建立。其中symbol的信息和形状都由系统根据原理图中的信息自动生成,为了辨识,最好根据原理图功能对默认的symbol稍加修改。
![](https://www.0419af.com/wp-content/uploads/2022/11/1669789698-46a309f1022ff0c.jpg)
从原理图新建symbol
编辑引脚信息
软件生成symbol
比如反相器的symbol一般习惯用三角形加一个空心圆圈表示,这样在其它电路中看到这个符号就知道是反相器。在刚刚生成的symbol基础上按照自己的需求改动,工具栏的使用基本和原理图编辑器一致,编辑完成后同原理图一样需要检查并保存,如果出错或者同原理图有不一致的地方软件会报错,按下快捷键g, 查看具体报错信息。
在建立symbol的过程中可以发现,系统生成的symbol中的引脚与原理图中的端口一一对应,这一点在原理图绘制的时候有提到过,原理图中的端口可以实现不同层次之间电路的连接。另外,symbol中的红色框selection box展示的是在选择symbol的时候所选中的区域,绿色线条显示symbol的形状。
由于编辑过程中可能会移动图形,所以建议symbol修改之后,使用工具栏:Edit->Origin功能选择symbol的原点,在器件调用的时候鼠标所在的点就是symbol的原点,如果原点选择不合适在器件调用时会不方便,大家可以随意选择几处原点观察一下调用效果。
在仿真电路中调用symbol
为电路建立symbol之后,调用电路就会容易很多,下面我们用新建的symbol重新仿真反相器电路。
新建电路原理图,比如:inv_sim, 表示该原理图是用来做反相器仿真的。按照之前添加器件的方法,按下快捷键i, 添加器件。不过这次选择的库为自己的设计库,小目同学这里库名是:ICSkillSharing, 选择Cell为反相器:inv, 选择View为刚刚建立的symbol, 放置在合适的地方,然后像之前一样添加激励源,如下图所示。
剩下的仿真设置与之前完全一致。另外,在原理图界面,选择反相器symbol, 鼠标右键选择:Descend Read/Edit或者选中symbol, 使用快捷键e, 可以进入symbol所对应的原理图。
在电路设计时,可以使用symbol划分电路功能,有助于原理图的阅读和整理,在大型仿真中或者版图后仿过程中还可以根据需要设置不同的symbol对应电路版图或者原理图,提高仿真效率。
使用HSPICE仿真电路
目前常用的集成电路仿真工具是Cadence公司的spectre仿真器或者Synopsys公司的HSPICE仿真器。两者各有优缺点,普遍地认为spectre可以更加细腻地反映电路特性,而HSPICE可以获得更快的仿真速度,对于普通应用,两者仿真体验基本无差别。
Linux系统中HSPICE仿真器没有图形化界面,所以对于习惯了spectre图形界面仿真的同学需要一段时间适应。
获取电路网表:HSPICE仿真中电路原理图是以网表的形式表示的,不再是图形输入界面,用户可以自己写电路网表,也可以在Cadence原理图的基础上获取电路的CDL网表,这里从上面建好的的仿真原理图中抽取电路CDL.
在Cadence CIW界面,选择:File->Export->CDL,然后在弹出的对话框内选择本文上面使用Cadence仿真时建立的仿真原理图,选择输出文件名和输出路径,确定之后等待操作过程结束,抽取网表结束后会有提示,现在可以打开网表文件,查看输出的内容。
1************************************************************************2 * auCdl Netlist:3 *4 * Library Name: ICSkillSharing5 * Top Cell Name: inv_sim6 * View Name: schematic7 * Netlisted on: Feb 29 11:47:02 20208 ************************************************************************910*.BIPOLAR11*.RESI = 200012*.RESVAL13*.CAPVAL14*.DIOPERI15*.DIOAREA16*.EQUATION17*.SCALE METER18*.MEGA19.PARAM2021*.GLOBAL gnd!2223*.PIN gnd!2425************************************************************************26* Library Name: ICSkillSharing27* Cell Name: inv28* View Name: schematic29************************************************************************3031.SUBCKT inv A AVDD AVSS Y32*.PININFO A:I Y:O AVDD:B AVSS:B33MM0 Y A AVDD AVDD p33 W=15u L=1u m=134MM1 Y A AVSS AVSS n33 W=5u L=1u m=135.ENDS3637************************************************************************38* Library Name: ICSkillSharing39* Cell Name: inv_sim40* View Name: schematic41************************************************************************4243.SUBCKT inv_sim44*.PININFO45XI0 A AVDD AVSS net14 / inv46CC0 net14 AVSS 100.0f $[CP]47.ENDS
左右滑动可以查看更多内容哦!
修改电路网表:从网表中可以看到,其实网表只是原理图的另一种表现形式,细心的同学会发现,生成的网表中并没有激励电压源相关的内容,这是因为使用的电压源的CDF文件中并没有定义抽取网表时的输出信息,所以自然不会有输出,不过我们可以自己动手把激励加进去,同时还需要添加仿真模型、一些HSPICE的仿真设置内容等,如下面实例所示,更详细的语法可以参考HSPICE手册。
1************************************************************************2* auCdl Netlist:3*4* Library Name: ICSkillSharing5* Top Cell Name: inv_sim6* View Name: schematic7* Netlisted on: Feb 25 22:27:25 20208************************************************************************910*.BIPOLAR11*.RESI = 200012*.RESVAL13*.CAPVAL14*.DIOPERI15*.DIOAREA16*.EQUATION17*.SCALE METER18*.MEGA19.PARAM2021*.GLOBAL gnd!2223*.PIN gnd!2425************************************************************************26* Library Name: ICSkillSharing27* Cell Name: inv28* View Name: schematic29************************************************************************3031.SUBCKT inv A AVDD AVSS Y32*.PININFO A:I Y:O AVDD:B AVSS:B33MM0 Y A AVDD AVDD p33 W=15u L=1u m=134MM1 Y A AVSS AVSS n33 W=5u L=1u m=135.ENDS3637************************************************************************38* Library Name: ICSkillSharing39* Cell Name: inv_sim40* View Name: schematic41************************************************************************4243*.SUBCKT inv_sim $comment out44*.PININFO45XI0 A AVDD AVSS net14 / inv46CC0 net14 AVSS 100.0f $[CP]47*.ENDS $comment out4849*add voltage source50VAGND AGND 0 dc=0 $add source for AGND51VAVDD AVDD AGND dc=avdd $add source for AVDD52VAVSS AVSS AGND dc=0 $add source for AVSS53VIN A AGND dc=vin $add source for input A5455***************** options & parameters *****************5657.LIB “/home/IC/Desktop/workspace/pdks/smic18mmrf/models/hspice/ms018_v1p9.lib” tt $spice model5859.OPTION CAPTAB $for capacitance60.OPTION PROBE $save selected nets info61.OPTION POST $ save simulation results for viewing by an interactive waveform viewer62.OPTION RUNLVL=6 $simulation accuracy6364.PARAM avdd=3 vin=1.5 $design variable65.TEMP ’25’ $simulation temperature6667************************ analyse ************************6869.OP $operating point70.DC vin 0 3 0.1 $dc sweep71*.TRAN 1n 1m $transient simulation7273********************** measurement **********************7475*.PROBE TRAN V(*) $save transient voltage for all nets76.PROBE DC V(*) $save dc voltage for all nets7778.END $end of simulation
左右滑动可以查看更多内容哦!
在网表修改过程中有一项需要注意,使用Cadence软件抽取的CDL网表中,把仿真原理图当成一个子电路来处理,如生成的CDL网表中第37-47行内容:
37************************************************************************38* Library Name: ICSkillSharing39* Cell Name: inv_sim40* View Name: schematic41************************************************************************4243.SUBCKT inv_sim44*.PININFO45XI0 A AVDD AVSS net14 / inv46CC0 net14 AVSS 100.0f $[CP]47.ENDS
左右滑动可以查看更多内容哦!
但是,实际上这个原理图是仿真电路的顶层模块,所以应该把子电路定义部分注释掉,让仿真器看到顶层电路,修改成如下所示:
37************************************************************************38* Library Name: ICSkillSharing39* Cell Name: inv_sim40* View Name: schematic41************************************************************************4243*.SUBCKT inv_sim $comment out44*.PININFO45XI0 A AVDD AVSS net14 / inv46CC0 net14 AVSS 100.0f $[CP]47*.ENDS $comment out
左右滑动可以查看更多内容哦!
然而,实际中有人会发现子电路定义的部分是否注释对仿真运行没有影响,但是如果仔细查看仿真结果会看到这时候仿真的结果已经与期望不一致,这个问题留给大家做验证。
激励文件:为了更好地配置仿真设置和仿真激励文件,往往把电路网表和激励源保存在不同的文件中,使用include语句将电路网表调入激励文件。
小目同学将反相器电路抽成CDL网表保存为:inv.cdl,而仿真激励和仿真器设置写在inv_sim.sp文件中,inv_sim.sp文件就好比图形界面仿真中的建立的仿真原理图,在其中调用被仿真电路的实例,如下面内容所示:
1************************************************************************2* auCdl Netlist:3*4* Library Name: ICSkillSharing5* Top Cell Name: inv6* View Name: schematic7* Netlisted on: Feb 29 12:42:59 20208************************************************************************910*.BIPOLAR11*.RESI = 200012*.RESVAL13*.CAPVAL14*.DIOPERI15*.DIOAREA16*.EQUATION17*.SCALE METER18*.MEGA19.PARAM avdd=320212223************************************************************************24* Library Name: ICSkillSharing25* Cell Name: inv26* View Name: schematic27************************************************************************2829.SUBCKT inv A AVDD AVSS Y30*.PININFO A:I Y:O AVDD:B AVSS:B31MM0 Y A AVDD AVDD p33 W=15u L=1u m=132MM1 Y A AVSS AVSS n33 W=5u L=1u m=133.ENDS
左右滑动可以查看更多内容哦!
inv_sim.sp文件内包含所有激励源、反相器实例调用、仿真器设置、仿真模型文件等,如下面内容所示:
1********************** include **************************23.INCLUDE “./inv.cdl” $inv cdl file dir45************************ lib ****************************67.LIB “/home/IC/Desktop/workspace/pdks/smic18mmrf/models/hspice/ms018_v1p9.lib” tt $device model89***************** options & parameters *****************1011.OPTION CAPTAB $for capacitance12.OPTION PROBE $save selected nets info13.OPTION POST $ save simulation results for viewing by an interactive waveform viewer14.OPTION RUNLVL=6 $simulation accuracy1516.PARAM avdd=3 vin=1.5 $design variable17.TEMP ’25’ $simulation temperature1819************************ instance ***********************2021XI0 A AVDD AVSS net14 / inv $inv instance22CC0 net14 AVSS 100.0f $load capacitor2324************************ stimu **************************2526VAGND AGND 0 dc=0 $add source for AGND27VAVDD AVDD AGND dc=avdd $add source for AVDD28VAVSS AVSS AGND dc=0 $add source for AVSS29VIN A AGND dc=vin $add source for input A3031************************ analyse ************************3233.OP $operating point34.DC vin 0 3 0.1 $dc sweep, 0.1 is step35*.TRAN 1n 1m $transient simulation3637********************** measurement **********************3839.PROBE TRAN V(*) $save transient voltage for all nets40.PROBE DC V(*) $save dc voltage for all nets4142.END $end of simulation
左右滑动可以查看更多内容哦!
运行仿真:准备好以上文件,并将文件放在同一目录下,在该目录下打开终端,使用如下命令(直接在CDL网表中添加激励源等设置):
hspice inv_sim.netlist > inv_sim.outlog
左右滑动可以查看更多内容哦!
或者使用如下命令(CDL网表与激励源在不同文件):
hspice inv_sim.sp > inv_sim.outlog
左右滑动可以查看更多内容哦!
其中前面的命令是运行HSPICE并仿真电路,后面的命令是将仿真信息保存到inv_sim.outlog文件中,这样用户可以通过查看该文件了解仿真过程仿真器的输出信息,以及电路的详细工作状态等。如果运行过程中出错,该文件会记录报错信息,供用户检查。
查看仿真波形:HSPICE运行完仿真,使用Synopsys公司的Wave viewer查看波形文件,在终端中输入:wv,启动Wave viewer,然后在菜单栏选择:File->Import Waveform File,索引到仿真运行的文件夹内,选择仿真结果文件,就可以像其他波形查看软件一样操作波形,下图是小目同学的仿真波形和仿真结果文件。
WaveViewer查看仿真波形
仿真器输出仿真文件
上下滑动可以查看更多内容哦!
使用HSPICE实现电路仿真的内容小目同学无法详细介绍,如果有兴趣学习这方面的内容,可以参考软件使用手册,根据需要查找手册中的内容,或者在文章评论处提问,也可以私信小目同学哦!
由于微信公众号近期改变了推送规则,如果您想经常看到我们的文章,建议将EETOP设为星标。方法如下:进入公众号主页后点击右上角「三个小点」,点击「设为星标」,我们公众号名称旁边就会出现一个黄色的五角星。如下图:
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.
/阅读下一篇/ 返回网易首页 下载网易新闻客户端