Hspice应用讲解.docx
《Hspice应用讲解.docx》由会员分享,可在线阅读,更多相关《Hspice应用讲解.docx(69页珍藏版)》请在冰豆网上搜索。
Hspice应用讲解
Hspice应用讲解
Hspice应用讲解
Hspice是一种通用电路分析程序,可用来进行集成电路和电子线路的分析模拟。
它可以用来分析电路的非线性直流特性,线性交流小信号特性,非线性瞬态特性,温度特性等。
其中,直流分析(.DC)不光可进行直流转移特性分析,还可进行直流工作点(.OP),直流小信号传输特性(.TF),直流小信号灵敏度(.SENS)分析;在进行交流分析(.AC)的同时还可进行噪声特性(.NOISE)和失真特性(.DISTO)分析;在进行瞬态分析(.TRAN)的同时还可进行傅立叶(.FOUR)分析;进行温度特性分析(.TEMP)以求得电路的温度特性。
在进行交流分析和瞬态分析前先进行直流分析,以决定其非线性组件的线性化小信号模型和其初始条件。
Hspice输入描述文件格式:
标题语句
组件语句
模型语句
和复杂性没有限制,并允许其包含其它子电路。
在电路中不能包括短路的电压源和电感,开路的电流源和电容,电路中的每个节点都不能悬空。
控制语句是控制程序的运行和规定分析及输出的内容。
如温度语句,工作点分析语句,交流分析语句,瞬态分析语句,打印语句,绘图语句和可选项语句等。
Hspice的每条语句都有若干个字段,字段之间由空格或符号隔开,多余的空格将被忽略,字段内不能随意加空格,即字段不能断开。
字段可以是字符段或数字段,字符段必须以字母开头,长度不超过8个字符,多余的字符将被忽略,且由用户定义的字符段中不能包括Hspice输入描述语言中已定义的字符段(即保留字);数字段可以为整数或浮点数,其后可直接跟下列比例因子:
K=1E3,MEG=1E6,G=1E9,T=1E12,
M=1E-3,U=1E-6,N=1E-9,P=1E-12,F=1E-15,MIL=25.4E-6
比例因子必须紧跟在数字后面,不是比例因子的字母及比例因子之后的字母均被忽略。
如一个语句一行写不完,可在下一行接着写,该行称为续行,续行的第一列必须是“+”号,续行数没有限制。
Hspice模拟仿真流程:
N
Y
N
Y
N
Y
Y
N
Hspice输出文件类型如下表:
输出文件类型
扩展名
列表输出,其内容包括仿真所用的名字和版本;Meta-Software单元信息;输入文件名;使用者名;注册资料;拷贝的输入网点文件;节点计算;操作点参数;每个source和sub-circuit的电压降,电流,功耗的详细情况;由.PLOT语句产生低分辩率图表;.PRINT语句结果;.OPTIONS语句结果。
.lis,或使用者指定
瞬态分析结果,它包含瞬态分析的资料结果,是在输入文件同时有.TRAN和.OPTIONPOST语句时产生的一个分析记录文件。
.tr#+
瞬态分析测量结果,它是.MEASURETRAN语句分析结果。
.mt#
DC分析结果,包含其使用的步长或在.DC语句中定义的扫描频率下的分析结果,包括噪声,失真或网络分析。
.sw#+
DC分析测量结果,它是.MEASUREDC语句分析结果。
.ms#
AC分析结果,包含一个频率功能的输出变量列表,符合其后的.AC语句的使用者规格。
.ac#+
AC分析测量结果,它是.MEASUREAC语句分析结果。
.ma#
硬拷贝图表资料(从meta.cfgPRTDEFAULT)
.gr#++
数字输出,包含从U单元A2D转换选项得到的转换数字数据。
.a2d
FFT分析图表数据,包含显示FFT分析波形的图表数据。
.ft#+++
分支电路交叉列表,它说明了在符合分支电路定义下调用的分支电路节点名。
.pa#
输出情况,包含运行时间结果:
每个CPU状态的开始和结束时间;废弃的选择项设置警告;预先检查注册资料,输入语法,模型和电路拓扑结构的情况;对困难电路使用的Hspice收敛方法。
.st#
操作点节点电压(初始状态),对于.SAVE语句。
.ic
注意:
#表任一扫描编号或硬拷贝文件编号。
+只有在使用.POST语句产生图表数据才会生成。
++需要.GRAPH语句或在meta.cfg文件中有一文件输出指针。
在PC版的
Hspice中此文件不能产生。
+++只有在使用.FFT语句才会生成。
Hspice基本组件描述:
在下列描述中,“[]”内的域为可选项,其余的域为必须的;name1,name2为可选的字符串,字符串最多可有八个字符(包括首字符),但其中不能出现分隔符(如空格,等号,逗号等)。
1.电阻:
RnameN1N2value[TC=TC1[,TC2]]
R为关键词,N1,N2为与电阻相连的两节点的节点号,电阻值可为正值或负值,其单位为欧姆。
TC1,TC2为电阻的温度系数,电阻值按下式随温度而变化:
R(T)=R(TD)·(1+TC1·(T-TD)+TC2·(T-TD)2)
当两可选参数TC1,TC2未给出时,程序将自动赋零。
T0为标称温度,可由.OPTIONS控制语句进行修改。
2.电容:
CnameN+N-[PLOY]value[C1[C2…]][IC=v]
C为关键词,N+,N-表电容的正负节点,可选项PLOY表示该电容是一个随电压变化的非线性电容,其值可由下式求得:
C(V)=value+C1·V+C2·V2+…+Cn·Vn,其中n≤20。
[IC=]项为初始条件项,其作用将视瞬态分析语句中是否有UIC(UseInitialCondition)关键词而不同:
若瞬态分析语句中有UIC项,则进行瞬态分析时,将以IC项所给值作为该组件的瞬态分析初始条件。
3.电感:
LnameN+N-[PLOY]value[L1[L2…]][IC=i]
L为关键词,N+,N-表电感的正负节点,电流从正节点流到负节点。
可选项PLOY表示该电感是一个随电流变化的非线性电感,其值可由下式求得:
L(V)=value+L1·I+L2·I2+…+Ln·In,其中n≤20。
[IC=]项为初始条件项,其作用将视瞬态分析语句中是否有UIC(UseInitialCondition)关键词而不同:
若瞬态分析语句中有UIC项,则进行瞬态分析时,将以IC项所给值作为该组件的瞬态分析初始条件。
4.互感:
Kname1Lname2Lname3value
K为关键词,Lname2和Lname3为两个耦合电感名,耦合系数的取值范围为大于0小于1,每个电感的第一个节点作为同名端。
5.传输线:
TnameN1N2N3N4Z0=valueTD=val2[F=freq[NL=nlen]]+[IC=v1,i1,v2,i2]
T为关键词,N1,N2是埠1的两个节点,N3,N4是埠2的两个节点。
Z0为特性阻抗值,TD为传输延迟值,F为频率,NL相当于在频率F时传输线波长的归一化电学长度。
如指定F而省去NL,则NL缺省值为0.25。
传输线的传输延迟值必须以下列两种方法中的一种输入:
1).直接给出TD值;
2).由F和NL两项求出,即TD=NL/F。
v1,i1,v2,i2分别为埠1和端口2的电压,电流的初始值。
6.线性和非线性受控源:
Hspice包含四种线性和四种非线性受控源,它们分别为:
.线性电压控制电流源:
I=G·V,GnameN+N-NC+NC-value
.线性电压控制电压源:
V=E·V,EnameN+N-NC+NC-value
.线性电流控制电流源:
I=F·I,FnameN+N-Vnamevalue
.线性电流控制电压源:
V=H·I,HnameN+N-Vnamevalue
G,E,F,H分别为跨导,电压增益,电流增益和互阻因子。
N+,N-分别为受控
源的正负节点,NC+,NC-分别为控制电压源的正负节点,Vname为控制电流所流
过的电压源的名称,语句中的value值分别为各受控对应的跨导值,电压增益值,电流增益值和互阻因子值。
Hspice允许以一组多项式系数来描述非线性受控源,并且控制变量可以是多维的,维数与系数的数目没有限制,但系数的意义随维数的不同而改变。
其语句格式为:
.非线性电压控制电流源:
Gname n+ n- POLY(nd)nc1+ nc1-…ncnd+
ncnd- P0[P1…][IC=控制电压初值]
.非线性电压控制电压源:
Ename n+ n- POLY(nd)nc1+ nc1-…ncnd+
ncnd- P0[P1…][IC=控制电压初值]
.非线性电流控制电流源:
Fname n+ n- POLY(nd)Vname1…Vnamend
P0[P1…][IC=控制电压初值]
.非线性电流控制电压源:
Hname n+ n- POLY(nd)Vname1…Vnamend
P0[P1…][IC=控制电压初值]
n+,n-为受控源的正负节点,POLY为非线性受控源关键词,nd为控制变量维数,nc1+,nc1-…ncnd+,ncnd-分别为nd个控制电压源的正负节点,Vname1…Vnamend分别为nd个控制电流所流过的电压源的名称,P0,P1…是多项式的系数。
初始条件IC项给出受控源的初始条件,计算时将先使控制变量取IC项所给值,求电路的直流工作点;收敛后继续迭代,再求出控制变量的最终精确解。
若不给IC项,则控制变量的初始值为零。
以电压控制电压源为例,如控制电压为一维的,则受控电压为:
V(VX)=P0+P1VX+P2VX2+P3VX3+…+PnVXn;
如控制电压为二维的,则受控电压为:
V(VX,Vy)=P0+P1VX+P2Vy+P3VX2+P4VXVy+P5Vy2+P6VX3+P7VX2Vy+P8VXVy2+P9Vy3+…
如控制电压为三维的,则受控电压为:
7.独立电压源和电流源:
VnameN+N-[[DC]value][ACmagval[phaseval]]
+[PULSE(v1v2[td[tr[tf[pw[per]]]]])]
or[SIN(vova[freq[td[kd]]])]
or[EXP(v1v2[td1[t1[td2[t2]]]])]
or[PWL(t1v1t2v2…tnvn)]
or[SFFM(vovafreq[mdi[fs]])]
or[AM(vovafreq[fs[td]])]
或InameN+N-[[DC]value][ACmagval[phaseval]]
+[PULSE(i1i2[td[tr[tf[pw[per]]]]])]
or[SIN(ioia[freq[td[kd]]])]
or[EXP(i1i2[td1[t1[td2[t2]]]])]
or[PWL(t1i1t2i2…tnin)]
or[SFFM(ioiafreq[mdi[fs]])]
or[AM(ioiafreq[fs[td]])]
V和I为独立电压源和电流源的关键词,N+和N-为电源的正负节点,这里规定电
流源的方向是从正节点经电源内部流向负节点。
一个独立源,可以同时给出三种分析类型的信号源值,上面第一个选择项为电源
的直流值,第二个选择项为交流资料,第三个选择项为瞬态资料。
程序在作不同
的分析时,将取相应的信号源资料。
若作直流分析,取直流常数值;若作交流分
析,独立源被视为由振幅和相位所描述的正弦小信号(频率即为交流分析频率);
当作瞬态分析时,则用随时间变化的瞬态资料(也可能是常数);直流和瞬态分析
可用同一值描述,如值随时间变化,则取t=0的值作直流分析。
DC为直流信号的关键词,如直流值为零也可省略不写。
模拟时可用零值电压源表
电流表,因每个电压源和电流值都将被打印。
AC为交流信号的关键词,交流信号的振幅和相位的缺省值分别为“1”和“0”。
当电路中只有一个交流信号输入时,交流信号的振幅通常设为1,以便求得电路的
增益。
注意,Hspice中相位的单位为度。
瞬态分析所需的信号源的值是随时间而变化的,随时间变化的关系可以是下列六
种形式之一:
.脉冲信号源:
PULSE(val1val2tdtrtfpwper)
脉冲信号参数的意义及其缺省值如表1所示,表中tstep和tstop分别是瞬态分
析的时间步长和时间终值,它们均由.TRAN语句定义。
脉冲信号源一个周期内的信号值由表2决定,中间时间点上的信号值由输入
值的线性插值法求得。
参数
描述
缺省值
单位
val1
初始值
V或A
val2
脉冲值
V或A
td
延迟时间
0
s
tr
上升时间
tstep
s
tf
下降时间
tstep
s
pw
脉冲宽度
tstop
s
per
周期
tstop
s
时间
数值
0
val1
td
val1
td+tr
Val2
td+tr+pw
Val2
td+tr+pw+tf
val1
td+per
val1
表1表2
脉冲信号源的波形如下图所示:
V
val2
0t
val1
tdtrpwtf
per
.正弦信号源:
SIN(offampfreqtdkdph)
正弦信号参数的意义及其缺省值如表1所示,正弦信号源的值由表2决定。
参数
描述
缺省值
单位
off
直流偏置
V或A
amp
幅度
V或A
freq
频率
1/tstep
Hz
td
延迟时间
0
s
kd
阻尼因子
0
1/s
ph
相位延迟
0
°(度)
表1
时间
数值
0~td
off+amp*SIN(2*∏*ph/360)
td~
off+amp*EXP(td*kd-t)*SIN{2*∏*[freq*(t-td)+ph/360]}
表2
正弦信号源的波形如下图所示:
V
amp由kd决定的衰减包络线
off
-amp
tdperper=1/freq
0t
.指数信号源:
EXP(val1val2td1t1td2t2)
指数信号参数的意义及其缺省值如表1所示,指数信号源的值由表2决定。
参数
描述
缺省值
单位
val1
初始值
V或A
val2
脉冲值
V或A
td1
上升延迟时间
0
s
t1
上升延迟时间常数
tstep
s
td2
下降延迟时间
td1+tstep
s
t2
下降延迟时间常数
tstep
s
表1
时间
数值
0~td1
val1
td1~td2
val1+(val2-val1)*{1-EXP[(td1-t)/t1]}
td2~
val1+(val2-val1)*{1-EXP[(td1-td2)/t1]}*EXP[(td2-t)/t2]
表2
指数信号源的波形如下图所示:
V
val2
t1t2
0t
val1
td1
td2
.分段线性化信号源:
PWL(t1val1t2val2…tnvaln)
t1,t2,…,tn为时间点,val1,val2,…,valn为对应时间点的信号源值,ti和ti+1之间的数值是由vali和vali+1用插值法求得。
分段线性化信号源的波形如下图所示:
Vval3val4
val1val2val5val6
0t1t2t3t4t5t6t
.调频信号源:
SFFM(offampfcarmdindfsig)
调频信号参数的意义及其缺省值如表1所示。
参数
描述
缺省值
单位
off
直流偏置
V或A
amp
载波幅度
V或A
fcar
载波频率
1/tstop
1/s
mdind
调制系数
0
fsig
信号频率
1/tstop
1/s
表1
调频信号源的值由下式决定:
value=off+amp*SIN[2*∏*fcar*t+mdind*SIN(2*∏*fsig*t)]
调频信号源的波形如下图所示:
V
amp
off
-amp
fsigfcar
0t
.调幅信号源:
AM(ampofffmodfcartd)
调幅信号参数的意义及其缺省值如表1所示。
参数
描述
缺省值
单位
amp
载波幅度
0
V或A
off
直流偏置
0
V或A
fmod
调制频率
1/tstop
1/s
fcar
载波频率
0
1/s
td
延迟时间
0
1/s
表1
调幅信号源的值由下式决定:
value=amp*{off+SIN[2*∏*fmod*(t-td)]}*SIN[2*∏*fcar*(t-td)]
调幅信号源的波形如下图所示:
V
amp
fmod
fcar
0t
-amp
tdfcar
8.二极管:
Cnamen+n-modname[area][OFF][IC=icval]
C为关键词,n+,n-是正负节点,modname为模型名,它必须在.MODEL语句中
进行说明。
area为面积因子,为一无量纲的数,表示器件面积与模型语句中定义
的“单位面积”器件的面积比值,与面积有关的模型参数将乘以或除以这个面积
因子。
OFF项可帮助实现直流收敛,其作用是将器件作截止处理,迭代收敛后再
使器件正常工作,继续迭代求得精确解。
如.TRAN分析语句中有UIC项,那么IC
参数的值icval则为瞬态分析的初始条件。
9.晶体管:
Qnamencnbne[ns]modname[area][OFF][IC=Vbe,Vce]
Q为关键词,nc,nb,ne分别表晶体管的集电极,基极和发射极,ns表衬底节点,
缺省时则认为它是接地的。
其余modname,面积因子“area”,关键词“OFF”,
初始条件“IC=”项等的意义如前所述。
10.结型场效应管:
Jnamendngnsmodname[area][OFF][IC=Vds,Vgs]
J为关键词,nd,ng,ns分别表结型场效应管的漏极,栅极和源极节点,其余
各项的意义如前所述。
11.MOS管:
Mnamendngnsnbmodname[L=lval][W=wval]
+[AD=adval][AS=asval][PD=pdval][PS=psval][NRD=nrdval]
+[NRS=nrsval][OFF][IC=Vds,Vgs,Vbs]
M为关键词,nd,ng,ns,nb分别表MOS管的漏极,栅极,源极和衬底节点。
L和W分别为沟道长度和宽度,缺省值为100U。
AD,AS分别为漏极和源极扩散区面积,缺省值为0。
PD,PS分别为漏极和源极扩散区周长,缺省值为0。
NRD,NRS分别为漏极和源极扩散区等效方块面积数目,缺省值为1。
其中,L,W,AD,AS这四个参数均能通过.OPTIONS语句进行修改。
Hspice子电路描述语句:
在Hspice中,可以把电路中重复出现的相同单元定义为“子电路”,作为“宏模块”重复调用,从而使Hspice的电路描述更加简洁明了。
子电路与外部电路相联系的节点称为子电路的外部节点,只在子电路内部使用的节点称为子电路的局部节点。
局部节点只在子电路内部有效,因此局部节点的节点号可以与调用该子电路的主电路的节点号相同。
只有接地节点例外,因其无论对于子电路还是对于主电路,它都是接地点或参考节点。
子电路的描述以子电路定义语句开头,然后是一组描述这个子电路的描述语句,最后是结束语句。
子电路中可以直接调用主电路中描述的模型语句,也可以有自己的模型语句,还可以再定义和调用子电路(即“嵌套”),但不可出现其它控制语句。
子电路中的模型语句和嵌套子电路都是局部的,即只在子电路内部有效,外部不能调用。
1.子电路定义语句:
.SUBCKTsubnamen1[n2n3…]
subname是用户给予电路起的名字,n1,n2,n3…是子电路的外部节点。
.SUBCKT语句后是一组描述子电路的语句,这些语句可以是基本电路器件描述语句,独立电压源和电流源语句,半导体器件描述语句以及模型语句,还可以是对其他子电路的调用语句,但不能是控制语句。
子电路描述的最后一个语句是结束语句。
2.结束语句:
.ENDSsubname
如给出子电路名(subname),就表示结束subname子电路的描述,否则表示结束所有子电路的描述。
3.子电路的调用:
XnameN1[N2N3…]subname
子电路每次被调用时,都需给它赋一个标识符Xname,子电路的标识符必须以字
符X打头。
N1,N2,N3…是主电路的节点,通过它们与子电路相连,因此N1,
N2,N3…必须与子电路的外部节点一一对应。
Hspice的控制语句:
1.分析类型语句:
.直流分析:
.直流分析语句:
.DCvar1start1stop1incr1[var2start2stop2incr2]
或.DCvar1start1stop1incr1[SWEEPvar2typenpstart2stop2]
或.DCvar1typenpstart1stop1[SWEEPDATE=datenm]
或.DCDATE=datenm[SWEEPvar2start2stop2]
或.DCDATE=datenm
或.DCvar1typenpstart1stop1[SWEEPMONTE=val]
或.DCMONTE=val
或.DCDATE=datenmOPTIMIZE=optRESULTS=meaMODEL=optmod
或.DCvar1start1stop1SWEEPOPTIMIZE=optRESULTS=mea
MODEL=optmod
直流分析语句将完成对一个电路