•无源器件:电阻、电感、电容
1、电阻
RXXX n1 n2 <mname> <R=>resistance <AC=val> 电阻值可以是表达式。
例:R1 1 2 10K
Rac 9 8 1 AC=1e10
Rterm input gnd R=’sqrt(HERTZ) ’
2、电容
CXXX n1 n2 <mname> <C=>capacitance
例:C1 1 2 1pF
3、电感
LXXX n1 n2 <L=>inductance
例:L1 1 2 1nH
•有源器件:Diode、BJT、JEFET、MOSFET
1、Diode(二极管)
DXXX N+ N- MNAME<AREA> <OFF> <IC=VD>
可选项:AREA是面积因子,OFF是直流分析所加的初始条件,IC=VD是瞬 态初始条件
注:模型中的寄生电阻串联在正极端
2、BJT(双极性晶体管)
QXXX NC NB NE <NS> MNAME<AREA> <OFF> <IC=VBE,VCE>
NC、NB、NE、NS分别是集电极、基极、发射极和衬底节点,缺省时NS接地。后面与二极管相同。
3、JFET(结型场效应晶体管)
JXXX ND NG NS MNAME<AREA> <OFF> <IC=VDS,VGS>
4、MOSFET(MOS场效应晶体管)
MXXX ND NG NS NB MNAME <L=VAL> <W=VAL> <Other options>
M为元件名称,ND、NG、NS、NB分别是漏、栅、源和衬底节点。MNAME是模型名,L沟道长,W为沟道宽。
•子电路
1、子电路定义开始语句
.SUBCKT SUBNAM <node1 node2…>
其中,SUBNAM为子电路名,node1…为子电路外部节点号,不能为零。子电路中的节点号(除接地点),器件名,模型的说明均是局部量,可以和外部的相同。
例: .SUBCKT OPAMP 1 2 3 4
2、子电路终止语句
.ENDS <SUBNAM>
若后有子电路名,表示该子电路定义结束;若没有,表示所有子电路定义结束。
例: .ENDS OPAMP / .ENDS
3、子电路调用语句
X***** <node1 node2 …> SUBNAM
在Spice中,调用子电路的方法是设定以字母X开头的伪元件名,其后是用来连接到子电路上的节点号,再后面是子电路名。
例: „„
.SUBCKT INV IN OUT wn=1.2u wp=1.2u
Mn out in 0 0 NMOS W=wn L=1.2u
Mp out in vdd vdd PMOS W=wp L=1.2u
.ENDS
X1 IN 1 INV WN=1.2U WP=3U
X2 1 2 INV WN=1.2U WP=3U
X3 2 OUT INV WN=1.2U WP=3U
激励源:独力源和受控源
独立源 :直流源(DC Sources) 交流小信号源(AC Sources) 瞬态源(Transient Sources) 脉冲源 指数源 正弦源 分段线性源
1、直流源( DC Sources )
VXXX N+ N- DC VALUE
IXXX N+ N- DC VALUE
例:V1 1 0 DC=5V
I1 1 0 DC=5mA
2、交流小信号源(AC Sources)
VXXX N+ N- AC<ACMAG<ACPHASE>>
IXXX N+ N- AC<ACMAG<ACPHASE>>
其中,ACMAG和ACPHASE分别表示交流小信号源的幅度和相位。
例:V1 1 0 DC=5V AC 1V
3、瞬态源(Transient Sources )
a、脉冲源(又称周期源,PULSE Sources)
VXXX N+ N- PULSE (V1 V2 TD TR TF PW PER)
其中,V1初始值,V2脉动值,TD延时,TR上升时间,TF下降时间,PW脉冲宽度,PER脉冲周期。
例:Vin 1 0 PULSE (0V 5V 10ns 10ns 10ns 40ns 100ns)
b、分段线性源(PWL Sources)
VXXX N+ N- PWL (T1 V1 <T2 V2 T3 V3 „>) <R<=repeat>> <TD=delay>
R=repeat_from_what_time TD=time_delay_before_PWL_start
其中,Vi是Ti时刻的值,repeat是开始重复的起始点,delay是延迟时间
例:V1 1 0 PWL 60n 0V,120n 0V,130n 5V,170n 5V,180ns 0V,R 0
V2 2 0 PWL 60n 0V,120n 0V,130n 5V,170n 5V,180ns 0V,R 60n
c、VXXX N+ N- SIN(V0 VA FREQ TD THETA PHASE)
其中,VO偏置,VA幅度,TD延时,THETA阻尼因子,PHASE相位
例:VIN 3 0 SIN (0V 1V 100MEG 2NS 5e7)
d、指数源(EXP Sources)
VXXX N+ N- EXP(V1 V2 TD1 TAU1 TD2 TAU2)
V1是初始值,V2是峰值,TD1是上升延迟时间,TAU1是上升时间常数, TD2是下降延迟时间,TAU2是下降时间常数。
例:VIN 3 0 EXP (-4 -1 5N 30N 40N 80N)
器件模型
元器件需要模型语句来定义其参数值。模型语句不同于元器件定义描述语句,它是以“.”开头的语句,由关键字.MODEL,模型名称,模型类型和一组参数组成。 无源器件定义模型参数即可。
电阻模型 :.MODEL 模型名 R keyword=value
NOISE,RX: 热噪声参数,inr=SQRT(NOISE·4KT/R)
电容模型: .MODEL 模型名 C parameter=value
电感模型: .MODEL 模型名 L parameter=value
二极管模型
.MODEL 模型名 D <LEVEL = val> <keyword = val> ...
电阻、电容、电流参数
例:.MODEL D D (CO=2PF, RS=1, IS=1P)
.MODEL DFOWLER D (LEVEL=2, TOX=100, JF=1E-10, EF=1E8)
.MODEL DGEO D (LEVEL=3, JS=1E-4, JSW=1E-8)
BJT管模型
.MODEL mname NPN <(> <pname1 = val1> ... <)>
.MODEL mname PNP <pname1 = val1> ...
模型参数中一般包括LEVEL,说明哪种模型,不同级的模型有不同的模型参数集。
MOS管模型
.MODEL 模型名 PMOS <LEVEL=val> <parameters>
.MODEL 模型名 NMOS <LEVEL=val> <parameters>
LEVEL=1 常用于数字电路,精度低、速度快
LEVEL=2 考虑了衬底电荷对电流的影响
LEVEL=13,39,49模拟电路,精度高、速度慢
二、分析类型描述语句
.OP:直流工作点分析
•严格来说,这不算一种仿真类型。计算直流工作点指令,对于分析电路很有用(要会看.lis文件),会在输出文件中列出一些直流参数和各结点的工作点电压与支路电流、静态功耗。
•一般在任何其它仿真之前都需要计算直流工作点。
•.op time看某一时刻的各个器件和电源的状态。
•.op vol time某一时刻所有节点电压。
•.op cur time某一时刻所有器件和电源的电流。
•默认状态:.ac和.dc分析是初始工作点,.tran默认时间是0。
.DC:直流分析
•可以对参数和独立电源扫描
•.DC var1 START STOP STEP/<SWEEP var2 type np start2 stop2>
其中,type有DEC(十进位)/OCT(倍频)/LIN(线性)/DATA=datanm/POI(列表),Np是单位范围内的点数(依type而定)
•注意:
1)对独立源扫描时,var为电源名,而非节点名
2)仿真迟滞特性要正、负双向扫描,
如: .DC Vin 0 5 0.1 .DC Vin 5 0 -0.1
3) 注意对两个量的扫描,后面的是外循环
4) SWEEP后的变量可是电压、电流或温度等变量
.TRAN:瞬态分析
.TRAN var1 START=start1 STOP=stop1 STEP=incr1
例:.TRAN 1NS 100NS 注:以1ns的步长输出到100ns
.AC:交流分析
.AC type np fstart fstop <SWEEP var start stop incr>
or
.AC type np fstart fstop <SWEEP var type np start stop>
or
.AC var1 START = start1 STOP = stop1 STEP = incr1
例:.AC DEC 10 1K 100MEG
•注:一共有4种
DEC –十进制的(decade variation) OCT –八进制的(octave variation)
LIN – 线形的(linear variation) POI – 列举的(list of points)
.NOISE:噪声分析
用来计算各个器件的噪声对输出节点的影响并给出其均方根并输出,可完成.AC语句规定的各频率的计算,应在.AC分析之后。
.NOISE ovv srcnam inter
Ovv-输出变量,srcnam-输入源,inter-频率间隔
三、控制语句
.INCLUDE语句
.INCUDE语句:引用一个文件,被引用的文件置于引用文件前。
例:LNA
.include “me98xxxx/model.sp“
.LIB 语句:
.lib ‘<filepath>filename’ entryname
该语句根据文件路径和文件名来调用一个库文件,一般该文件包含器件模型。
例:.lib ‘MODELS’ cmos1
MODELS文件:.MODEL CMOS1 nmos ···
我们仿真中加库的语句应该是
.LIB 'D:\TEST\PROCESS\0.6U BCD V0.1PHASE1.LIB' TT
.PARAM 语句
.PARAM语句:定义一个变量。
.PARAM <parametername> = ‘<Expression> ‘
例子: .PARAM width = 20u .PARAM length = 'sqrt(width)*1.65'
M1 3 2 0 0 NMOS width length
.DATA 语句
.DATA语句:给一个数组赋值。
例子:.DATA D1 width length RL + 50u 20u 1K + 60u 10u 10K + 100u 25u 1K .ENDDATA
.ALTER语句
.ALTER语句:使用不同的参数和数据以返回一个仿真结果。
语法 :.ALTER <title_string>
title_string是任何最长至72个字母的字符串。.alter运行所需的合适的字符串在每个输出列表文件和图形数据文件(.tr#)的标题部分打印出来。
.GLOBAL 语句
.GLOBAL语句:定义全局变量。
.GLOBAL parametername (XX)
例子: .GLOBAL VDD
.GLOBAL VSS
注:上述语句会把所有命名为XX的节点连接起来,包括子电路里面的节点。 Global的使用需格外小心,一般仅把电源定义成Global
.Options 语句
.Options语句:可选设置语句,该语句允许用户重新设置程序的参数或控制程序的功能。
.OPTIONS opt1 <opt2> … <opt=x>
常用的一些如下:
node: 列出个节点的元件端点,便于查错;
post: 使输出数据使用 AvantWaves 浏览(即将数据输出到post processor)
list: 列出输入元件列表;
输出语句
–.PRINT:在输出的list文件中打印数字的分析结果,如果.OPTIONS中有POST则同时输出到post-processor中。
–.PLOT:在输出的list文件中打印低分辨率的曲线(由ASCII字符组成),如果.OPTIONS中有POST则同时输出到post-processor中。
–.GRAPH:生成用于打印机或PostScript格式的高分辨率曲线。
–.PROBE:把数据输出到post-processor,而不输出到list文件。
–.MEASURE:输出用户定义的分析结果到mt0文件,如果.OPTIONS中有POST则同时输出到post-processor中。
–.OP, .TF, .NOISE, .SENS和.FOUR都提供直接输出功能。
.PRINT antype ov1 <ov2 … ov32>
Antype——AC/DC/TRAN;
Ovi——输出变量,可以有以下形式:
V(1):节点1的电平 ;V(1,2):1、2间的电压;V(R1):电阻R1的电压;VM(1):v1的幅值;VR(1):v1的实部 ;VI(1):v1的虚部;VP(1):v1的相位;VDB(1):v1的分贝值;(电流与以上类似)
.PLOT
.PLOT:.PLOT antype ov1 <(plo1,phi1)> … <ov32>
+<(plo32,phi32)>(plo1,phi1)-ov1绘图的上下限。
.PROBE
.PROBE: .PROBE antype ov1 … <ov32>
*元件电流引用:BJT: I1(Qx)-Ic,I2(Qx)-Ib, I3(Qx)-Ie, I4(Qx)-衬底电流;MOS:I(Mx)-Ids。
1、.PRINT ac V(1) S11(DB) S21(m) S22(DB) ;
2、.TRAN 1N 200N
3、.PROBE V(OUT)
.NOISE v(out) vin 10 ;
.PRINT noise onoise inoise
.PRINT im(rd)