马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
HSPICE常用分析类型
直流分析(DC Analysis)( 参见HSPICE User’s Manual (1)3-4 )
常用命令:
.OP直流工作点分析
.NODESET节点设置
.SENS小信号灵敏度分析
.TF小信号转移函数分析
.DC直流扫描
.OP
计算直流工作点,但其不控制偏置点分析的方法和偏置计算的结果。
.NODESET
在计算直流偏置点时,为使直流分析收敛,电路的某些节点或所有节点可以用.NODESET命令设置初始估计值。一旦建立了工作点,.NODESET语句在直流扫描分析和瞬态分析中将不再其任何作用。注意.NODESET和.IC命令不同。.IC命令在电路进行瞬态分析作工作点计算时为电路设置初始状态。
Example:
.NODESET V(4)=1.5V V(6) = 0
.DC
格式:
.DC var1 start1 stop1 incr1 <var2 start2 stop2 inc2>
.DC var1 start1 stop1 incr1 <SWEEP var2 type np start2 stop2 >
.DC var1 start1 stop1 incr1 <SWEEP DATA=datanm >
.DC DATA=datanm <SWEEP var2 start2 stop2 incr2>
其中type可以为DEC、OCT、LIN或POI(List of Points)。
注意start的值可以比stop的值大,即扫描可以在两个方向上进行,但inc只能为正值。
Examples:
.DC VIN 0 10 1
.DC VIN 0 10 1 VGS 0 5 1
.DC XVAL 1K 10K 0.5K SWEEP TEMP LIN 5 25 125
.DC TEMP POI 5 0 30 50 100 125
该语句将在五个温度点进行直流扫描:0、30、50、100、150(单位:摄氏度)。
例1:直流参数扫描
电路图:
**** t6.cir
****直流参数扫描
M1 1 2 0 0 NSS
VGS 2 0 DC 0V
VDD 1 0 DC 12V
.MODEL NSS NMOS LEVEL=3 RSH=0 TOX=275E-10 LD=.1E-6 XJ=.14E-6
+ CJ=1.6E-4 CJSW=1.8E-10 UO=550 VTO=1.022 CGSO=1.3E-10
+ CGDO=1.3E-10 NSUB=4E15 NFS=1E10
+ VMAX=12E4 PB=.7 MJ=.5 MJSW=.3 THETA=.06 KAPPA=.4 ETA=.14
.DC VDD 0 5 0.1 VGS 0 2 0.5
.PLOT DC I1(M1)
.END
波形:
1、交流分析(AC Analysis)
常用命令:
.AC交流分析
.NOISE噪声分析
.NET 网络特性分析
格式:
.AC 交流分析
.AC type np fstart fstop
.AC type np fstart fstop <SWEEP var type np fstart fstop >
.AC type np fstart fstop <SWEEP var fstart fstop incr>
.AC type np fstart fstop <SWEEP DATA=datanm >
其中,np是交流扫描的点数;fstart是起始频率;fstop是终止频率。type可以为DEC、LIN、OCT、POI。
LIN为线性扫描,是从起始频率到终止频率的线性扫描,np是扫描中的总点数。下一个频率值由当前一个频率值加上一个常量得到。LIN在带宽较窄时使用。
OCT为倍频扫描,频率以倍频程进行对数扫描。np是倍频程内的扫描点数。下一个频率值由当前值乘以一个大于一的常数产生。OCT用于带宽教窄的情形。
DEC为十倍频扫描,它进行对数扫描。np是十倍频程内的扫描点数。DEC用于带宽特别宽的情况。
Examples:
.AC DEC 10 1K 100MEG
.AC DEC 10 1 10K SWEEP cload LIN 20 1pf 10pf
.NOISE 噪声分析
.NOISE ovv srcnam inter
其中,ovv为节点电压输出变量,srcnam是产生等价输入噪声的独立电压源或电流源,inter是打印间隔。
.NET 网络特性分析
单端口网络:
.NET input <RIN = val>
.NET input <val>
双端口网络:
.NET Output Input < ROUT = val > < RIN = val >
Input 为输入交流电压源或电流源
Output 为输出端,可以是电压或电流
RIN 输入电阻或电源内阻,用于计算输出电阻
ROUT输出电阻或负载电阻,用来计算收入阻抗
(详细用法请参阅HSPICE User’s manual 3-14)
例:低通滤波器
***** t11.cir
.AC DEC 10 10 100MEG
vin 1 0 ac 1
r1 1 2 100
c1 2 0 30p
.end
波形如下:
2、瞬态分析(Transient Analysis)
常用命令:
.IC 瞬态初始状态
其一般格式为:
.IC V(1)=V1 V(2)=V2 ……
这些偏置点不影响直流分析和直流扫描中固定偏置点的计算。为了使IC命令有效,应在.TRAN语句中指定UIC。IC语句也可写在元件后面,如C1 2 0 IC=3。
.TRAN 瞬态分析
格式:
.TRAN tincr1 tstop1 <tincr2 tstop2 …><UIC>
.TRAN tincr1 tstop1 <tincr2 tstop2 …><SWEEP var pstart pstop pincr >
.TRAN tincr1 tstop1 <tincr2 tstop2 …><SWEEP var type np pstart pstop >
Examples:
.TRAN 1ns 100ns
.TRAN
例2:
**** t2.cir
****温度扫描*****
R1 1 2 100
R2 0 1 100 TC1=0.05
V1I3 2 0 dc 5v
.tran 1ms 10ms sweep temp 20 60 20
.plot v(1)
.END
波形:
例3:
**** t3.cir
******电阻参数扫描
R1 1 2 rload
R2 0 1 100
V1I3 2 0 dc 5v
.tran 1ms 10ms sweep rload poi 3 100 200 300
.END
波形:
例4:
**** t5.cir
****IC命令
R2 1 2 20
C1 2 0 2.5U
VIN 1 0 dc 5v
.IC V(2)=4V
.TRAN 5US 1MS
.END
使用.IC命令仿真波形:
不使用.IC命令仿真波形:
由此可见,对于含有记忆性元件的电路,为正确反映电路特性,可采取以下措施:
(1) 采用.IC语句
(2) 电源采用分段线性源
3、其他常用语句
.DATA
格式:
.DATA datanm pnam1 < pnam2 pnam3 ……>
+ pval1 < pval2 pval3……>
+ pval1’ <pval2’ pval3’……>
.ENDDATA
Examples:
.TRAN 1n 100n SWEEP DATA=devinf
.AC DEC 10 1hz 10khz SWEEP DATA=devinf
.DC TEMP -55 125 10 SWEEP DATA=devinf
.DATA devinf width length thresh cap
+ 50u 30u 1.2v 1.2pf
+ 25u 15u 1.0v 0.8pf
+ 5u 2u 0.7v 0.6pf
.ENDDATA
再上例中,将分别利用给出的三组参数对电路进行瞬态、交流、直流扫描。
.ALTER
该语句用来对电路进行不同参数下的模拟,这些参数包括:电路拓扑结构、模型、库元件、参数值、选项、源激励、变量等。
Examples:
.PARAM A=4ns B=5ns
V1 VA GND PULSE ( 0V 5V 0ns A B 46.5ns 100ns )?
.ALTER
.PARAM A=5ns B=6ns
.ALTER
.PARAM A=6ns B=7ns
.END
.LIB
指定所用到的库文件,下面给出一个与.ALTER语句合用的例子:
Examples:
*file2: alter2.spalter examples .options list acct post=2 $$$$$$ alter sequences $$$$$$ .tf v(3) vin $dc small-signal transfer function .macro inv 1 2 3 $change the data within subcircuit def m1 4 2 1 1 p 100u 100u $change channel length & width, also m2 4 2 0 0 n 6u 8u $change topology r4 4 3 100 $add the new element c3 3 0 10p $add the new element .lib 'tlib1' slow $set slow model library $.inc 'mos2.dat' $not allowed to be used 在该例中,将分别利用不同的拓扑结构及参数模型(normal和slow)进行模拟。
该文件及库文件tlib1见:D:\edasoft\Avant97\DEMO\APPS
二、 常用输出格式(HSPICE User’s Manual(1) 4-1)
1、输出命令
.PLOT
.PRINT
.PROBE
2、输出格式
直流分析和瞬态分析中:
V(n1,<n2>) n1到n2节点的电压,n2省略为0(即地)
In(Xzzz<.Yyyy.><.Wwww>) n为节点号,括号中为元件。
Examples:
I1(R1) I4(X1.M1)
常用元件节点电流值的表示方法:
电阻 二极管
交流分析中:
Vx(n1,<n2>) x为电压输出类型,主要参数有R(实部)、I(虚部)、P(相位)、M(幅度)、DB(分贝表示)。
Iz(Wwww) z为输出类型,同上。
3、功率输出
格式:
.PRINT <DC | TRAN> P(element_or_subcircuit_name)POWER Examples.PRINT TRAN P(M1) P(VIN) P(CLOAD) POWER .PRINT TRAN P(Q1) P(DIO) P(J10) POWER .PRINT TRAN POWER $ Total transient analysis power .PLOT DC POWER P(IIN) P(RLOAD) P(R1) .PLOT DC POWER P(V1) P(RLOAD) P(VS) .PRINT TRAN P(Xf1) P(Xf1.Xh1) 三、 常用信号源( 详见HSPICE User’s manual (2) 1-20)
1、指数源
EXP ( v1 v2 td1 t1 td2 t2 )
2、脉冲源
PULSE ( v1 v2 td tr tf pw per )
3、分段线性源
PWL ( t1 v1 t2 v2 …… )
4、正弦源
SIN ( vo va freq td alpha theta )
5、单频调频源
6、独立电压源
7、独立电流源
四、 电路的优化
一般步骤:
1) 在分析语句中指明OPTIMIZE
2) 在measure语句中指出优化的目标或误差
3) 一般的分析语句
4) 输出语句
因电路的优化牵涉到较多知识,在此只以一个具体的例子来说明。
例:RC网络的优化
优化目标:
1) 时常数为1
2) 电阻上的有效功耗为50mwatts
步骤:
1) 用RC1计算时常数
2) 用RC2计算功耗
3) 选取RX、CX为变量
网表:
***rcopt.sp
.param rx=optrc(.5, 1e-2, 1e+2)
.param cx=optrc(.5, 1e-2, 1e+2)
.measure tran rc1 trig at=0 targ v(1) val=.3679 fall=1 goal=1sec
.measure tran rc2 rms p(r1) goal=50mwatts
.model opt1 opt
.tran .1 2 $ initial values
.tran .1 2 sweep optimize=optrc results=rc1,rc2 model=opt1
.tran .1 2 $ analysis using final optimized values
.ic 1 1 $ .IC v(1) 1
r1 1 0 rx
c1 1 0 cx
.end
解释:
1) param语句表明:rx取值范围为0.01~100 ohm,初始取值为0.5 ohm
2) trig表明触发条件,本例中为0时刻
3) targ表明优化目标,本例中表示优化目标为v ( 1 ) = 0.3679
4) goal表示到达1second时终止
用HSPICE进行仿真,结束后由.lis文件中可以看出:当r=7.4823ohm,c=133.9934mF时,满足所要求的条件。
关于电路的优化,请参阅:
1) HSPICE User’s Manual (1)Chapter 5:Optimization
2) HSPICE User’s Manual (1)4-9:.MEASURE Statement
3) HSPICE User’s Manual (1)3-4 Chapter 8:Cell Characterization
五、不收敛问题
不收敛(Nonconvergence)诊断表
当发生不收敛问题时,hspice将自动在列表文件中产生两种标注(printback):节点电压标注和元件(element)标注。节点电压标注将打印出所有不收敛节点电压名称和相关的电压错误容差(voltage error tolerance)。元件标注列出所有不收敛元件及其相关电压、电流、模型参数和电流的错误容差。
通过分析诊断表中异常的支路电流、节点电压和容限,可以找到引起不收敛的支路电流或节点电压,之后用.NODESET或.IC命令对其初始化,则有可能消除不收敛现象。其中节点包括一些隐藏的节点,比如说由寄生电阻产生的附加节点。
例:一环形振荡器,其不收敛诊断表如下
Subctk
Element
Model
| xinv21
21:mpch1
0:p1
| xinv22
22:mpch1
0:p1
| Xinv23
23:mpch1
0:p1
| xinv23
23:mnch1
0:n1
| xinv24
25:mpch1
0:p1
| Id
| 27.5809f
| 140.5646u
| 1.8123p
| 1.7017m
| 5.5132u
| Ibs
| 205.9804f
| 3.1881f
| 31.2989f
| 0.
| 200.0000f
| Ibd
| 0.
| 0.
| 0.
| -168.7011f
| 0.
| Vgs
| 4.9994
| -4.9992
| 69.9223
| 4.9998
| -67.8955
| Vds
| 4.9994
| 206.6633u
| 69.9225
| -64.9225
| 2.0269
| Vbs
| 4.9994
| 206.6633u
| 69.9225
| 0.
| 2.0269
| Vth
| -653.8030m
| -745.5860m
| -732.8632m
| 549.4114m
| -656.5097m
| tol ds
| 114.8609
| 82.5624
| 155.9508
| 104.5004
| 5.3653
| tol bd
| 0.
| 0.
| 0.
| 0.
| 0.
| tol bs
| 3.534e-19
| 107.1528m
| 0.
| 0.
| 0.
| 由表中可以看出,在该环形振荡器中,反相器xinv21、xinv21、xinv22、xinv23、xinv24是引起不收敛的子电路,同时还可以看出xinv23的n沟道晶体管也是造成不收敛的元件。表中还给出了相应的电压和电流,由此可以看出他们的知是否合理。误差容限tolds、tolbd、tolbs值可以表明元件电流值(drain to source,bulk to drain,and bulk to source)与收敛与否的紧密程度。一般来说,tol变量的值小于或相近与1时,电路收敛。由表中可以看出,tol ds中接近100的项远大于使电路收敛的误差容限。(原文:For tol variables,a value close or below one indicates a convergent solution。As shown in table 1,the tol values in the order of 100 indicates the currents were far from convergence。)另外,表中还给出了各节点电压值和电流值,由此可以判断晶体管的工作状态。
Traceback of Nonconvergence Source
为了找到引起不收敛的源头,我们可以参考错误容限来检查电路通路。(原文:In order to locate a nonconvergence source,the circuit path can be traced for error tolerance。)比如一个反相器链,最后一个反相器可能有一个非常大的错误容差,在这种情况下,就应该检查驱动该反相器的元件的错误容差。如果驱动容差大的话,那么该驱动元件有可能就是造成不收敛的原因。然而,容差小的话,驱动元件就应该按不收敛源来检查。
通过检查引起不收敛的MOSFET的电流和电压,可以确定管子的工作状态。有可能是处于模型的间断区,比如截止区(subthreshold)到线性区(linear)或线性区到饱和区(saturation)。
考虑到误差容限,应该检查各节点电流和电压。如果电流值或节点电压值太小的话,有可能因除数太小而造成不收敛错误。一个解决办法是增加绝对精度的值。
可以用诊断表和直流迭代次数(用ITL1语句)相结合来定位不收敛源。通过增加或减少迭代次数,有问题的节点和元件将被打印出来。
Transient Operating Point Analysis
一些电路,尤其是具有反馈的电路,没有稳定的工作点(Operating Point)。为了得到这些电路的直流工作点分析,或者去掉反馈环路,或者忽略直流工作点分析。为了忽略直流工作点分析,可以在瞬态分析中用UIC参数。
Example:
.TRAN 1ns 100ns UIC
如果在这样的电路中必须要直流工作点分析,那么可以用.OP语句:
Example:
.TRAN 1ns 100ns UIC
.OP 20ns
上面的例子中跳过了初始的直流工作点分析,而改为计算0ns和20ns时的瞬态工作点。
虽然瞬态分析有可能解决直流分析中的不收敛问题,但是瞬态分析本身不易收敛。在瞬态分析中,错误信息“Timestep Too Small”表明电路不收敛。这有可能是由初始条件不当造成的。
确定初始值
电路达到稳态时的工作点数据可以用来作为直流工作点分析的初始值。
Example:
.OPTION OFF
.TRAN 20n 250n UIC
.OP 250n
VSUPPLY 5 0 PL(0V 0S 5V 50N)
在这个例子中,VSUPPLY在开始的50ns内由0V升到5V,200ns时电路已达到稳态。设置时间增量为电路的估计最大RC时间常数,在10倍于时间常数的的地方开始进行工作点分析。这样的步骤将有充分的时间保证电路达到稳态。利用这些步骤就可以确定初始电压。
不收敛电路及其解决
电路不收敛通常是由一下原因引起的:
1)初始条件不当
2)不恰当的模型参数
3)不恰当的.OPTIONS命令或分析模式
初始条件
多稳态电路需要状态信息来进行直流分析。因此,对于环形振荡器和触发器必须有初始体条件(利用.IC语句)。环形振荡器通常只需设置一个初始状态。
对触发器,最好用.IC语句在子电路内部设置初始条件。在下面的例子中,局部参数Qset默认为0,它被用来初始化Q值,这样,所有的Q值初始为0。若在调用时设置Qset为1,则所有的Q值初始为1。
Example:
.subckt latch in Q Q/ d Qset=0
.ic Q=Qset
…
.ends
.xff data_in[1] out[1] out[1]/ strobe LATCH Qset=Vdd
不恰当的模型参数(参见HSPICE User’s manual(1) 3-37)
P-N结(参见HSPICE User’s manual 3-38)
因以上两项在我们的分析中一般不会遇到,所以不予解释,需要时可查阅手册。
不恰当的.OPTIONS
高功率电路
由于HSPICE被设置成用于IC设计,所以在分析高功率电路时有可能发生不收敛现象,可通过增加Options ITL1到300-400来使之收敛。
运放和比较器
高增益的运放和比较器有可能使电路违背了基而霍夫电流定律而造成电路的不收敛。这一般是由高增益比例因子造成的。可以将RELI改为0.005pA,将ABSI改为1pA,则有可能使之收敛。
晶体振荡器(参见HSPICE User’s manual(1) 3-39)
|