西洲渡

一只还没迈入IC领域的小菜鸡

Spice语法基础入门

前言:

由于现在需要找实习,还啥也不会呢,不知道咋地就对模拟有点感兴趣,就去图书馆借了本模拟集成电路的书,看了一两章,感觉东西不少于是想整理下来,虽然现在常用的SPICE仿真软件都有很好的GUI界面例如Cadence,在用仿真库中的元器件连成原理图后就可以进行仿真(当然要设置必要的仿真参数),但实际上只是用原理图自动产生了SPICE的格式语句,还是要通过读取语句来进行仿真,这是历史的遗留问题。
在spice早期研究的技术条件下,无法用图形方式输入电路结构,只能通过文本文件来描述,也就是所谓网表。SPICE软件的设计者规范了要进行仿真的电路对应的SPICE网表文件格式,还定义了许多仿真描述语句和分析控制语句等,使仿真软件能通过读取这些特殊信息来进行相关计算和运行,最后获得要求的结果。
因为技术的进步,虽然现在已经不需要手工书写并输入网表了,但了解一些基本语句还是很有用的,不仅可以理解仿真时要设置的那些参数的含义,而且在出错时还易于通过网表来排错。

SPICE仿真软件基础

SPICE网表文件是文本文件,默认的输入文件名为:*_.cir_

因为目前各个版本的SPICE软件都已图形化,并增加了很多功能,所以产生的语句顺序和格式有了一些变化,但主要是以*开头的注释语句的不同变化,便于阅读和模块化,而基本的语句变化不大,包括以下几种:

  • 标题语句:网表文件第一行为标题语句,由任意字符串和字母组成,软件并不处理,而是直接在输出文件中作为第一行打印出来

  • 注释语句:由*开头的字符串,为文件的说明部分,为方便阅读而在自动产生的SPICE网表文件中大量存在

  • 电路描述语句:定义电路拓扑结构和元器件参数的语句,由元器件描述语句、模型描述语句、电源语句等组成

  • 电路特性分析和控制语句:以.开头的语句,描述要分析的电路特性及控制命令

  • 结束语句:即.END ,标志电路描述语句的结束,在文件最后一行(最后将会给出SPICE网表文件的例子)

    电路描述语句:

    是SPICE网表文件中最多也最复杂的,有以下一些规定:

  • 名称:为字符串,只有前8个字符有效,其中第一个字符必须为A–Z的字符,且有固定含义,对应不同类型的元件。

    符号 元件名 符号 Table 符号 Cool 符号 Cool
    B GaAs场效应晶体管 C 电容 D 二极管 X 子电路
    E 电压控制电压源 F 电流控制电压源 G 电压控制电流源 H 电流控制电压源
    I 独立电流源 J 结型场效应晶体管 K 互感和磁芯 L 电感
    M MOS场效应晶体管 Q 双极性晶体管 R 电阻 S 电压控制开关
    T 传输线 U 数字电路器件 V 独立电压源 W 电流控制开关
  • 数字:有几种形式,整数、浮点数、整数或浮点数加上整数指数、浮点数或整数后面加上比例因子,常用的比例因子:有T、G、MEG、K、M、U、N、P、F、MIL等,不分大小写

    T=10E12 G=10E9 MEG=10E6 K=10E3 MIL=25.4E-6
    M=10E-3 U=10E-6 N=10E-9 P=10E-12 F=10E-15
  • 分隔符:有空格、逗号、等号、左括号、右括号等

  • 续行号:“+”,一行最多只能有80字符,如一行无法表达完全,可在第二行起始加+号,表示是前一行的继续

  • 单位:使用国际标准单位制,语句中缺省

  • 规定支路电流的正方向和支路电压的正方向一致

  • 节点编号:可以是任意的数字或字符串,节点0规定为地,不允许有悬浮的节点,即每个节点对0节点都必须有直流的通路。当实际电路不满足这个要求时,可在悬浮节点与地之间接一个大电阻(如1G)

  • 不能分析的问题:电压源回路、电感回路、电压源和电感组成的回路、隔断的电流源和(或)电容

    无源元件描述语句

    电阻描述语句

