来源:IC技能搬运工
上一次和大家一起学习了原理图设计与仿真的基础内容,其中原理图绘制还有少量的内容没有完成,今天会加以补充。另外,一般工艺会同时提供spectre和spice仿真模型,前面已经学习了采用spectre仿真电路的方法,今天再介绍一下采用HSPICE仿真电路的方法。
上一次的电路仿真是在原理图的基础上直接添加激励进行的,在实际中,电路设计完成之后可能会被多次调用,比如设计的反相器可能在很多其它电路中会被调用,如果每次使用反相器都需要重新画一遍原理图,未免太繁杂,Cadence工具提供了一个方法,可以让用户为电路原理图建立symbol并调用,让原理图调用更加简便。
原理图的symbol是什么?之前说过一个cell可以有不同的表达方式,对于不同的view, 原理图、版图、原理图symbol都是不同的表现方式,甚至有些会直接用电路网表来描述一个电路。
打开上次画好的原理图,从原理图中删除电压源、地和负载电容,仅仅留下MOS管和端口,因为建立symbol只想纯粹表示反相器电路,而不希望把仿真用到的激励和负载电容包含进去。
在原理图界面:Create->Cellview->From Cellview,打开新建symbol窗口,一路确认,直到弹出框关闭,这时候就完成了电路原理图的symbol建立。其中symbol的信息和形状都由系统根据原理图中的信息自动生成,为了辨识,最好根据原理图功能对默认的symbol稍加修改。
比如反相器的symbol一般习惯用三角形加一个空心圆圈表示,这样在其它电路中看到这个符号就知道是反相器。在刚刚生成的symbol基础上按照自己的需求改动,工具栏的使用基本和原理图编辑器一致,编辑完成后同原理图一样需要检查并保存,如果出错或者同原理图有不一致的地方软件会报错,按下快捷键g, 查看具体报错信息。
为电路建立symbol之后,调用电路就会容易很多,下面我们用新建的symbol重新仿真反相器电路。
新建电路原理图,比如:inv_sim, 表示该原理图是用来做反相器仿真的。按照之前添加器件的方法,按下快捷键i, 添加器件。不过这次选择的库为自己的设计库,小目同学这里库名是:ICSkillSharing, 选择Cell为反相器:inv, 选择View为刚刚建立的symbol, 放置在合适的地方,然后像之前一样添加激励源,如下图所示。
目前常用的集成电路仿真工具是Cadence公司的spectre仿真器或者Synopsys公司的HSPICE仿真器。两者各有优缺点,普遍地认为spectre可以更加细腻地反映电路特性,而HSPICE可以获得更快的仿真速度,对于普通应用,两者仿真体验基本无差别。
Linux系统中HSPICE仿真器没有图形化界面,所以对于习惯了spectre图形界面仿真的同学需要一段时间适应。
获取电路网表:HSPICE仿真中电路原理图是以网表的形式表示的,不再是图形输入界面,用户可以自己写电路网表,也可以在Cadence原理图的基础上获取电路的CDL网表,这里从上面建好的的仿真原理图中抽取电路CDL.
1************************************************************************
2 * auCdl Netlist:
3 *
4 * Library Name: ICSkillSharing
5 * Top Cell Name: inv_sim
6 * View Name: schematic
7 * Netlisted on: Feb 29 11:47:02 2020
8 ************************************************************************
9
10*.BIPOLAR
11*.RESI = 2000
12*.RESVAL
13*.CAPVAL
14*.DIOPERI
15*.DIOAREA
16*.EQUATION
17*.SCALE METER
18*.MEGA
19.PARAM
20
21*.GLOBAL gnd!
22
23*.PIN gnd!
24
25************************************************************************
26* Library Name: ICSkillSharing
27* Cell Name: inv
28* View Name: schematic
29************************************************************************
30
31.SUBCKT inv A AVDD AVSS Y
32*.PININFO A:I Y:O AVDD:B AVSS:B
33MM0 Y A AVDD AVDD p33 W=15u L=1u m=1
34MM1 Y A AVSS AVSS n33 W=5u L=1u m=1
35.ENDS
36
37************************************************************************
38* Library Name: ICSkillSharing
39* Cell Name: inv_sim
40* View Name: schematic
41************************************************************************
42
43.SUBCKT inv_sim
44*.PININFO
45XI0 A AVDD AVSS net14 / inv
46CC0 net14 AVSS 100.0f $[CP]
47.ENDS
左右滑动可以查看更多内容哦!
1************************************************************************
2* auCdl Netlist:
3*
4* Library Name: ICSkillSharing
5* Top Cell Name: inv_sim
6* View Name: schematic
7* Netlisted on: Feb 25 22:27:25 2020
8************************************************************************
9
10*.BIPOLAR
11*.RESI = 2000
12*.RESVAL
13*.CAPVAL
14*.DIOPERI
15*.DIOAREA
16*.EQUATION
17*.SCALE METER
18*.MEGA
19.PARAM
20
21*.GLOBAL gnd!
22
23*.PIN gnd!
24
25************************************************************************
26* Library Name: ICSkillSharing
27* Cell Name: inv
28* View Name: schematic
29************************************************************************
30
31.SUBCKT inv A AVDD AVSS Y
32*.PININFO A:I Y:O AVDD:B AVSS:B
33MM0 Y A AVDD AVDD p33 W=15u L=1u m=1
34MM1 Y A AVSS AVSS n33 W=5u L=1u m=1
35.ENDS
36
37************************************************************************
38* Library Name: ICSkillSharing
39* Cell Name: inv_sim
40* View Name: schematic
41************************************************************************
42
43*.SUBCKT inv_sim $comment out
44*.PININFO
45XI0 A AVDD AVSS net14 / inv
46CC0 net14 AVSS 100.0f $[CP]
47*.ENDS $comment out
48
49*add voltage source
50VAGND AGND 0 dc=0 $add source for AGND
51VAVDD AVDD AGND dc=avdd $add source for AVDD
52VAVSS AVSS AGND dc=0 $add source for AVSS
53VIN A AGND dc=vin $add source for input A
54
55***************** options & parameters *****************
56
57.LIB "/home/IC/Desktop/workspace/pdks/smic18mmrf/models/hspice/ms018_v1p9.lib" tt $spice model
58
59.OPTION CAPTAB $for capacitance
60.OPTION PROBE $save selected nets info
61.OPTION POST $ save simulation results for viewing by an interactive waveform viewer
62.OPTION RUNLVL=6 $simulation accuracy
63
64.PARAM avdd=3 vin=1.5 $design variable
65.TEMP '25' $simulation temperature
66
67************************ analyse ************************
68
69.OP $operating point
70.DC vin 0 3 0.1 $dc sweep
71*.TRAN 1n 1m $transient simulation
72
73********************** measurement **********************
74
75*.PROBE TRAN V(*) $save transient voltage for all nets
76.PROBE DC V(*) $save dc voltage for all nets
77
78.END $end of simulation
在网表修改过程中有一项需要注意,使用Cadence软件抽取的CDL网表中,把仿真原理图当成一个子电路来处理,如生成的CDL网表中第37-47行内容:
37************************************************************************
38* Library Name: ICSkillSharing
39* Cell Name: inv_sim
40* View Name: schematic
41************************************************************************
42
43.SUBCKT inv_sim
44*.PININFO
45XI0 A AVDD AVSS net14 / inv
46CC0 net14 AVSS 100.0f $[CP]
47.ENDS
37************************************************************************
38* Library Name: ICSkillSharing
39* Cell Name: inv_sim
40* View Name: schematic
41************************************************************************
42
43*.SUBCKT inv_sim $comment out
44*.PININFO
45XI0 A AVDD AVSS net14 / inv
46CC0 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: ICSkillSharing
5* Top Cell Name: inv
6* View Name: schematic
7* Netlisted on: Feb 29 12:42:59 2020
8************************************************************************
9
10*.BIPOLAR
11*.RESI = 2000
12*.RESVAL
13*.CAPVAL
14*.DIOPERI
15*.DIOAREA
16*.EQUATION
17*.SCALE METER
18*.MEGA
19.PARAM avdd=3
20
21
22
23************************************************************************
24* Library Name: ICSkillSharing
25* Cell Name: inv
26* View Name: schematic
27************************************************************************
28
29.SUBCKT inv A AVDD AVSS Y
30*.PININFO A:I Y:O AVDD:B AVSS:B
31MM0 Y A AVDD AVDD p33 W=15u L=1u m=1
32MM1 Y A AVSS AVSS n33 W=5u L=1u m=1
33.ENDS
inv_sim.sp文件内包含所有激励源、反相器实例调用、仿真器设置、仿真模型文件等,如下面内容所示:
1********************** include **************************
2
3.INCLUDE "./inv.cdl" $inv cdl file dir
4
5************************ lib ****************************
6
7.LIB "/home/IC/Desktop/workspace/pdks/smic18mmrf/models/hspice/ms018_v1p9.lib" tt $device model
8
9***************** options & parameters *****************
10
11.OPTION CAPTAB $for capacitance
12.OPTION PROBE $save selected nets info
13.OPTION POST $ save simulation results for viewing by an interactive waveform viewer
14.OPTION RUNLVL=6 $simulation accuracy
15
16.PARAM avdd=3 vin=1.5 $design variable
17.TEMP '25' $simulation temperature
18
19************************ instance ***********************
20
21XI0 A AVDD AVSS net14 / inv $inv instance
22CC0 net14 AVSS 100.0f $load capacitor
23
24************************ stimu **************************
25
26VAGND AGND 0 dc=0 $add source for AGND
27VAVDD AVDD AGND dc=avdd $add source for AVDD
28VAVSS AVSS AGND dc=0 $add source for AVSS
29VIN A AGND dc=vin $add source for input A
30
31************************ analyse ************************
32
33.OP $operating point
34.DC vin 0 3 0.1 $dc sweep, 0.1 is step
35*.TRAN 1n 1m $transient simulation
36
37********************** measurement **********************
38
39.PROBE TRAN V(*) $save transient voltage for all nets
40.PROBE DC V(*) $save dc voltage for all nets
41
42.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,索引到仿真运行的文件夹内,选择仿真结果文件,就可以像其他波形查看软件一样操作波形,下图是小目同学的仿真波形和仿真结果文件。
欢迎加星标
由于微信公众号近期改变了推送规则,如果您想经常看到我们的文章,建议将EETOP设为星标。方法如下:进入公众号主页后点击右上角「三个小点」,点击「设为星标」,我们公众号名称旁边就会出现一个黄色的五角星。如下图:
微信加群