•無源器件:電阻、電感、電容
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)