RXXXXXXX N+ N- <(MODEL)NAME> VALUE <TC=TC1>

1
2
3
4
5
6
7
8
9
10
11
12
  RXXXXXXX        //元件名称
N+ N- //电阻两端的节点号,当电阻上加正电压时,电流从N+流向N-
(MODEL)NAME //可选项,指出电阻将用上后面由.MODEL语句定义的模型
VALUE //电阻值,单位Ohm
TC="TC1" <TC2> //可选的温度系数,TC1 TC2分别是一阶、二阶温度系数

电阻的温度公式:VALUE(T)=RR0[1+TC1(T-T0)+TC2*(T-T0)*(T-T0)]
//R0为电阻描述语句中的阻值,T0为常温300K

电阻模型语句:
.MODEL MNAME RES R=”PVAL1” <TC1=PVAL2> <TC2=PVAL3> <TCE=PVAL4>
//RES为电阻模型关键字,R定义电阻倍乘系数,TCE定义指数温度系数

例句:R4 0 3 RMOD 100
.MODEL RMOD RES(R=2 TC1=0.1 TC2=0.01)

电容电感描述语句

CXXXXXXX N+ N- <(MODEL)NAME> VALUE <IC=INCOND>
LXXXXXXX N+ N- <(MODEL)NAME> VALUE <IC=INCOND>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
   VALUE          //电容电感的值,不能为零
//IC规定初始条件,仅在瞬态分析语句中设关键字UIC时赋值才有意义

电容电感模型语句:
.MODEL MNAME CAP(C=PVAL1 VC1=PVAL2 VC2=PVAL3 TC1=PVAL4 TC2=PVAL5)
.MODEL MNAME IND(L=PVAL1 IL1=PVAL2 IL2=PVAL3 TC1=PVAL4 TC2=PVAL5)
C、L //定义电容电感的倍乘系数
VC1、VC2 //分别是电容的一阶、二阶电压系数
IL1、IL2 //分别是电感的一阶、二阶电流系数
TC1、TC2 //分别是电容、电感的温度系数

电容电感的求值公式:
C(V)=C0*C(1+VC1*V+VC2*V*V)
L(I)=L0*L(1+IL1*I+IL2*I*I)
//C0、L0分别是元件描述语句中的值

电容电感的温度公式与电阻的温度公式类似

互感描述语句

KXXXXXXX LYYYYYYY LZZZZZZZ … VALUE <(MODEL)NAME> <(SIZE)VALUE>

1
2
3
4
5
6
7
		KXXXXXXX、LYYYYYYY      //是两个耦合电感的名称,也可以多个耦合电感按顺序写
VALUE //为耦合系数的值,0<VALUE<1,耦合规则通常在每个电感的第一个节点上加'.',作为同名端
(MODEL)NAME //为模型名,指出将用上后面由.MODEL语句定义的模型
(SIZE)VALUE //用来定义磁芯的截面积的大小,缺省值为1

磁芯的模型语句:
.MODEL MNAME CORE AREA=”PVAL1” PATH=”PVAL2” GAP=”PVAL3” PACK=”PVAL4” MS=…
磁芯模型关键字 磁芯模型关键字 单位 缺省值
AREA 平均磁通横截面积 cm2 0.1
PATH 平均磁路长度 cm 1
GAP 有效气隙长度 cm 0
PACK 叠层系数 - 1
MS 磁饱和电流 A/m 1.00E+06
ALPHA 平均磁场系数 - 1.00E-03
A 形状参数 A/m 1.00E+03
C 磁畴壁的挠曲常数 - 0.2
K 磁畴壁的销连常数 - 500

无损传输线描述语句

TXXXXXXX N1 N2 N3 N4 Z0-VALUE <TD=VALUE> <F=FREQ <NL=NRMLEN>>+<IC=V1,I1,V2,I2>

1
2
3
4
5
N1、N2         //端口1的正负节点
N3、N4 //端口2的正负节点
Z0 //特性阻抗
TD //传输延迟,频率F及在频率F时相对于传输波长的归一化电学长度NL可用来确定延迟,两种表示方式要选一种
IC //确定每个端口的电压和电流,只在瞬态分析中用到(加UIC时)

电压控制开关描述语句

SXXXXXXX N+ N- NC+ NC- <(MODEL)NAME>

1
2
3
4
5
6
7
8
9
10
11
  N+ N-         //分别是开关的正负节点
NC+ NC- //分别是控制端的正负节点
(MODEL)NAME //模型名,指出将用后面由.MODEL语句定义的模型

电压控制开关模型语句:
.MODEL NAME VSWITCH RON=”PVAL1” ROFF=”PVAL2” VON=”PVAL3” VOFF=”PVAL4”
VSWITCH //压控开关模型的关键字
RON //定义开关的导通电阻,缺省为1欧姆
ROFF //定义开关的关断电阻,缺省为1兆欧姆
VON //定义开关导通的阈值电压
VOFF //定义开关关断的阈值电压

电流控制开关的描述语句

WXXXXXXX N+ N- VNAME <(MODEL)NAME>

1
2
3
4
5
6
7
8
9
  N+ N-         //分别是开关的正负节点
VNAME //是控制电流流过的电压源的名称
(MODEL)NAME //模型名,指出将用上后面由.MODEL语句定义的模型

电流控制开关模型语句:
.MODEL ISMOD ISWITCH RON=”PVAL1” ROFF=”PVAL2” ION=”PVAL3” IOFF=”PVAL4”
//ISWITCH为流控开关模型的关键字
//ION为导通的阈值电流
//IOFF为关断的阈值电流

有源元件描述语句

二极管描述语句

DXXXXXXX N+ N- MNAME   <IC=VD>

1
2
3
4
5
6
7
8
9
  N+ N-         //为二极管的正负节点
MNAME //为二极管的模型名,为必选项
AREA //为面积因子
OFF //为直流分析时的初始条件
IC= //"VD为瞬态分析时的初始条件"

二极管的模型语句:
.MODEL MNAME D(PNAME1=PVAL1 PNAME2=PVAL2 ...)
//D为二极管模型的关键字,后面为二极管参数序列,一般二极管模型参数有15--25个
半导体二极管参数表(其中带*的受面积参数影响)
符号 名称 默认值 典型值 单位
IS 饱和电流* 1.00E-14 1.00E-14 A
RS 寄生串联电阻* 0 10 ohm
N 发射系数 1
TT 渡越时间 0 0.1 ns
CJO 零偏PN结电容 0 2 pF
VJ PN结电势 1 0.6 V
M PN结梯度因子 0.5 0.5
EG 禁带宽度 1.11 1.11 eV
XT1 IS的温度系数 3 3
KF 闪烁噪声系数 0
AF 闪烁噪声指数 1
FC 正偏耗尽层电容系数 0.5
BV 反向击穿电压 无穷大 50 V
IBV 反向击穿电流* 1.00E-10 A

双极型晶体管描述语句

QXXXXXXX NC NB NE  MNAME   <IC=VBE,VCE>

1
2
3
4
5
6
7
8
9
		NC NB NE NS			//分别是双极型晶体管的集电极、基极、发射极以及衬底所在节点,NS缺省表示衬底接地
MNAME //为双极型晶体管的模型名,为必选项
AREA //为面积因子
OFF //为直流分析时初始条件
IC="VBE" //VBE、 VCE为瞬态分析时初始条件

双极型晶体管模型语句:
.MODEL MNAME NPN(OR PNP) (PNAME=PVAL1 PNAME="PVAL2" ...)
//双极型晶体管模型有两种类型,NPN PNP分别为其模型关键字,后面为参数序列,一般双极型晶体管模型参数有40多个
双极型晶体管模型的参数表(带*的受面积参数影响)
符号 名称 默认值 典型值 单位
IS 饱和电流* 1.00E-16
BF 理想最大正向电流放大系数 100 100
NF 发射系数 1 1
VAF(VA) 正向BTEA电压 无穷大 100 V
IKF(IK) 正向BTEA大电流下降点,正向膝点电流 无穷大 1.00E-02 A
ISE(C2) 基极-发射极漏饱和电流 0 1000 A
NE 基极-发射极漏发射系数 1.5 2
BR 理想最大反向电流放大系数 1 0.1
NR 反向电流发射系数 1
VAR(VB) 反向ERALY电压 无穷大 100 V
IKR 反向BETA大电流下降点,正向膝点电流* 无穷大 0.1 A
ISC(C4) 基极-集电极漏饱和电流 0 1 A
NC 基极-集电极漏发射系数 2 2
RB 零偏基极电阻* 0 100 ohm
RBM 大电流时最小基极电阻 RB 100 ohm
IRB 基极电阻下降为Rb-Rbmin/2时的电流 无穷大 A
RE 发射极电阻* 0 1 ohm
RC 集电极电阻* 0 10 ohm
CJE 零偏集电极PV结电容* 0 2 pF
VJE 发射结内建电势 0.75 0.7 V
MJE(ME) 发射结梯度因子 0.33 0.33
CJC 零偏集电极PN结电容* 0 1 pF
VJC(PC) 集电结内建电势 0.75 0.5 V
MJC(MC) 集电结梯度因子 0.33 0.33
XCJC Cbc与Rb内连接部分 1
CJS(CCS) 零偏集电极-衬底PN结电容 0 2 pF
VJS(PS) 衬底结内建电势 0.75 V
MJS(MS) 衬底结梯度因子 0
FC 正偏势垒电容参数 0.5
TF 理想正向渡越时间(tf) 0 0.1 s
XTF tf随偏置变化系数 0
VTF tf随偏置Vbe变化的电压参数 无穷大 V
ITF 影响tf的大电流参数 0 A
PTF 在1/(2PIt)Hz时的超前相移 0 PI/6 RAD
TR 反向渡越时间 0 10 ns
EG 禁带宽度 1.11 1.11 eV
XTB BR、BF的温度系数 0
XT1(PT) IS的温度效应指数 3
KF 闪烁噪声系数 0 6.60E-16
AF 闪烁噪声指数 1 1

MOS场效应晶体管描述语句

MXXXXXXX ND NG NS NB MNAME <L=VAL> <W=VAL> <AD=VAL> <AS=VAL> <PD=VAL> <PS=VAL>+<NRD=VAL> <NRS=VAL> <IC=VDS,VGS,VBS>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  ND NG NS NB     //分别是MOS场效应晶体管的漏极、栅极、源极和衬底所在的节点
MNAME //MOS场效应晶体管的模型名,为必选项
L W //分别是MOS场效应晶体管沟道的长、宽
AD AS //为漏极和源极的扩散区的面积
PD PS //为漏极和源极的周长
NRD NRS //为漏极和源极扩散区等效电阻的方块数
OFF //为直流分析时初始条件
IC //为瞬态分析时初始条件

MOS场效应晶体管模型语句:
.MODEL MNAME NMOS(OR PMOS) (PNAME=PVAL1 PNAME="PVAL2" ...)
//MOS场效应晶体管模型有两种类型,NMOS PMOS分别为其模型关键字
//后面为参数序列,一般模型参数有40--60个,大多为工艺参数
//MOS场效应晶体管模型有四个级别,用语句LEVEL来指定,缺省时LEVEL=1
LEVEL="1" Shichman-Hadges模型
LEVEL="2" 基于几何图形的一种二维分析模型
LEVEL="3" 半经验短沟道模型
LEVEL="4" 亚微米BSIM模型
//因MOS场效应晶体管模型的参数较多(40--60个)而且较复杂,很多与制造工艺有关
涉及太多微电子的知识,就不再列出了
*系统级使用时一般使用相关制造厂商或第三方提供的模型参数*

结型场效应晶体管描述语句

JXXXXXXX ND NG NS MNAME <IC=VDS,VGS>

1
2
3
4
5
6
7
8
9
10
  ND NG NS       //分别是结型场效应晶体管的漏极、栅极、源极所在的节点
MNAME //为结型场效应晶体管的模型名,为必选项
AREA //为面积因子
OFF //为直流分析时初始条件
IC="VDS",VGS //为瞬态分析时初始条件

结型场效应晶体管模型语句:
.MODEL MNAME NJF(OR PJF) (PNAME=PVAL1 PNAME="PVAL2" ...)
//结型场效应晶体管模型有两种类型,NJF PJF分别为其模型关键字,后面为参数序列,一般模型参数有20多个
//结型场效应晶体管模型的参数也不再列出了,一般使用相关制造厂商或第三方提供的模型参数

GaAs场效应晶体管描述语句

BXXXXXXX ND NG NS MNAME <IC=VDS,VGS,VBS>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
  ND NG NS          //分别是GaAs场效应晶体管漏极、栅极、源极所在的节点
MNAME //为结型场效应晶体管的模型名,为必选项
AREA //为面积因子
OFF //为直流分析时初始条件
IC="VDS",VGS,VBS //为瞬态分析时初始条件

GaAs场效应晶体管模型语句:
.MODEL MNAME GASFET (PNAME=PVAL1 PNAME="PVAL2" ...)
//GASFET为GaAs场效应晶体管模型的关键字,后面为参数序列,一般模型参数约30个
//GaAs场效应晶体管模型有三个级别,用语句LEVEL来指定,缺省时LEVEL=1
LEVEL="1" Curtice模型
LEVEL="2" Statz或Raytheon模型
LEVEL="3" Triquint模型
//GaAs场效应晶体管模型的参数也不再列出了,一般使用相关制造厂商或第三方提供的模型参数

数字电路器件描述语句

UXXXXXXX [()]+ +<I/OMODEL NAME> [MNTYMXDLY=]+[I/O-LEVEL=]

UXXXXXXX <STIM (WIDTH)VALUE,(FORMAT)VALUE> *<(I/O)MODEL NAME>+<TIMESTEP=(STEPSIZE)VALUE>

1
2
3
4
5
6
7
8
前一种表示数字电路,名称后是类型、参数值、节点、定时模型名、输入输出模型名
后一种表示激励波形发生器,将规定的激励加到指定的节点上
2.6.1 子电路描述语句:以.SUBCKT作为开始,以.END作为结束的一组语句,作为以X开始的元件
2.6.1.1 子电路定义开始语句:.SUBCKT <SUBNAME> N1 <N2 N3 ...>
其中:SUBNAME是子电路名称
N1 N2 N3等是子电路外部节点号
2.6.1.2 子电路结束语句:.ENDS <SUBNAME
表示结束SUBNAME子电路或结束所有子电路定义

元器件库调用语句

.LIB
//filename为库文件名,必须带扩展名.lib,缺省名为nom.lib,列出所有库文件

电源描述语句

独立电源描述语句

独立电压源描述语句:
VXXXXXXX N+ N- <(DC)DC/TRAN VALUE> <AC (ACMAG (ACPHASE))>
独立电流源描述语句:
IXXXXXXX N+ N- <(DC)DC/TRAN VALUE> <AC (ACMAG (ACPHASE))>

1
2
//N+ N-为电源的正负节点,电流源的电流正方向为使电流从N+节点流出并流入N-节点
//DC/TRAN VALUE指电源的直流或随时间变化的瞬时值,缺省为0

独立电源按直流、交流、瞬态源等可细分为如下几种:

直流电源

直流电压源:VXXXXXXX N+ N- [DC] VALUE
直流电流源:IXXXXXXX N+ N- [DC] VALUE

交流电源

交流电压源:VXXXXXXX N+ N- AC <ACMEG >
交流电流源:IXXXXXXX N+ N- AC <ACMEG >

1
2
//ACMEG为正弦波幅值,缺省值为1
//ACPHASE为正弦波的初始相位,缺省为0

瞬态电源
脉冲电压源:VXXXXXXX N+ N- PULSE (V1 V2 TR TF PW PER)
脉冲电流源:IXXXXXXX N+ N- PULSE (I1 I2 TR TF PW PER)

1
2
3
4
5
6
7
8
V1 I1    //为起始值
V2 I2 //为脉动值
TD //为延迟时间,缺省值为0
TR //为上升时间,缺省值为TSTEP
TF //为下降时间,缺省值为TSTEP
PW //为脉冲宽度,缺省值为TSTOP
PER //为周期,缺省值为TSTOP
TSTEP TSTOP //为瞬态分析时的步长和中止时间

image.png

瞬态正弦电源

瞬态正弦电压源:VXXXXXXX N+ N- SIN (V0 VA F TD THETA)
瞬态正弦电流源:IXXXXXXX N+ N- SIN (I0 IA F TD THETA)

1
2
3
4
5
6
7
8
9
    //V0 I0为偏置值
//VA IA为振幅
//F为频率,缺省值为1/TSTOP
//TD为延迟时间,缺省为0
//THETA为阻尼时间,缺省为0

正弦曲线表达式:
V(T)=V0+VA*SIN(2*PI*(F*(T-TD)+PHASE/360))*EXP(-(T-TD)*THETA)
I(T)=I0+IA*SIN(2*PI*(F*(T-TD)+PHASE/360))*EXP(-(T-TD)*THETA)
瞬态指数电源

瞬态指数电压源:VXXXXXXX N+ N- EXP(V1 V2 TD1 TAU1 TD2 TAU2)
瞬态指数电流源:IXXXXXXX N+ N- EXP(I1 I2 TD1 TAU1 TD2 TAU2)

1
2
3
4
5
6
//V1 I1为初始值
//V2 I2为终止值
//TD1为上升延迟时间,缺省为0
//TAU1为上升时间常数,缺省为TSTEP
//TD2为下降延迟时间,缺省为TD1+TSTEP
//TAU2为下降时间常数,缺省为TSTEP
分段线性电源

分段线性电压源:VXXXXXXX N+ N- PWL (T1 V1 <T2 V2 T3 V3 T4 V4 …>)
分段线性电流源:IXXXXXXX N+ N- PWL (T1 I1 <T2 I2 T3 I3 T4 I4 …>)

瞬态单调调频电源

瞬态单调调频电压源:VXXXXXXX N+ N- SEFM (V0 VA FC MDI FS)
瞬态单调调频电流源:IXXXXXXX N+ N- SEFM (I0 IA FC MDI FS)

1
2
3
4
5
6
7
8
    //V0 I0为偏置
//VA IA为幅度
//FC为载波频率,缺省值为1/TSTOP
//MDI为调制系数
//FS为信号频率,缺省值为1/TSTOP

调频曲线表达式:
V(T)=V0+VA*SIN[(2*PI*FC*T)+MDI*SIN(2*PI*FS*T)]

线性受控源描述语句

压控电压源:EXXXXXXX N+ N- NC+ NC- VALUE
压控电流源:GXXXXXXX N+ N- NC+ NC- VALUE
流控电流源:HXXXXXXX N+ N- VNAME VALUE
流控电流源:FXXXXXXX N+ N- VNAME VALUE

1
2
//NC+ NC-为控制电压支路的正负节点
//VNAME为控制电流流过的电压源的名称

分析语句

直流分析

  • 直流工作点分析: .OP

  • 直流扫描分析:**.DC VAR START STOP INC **

    1
    2
    3
    4
    5
    //TYPE为扫描类型,线性为LIN、数量级为DEC、倍频程为OCT、列表为LIST
    //VAR为扫描变量
    //START STOP为扫描变化范围
    //INC是扫描步长或者点数,必须为正数
    //VAR2是第二个扫描变量(外循环),可选项
  • 直流小信号传输函数分析:**.TF OUTVAR INSRC**

    1
    2
    //OUTVAR为输出变量
    //INSRC为小信号输入源名称
  • 直流小信号灵敏度分析:**.SENS**

  • 节点电压设置:**.NODESET**

    交流分析

  • 交流小信号分析:**.AC TYPE Nx FSTART FSTOP**

    1
    2
    3
    4
    5
    6
    线性   .AC LIN NP FSTART FSTOP
    数量级 .AC DEC ND FSTART FSTOP
    倍频程 .AC OCT NO FSTART FSTOP
    //NP为步长
    //ND为变化点数
    //NO为变化点数
  • 噪声分析:**.NOISE OUTV INSRC NUMS**

    1
    2
    3
    OUTV为某节点上总的噪声输出电压
    INSRC为作噪声输入基准的独立电压源或独立电流源名
    NUMS为频率间隔点数,在每个频率处打印出电路中每个噪声源的贡献

    瞬态分析

  • 时域波形分析:**.TRAN TSTART TSTOP DISPSTART STEPMAX**

    1
    2
    3
    4
    //TSTART为起点时间
    //TSTOP为终点时间
    //DISPSTART为显示起点
    //STEPMAX为瞬态分析最大步长,可缺省而由系统选
  • 傅立叶分析:**.FOUR FREQ OV1 <OV2 OV3 …>**

    1
    2
    //FREQ为基频
    //OV1 OV2 OV3为要求的输出变量
  • 瞬态初始条件设置:**.IC**

    综合分析

  • 最坏情况分析:**.WCASE (ANALYSIS) (OUTVAR)

    1
    2
    3
    4
    //ANALYSIS为DC/AC/TRAN中的一种
    //OUTVAR为输出变量,电压、电流等
    //FUNCTION为求值函数,有多种选择
    //OPTION为输出形式,LIST列每次运行模型参考值,OUTPUT输出文件或图形
  • 蒙特卡罗分析:**.MC (RUNSVAL) (ANALYSIS)

    1
    2
    //RUNSVAL为运行次数
    //OUTPUTVAR为输出变量,电压、电流等
  • 参数扫描分析:**.STEP**

    1
    2
    3
    4
    5
    线性扫描          .STEP (LIN) VAR START STOP INC
    数量级倍频程扫描 .STEP <DEC> <OCT> VAR START STOP ND
    列表扫描 .STEP VAR LIST VAL1 <VAL2 ...>
    //INC为步长
    //ND为变化点数
  • 温度分析:**.TEMP**

    控制语句

  • 别名设置语句:**.ALIASES.ENDALIAS**,中间为设置内容

  • 文本输出文件中打印:**.PRINT**

  • 文本输出文件中绘图:**.PLOT**

  • 绘图软件包调用:**.PROBE**

  • 参数及表达式设置:**.PARAM (NAME1=VALUE1) <NAME2=VALUE2> …**

            //其中的VALUE也可用表达式EXPR

  • 选择项设置:**.OPTION**

  • 函数定义:**.FUNC**

    1
    2
    3
    4
    5
    PSPICE中的PROBE控制语句:
    当输入文件中加入了.PROBE控制语句后,扫描计算结果存入*.dat文件中,可直观观察扫描结果
    PROBE自动将横坐标设为扫描变量,纵坐标需手动添加
    PROBE提供Cursor工具,方便使用鼠标的左右键控制两个光标,
    沿选定曲线进行测量,还有小窗口显示光标对应的值还有两光标间的差值

    变量扫描

对一些仿真参数,PSPICE可设置为变量,通过设置其变化范围,仿真出不同的结果,以便进行对照以选择最佳值

如:可把双极型晶体管的偏置电阻设为变量,仿真出不同偏置电阻值时的放大系数及集电极电流等参数,最终可选择最佳的偏置电阻值
可进行变量扫描的参数如下:

  • 独立源类:任何独立电压源和独立电流源都可以作为扫描变量
  • 模型参数类:任何一个.MODEL中描述的模型参数都可作为扫描变量,如温度系数、场效应管的沟道长度和宽度等
  • 温度变量:以TEMP作为扫描变量,可以观察在不同温度下的电路特性
  • 总体参数:对元器件值扫描,必须通过模型的设置来实现

熟练使用参数的变量扫描,可大大提高仿真效率

SPICE软件的适用范围及缺点

  • SPICE是进行元器件级的仿真,对含元器件少的功能较单一的电路进行仿真较合适和准确,比如放大器、调制器等,但对结构复杂且器件较多的电路进行分析则比较费时,结果也可能偏离较大。
  • Spice采用变步长算法,对于周期性开关状态变化的电力电子电路而言,将造成把大量的时间耗费在寻求合适的步长上面,从而导致计算时间的延长。
  • SPICE的器件模型都是针对小功率电子器件的,而对于电力电子电路中所用的大功率器件存在的高电压、大注入现象不尽适用,有时甚至可能导致错误的结果。
  • SPICE的另一问题是仿真的收敛性问题,在对复杂电路进行仿真时,有时数据的准确性较低,甚至常出现不能收敛而导致仿真失败。SPICE软件更适合模拟电路仿真,可以做一些简单的数字电路仿真,但用于数模混合电路时很容易出问题。
  • SPICE模型的分析精度主要取决于模型参数的来源(即数据的精确性),以及模型方程式的适用范围,而模型方程式与各种不同的数字仿真器相结合时也可能会影响分析的精度。
  • SPICE对元器件模型的依赖性很大,但这些参数通常都属于设计者和制造商的知识产权和机密,常因缺乏模型导致仿真无法实现。目前美国、欧洲的半导体厂商的分立元件的SPICE模型较多,特别是著名厂商网站上都可下载,但日本生产的元件就很少有模型,而IC的模型更是少得多,通常还要购买。
  • SPICE最早主要是为集成电路设计开发的,半导体模型参数设计太多工艺参数和材料特性,而不是用户手册上的使用参数,使用非常不便,在遇到模型库中未有的元件时,就难以仿真。虽然一些公司的SPICE软件也有新建元器件模型的界面,如PSPICE,但因参数涉及很多微电子专业的术语,使用者不容易理解和转换。
  • 因各方面原因,仿真结果与实际调试出的电路的测试结果都有一些误差,而且常常在50%以上。
  • SPICE在应用于一些脉冲电路时,如方波发生器、多谐振荡器、单稳触发器、迟滞比较器等,也常常无法得到正确结果。
  • 许多谐振器和振荡器电路都难以仿真。
  • RF电路仿真能力较差,阻抗匹配和阻抗园图等都难以使用,各种端口参数也难以实现。
  • 在磁性元件的模型方面Spice也有待加强。

    SPICE网表文件的实例

    是软件AIM-Spice附带的实例,而直观的原理图却没有提供,可自己试着画出来
    (AIM-Spice是一个文本输入的Spice软件,功能单一且原始,但可免费下载,便于学习Spice。)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    difpair ckt - simple differential pair
    vin 1 0 sin(0 0.1 5meg) ac 1
    vcc 8 0 12
    vee 9 0 -12
    q1 4 2 6 qnl
    q2 5 3 6 qnl
    rs1 1 2 1k
    rs2 3 0 1k
    rc1 4 8 10k
    rc2 5 8 10k
    q3 6 7 9 qnl
    q4 7 7 9 qnl
    rbias 7 8 20k
    .model qnl npn(bf=80 rb="100" ccs="2pf" tf="0".3ns tr="6ns" cje="3pf" cjc="2pf"
    + va="50")
    2. 用ORCAD10中附带的PSPICE模块自动产生的网表文件的实例(删去了空行):
    **** 11/15/08 16:12:15 ******* PSpice 10.0.0 (Jan 2003) ******* ID# 1111111111
    ** Profile: "SCHEMATIC1-bias" [ D:\My Documents\orcad\transistor-pspicefiles\schematic1\bias.sim ]
    **** CIRCUIT DESCRIPTION
    ******************************************************************************
    ** Creating circuit file "bias.cir"
    ** WARNING: THIS AUTOMATICALLY GENERATED FILE MAY BE OVERWRITTEN BY SUBSEQUENT SIMULATIONS
    *Libraries:
    * Profile Libraries :
    * Local Libraries :
    * From [PSPICE NETLIST] section of e:\OrCAD\OrCAD_10.0\tools\PSpice\PSpice.ini file:
    .lib "nom.lib"
    *Analysis directives:
    .TRAN 0 20ms 10ms
    .PROBE V(alias(*)) I(alias(*)) W(alias(*)) D(alias(*)) NOISE(alias(*))
    .INC "..\SCHEMATIC1.net"
    **** INCLUDING SCHEMATIC1.net ****
    * source TRANSISTOR
    Q_Q1 N00286 N00312 N00298 Q2N3904
    R_R1 N00312 N00256 470k
    R_R2 N00286 N00256 2.2k
    R_R3 0 N00298 47
    R_R5 0 N00374 10k
    C_C1 N00423 N00312 100n
    C_C2 N00286 N00374 100n
    V_V1 N00256 0 6Vdc
    V_V2 N00423 0 DC 0 AC 1
    +SIN 0 1m 1k 0 0 0
    **** RESUMING bias.cir ****
    .END
    其电路原理图及交流小信号分析和瞬态分析波形如下:
    image.png