HPICE軟件主要用於模擬電路的仿真。模擬電路仿真工具是以電路理論、數值計算方法和計算機技術為基礎實現的,由於模擬電路在性能上的復雜性和電路結構上的多樣性,對仿真工具的精度、可靠性、收斂性以及速度等都有相當高的要求。HSPICE程序由於收斂性好,適於做系統及電路仿真,又有工作站版和微機版本,在國內外的用戶十分廣泛。
一、HSPICE可模擬的內容
- 直流分析:包括非線性電路的直流分析
- 電路的直流工作點:分析時電路中的電感全部短路,電容全部開路,得到電路的每一節點的電流和電壓(相對參考點)值。
- 直流小信號傳輸值:傳輸函數的直流小信號值為直流小信號工作下的輸出變量和輸入變量之比值,包括電路的輸入電阻和輸出電阻。
- 直流轉移曲線:HSPICE可在用戶指定的范圍內,逐步改變指定的獨立電壓或電流源,對每一個電源值的變化,都得到儲存的輸出變量。
- 靈敏度分析:求出指定輸出變量對於電路參數(包括電路中所有的元件,器件參數,直流電源的輸入電平)的直流小信號靈敏度。
- 交流小信號分析:將交流輸出變量作為頻率的函數計算出來。先計算電路的直流工作點,決定電路中所有非線性器件的線性化小信號模型參數,然后在用戶所指定的頻率范圍內對該線性化電路進行分析。
- 頻域分析:在用戶規定的頻率范圍內完成電路的交流分析。
- 噪聲分析:HSPICE可計算每個頻率點上總的輸出噪聲電平及其等效輸入噪聲電平。
- 失真分析:計算電路交流小信號工作下電路的失真特性,分析時是在輸入端加有一個或兩個頻率的信號,在用戶給定的輸出負載電阻時,求出在該負載上的輸出失真功率。
- 瞬態分析
- 瞬態響應:是從時間為零開始,到用戶規定的時間范圍內進行電路的瞬態特性分析。
- 傅立葉分析:可以對輸出波形進行傅立葉分析,得到在用戶指定的基頻及時間間隔范圍的傅立葉系數。
- 電路的溫度特性分析:HSPICE在用戶未說明時,是在27℃的標稱溫度下進行各種模擬的。當用戶指定電路在什么溫度下工作時,HSPICE也能進行不同溫度下的電路特性分析,在溫度低於-273℃時不予模擬。
二、HSPICE程序可輸入的元器件和電源
- 元件:包括電阻、電容、電感、耦合互感、無損耗傳輸線及開關等。
- 半導體器件:結型二極管、雙極型晶體管、結型場效應管、MOS場效應管及MESFET等。
- 電源:獨立電流源、獨立電壓源、線性電壓控制電流源、線性電壓控制電壓源、線性電流控制電流源、線性電流控制電壓源以及相應的非線性受控源。其中獨立源除直流源外還有脈沖源、交流正弦源、分段線性源、調幅信號源、調頻信號源等。
- 子電路:HSPICE允許用戶用定義器件模型相似的形式自行定義一組元器件作為子電路。子電路的大小沒有限制,子電路可以嵌套子電路,使用戶在模擬含有較多重復單元電路的較大規模電路時更為方便。
三、HPICE軟件的運行
HSPICE可以以命令行方式方式啟動,類似於DOS命令交互方式,較繁瑣。我們目前采用的是Windows標准輸入界面,使用標准輸入文件。操作步驟為:
- 啟動Hspui.exe,出現Star-Hspice Launcher。
- 在Star-Hspice Launcher下,按Browse,選取網表輸入文件(*.sp),然后按確定。
- 在Star-Hspice Launcher下,按Simulate,就會自動彈出Hspice窗口,並對電路進行模擬。
- 模擬結束后,Hspice窗口關閉。
- 在Star-Hspice Launcher下,按Avanwaves,查看輸出波形。
- 可以用記事本來查看輸出文檔(*.list)。
四、電路模擬過程
用HSPICE進行電路分析時,各個程序模塊之間的關系和設計流程見圖1:
圖1程序設計流程圖
電路的模擬過程描述如下:
逆向設計的步驟是一開始便進入了電路原理圖的輸入。原理圖是根據逆向提取的結果輸入。原理圖Schematics文件輸入完畢並檢查Check通過后,將原理圖轉換成網單文件。
我們首先要選擇合適的工藝,並調用該工藝所提供的庫文件。該庫文件中應包含用該工藝制得的三極管的各個參數值,如單位漏電流,基區方塊電阻,值等(詳見HSPICE使用手冊)。有源器件,如三極管,它們的尺寸是根據工藝的最小尺寸及電路的指標要求來設定的,如發射區、基區和集電區的面積,網單文件中的各個管子后面area、areab和areac分別標明其面積因子。這樣,在模擬時,Hspice便會自動根據庫文件和尺寸計算出具體各管子的參數。電阻、電容值等參數的確定則先測量它們的尺寸,然后根據所選工藝的方塊電阻和面電容的值計算得出。
將網單文件和參數生成完畢以后,我們還要輸入激勵源和分析語句。輸入信號根據實際情況用調用相應的信號。按各個功能塊模擬時,前一級的輸出作為后一級的輸入。分析語句則根據不同的需要選用。當我們需要知道電路每一節點的電流和電壓時,選用靜態工作點分析.op語句;如果需要了解在指定范圍內,輸出變量值隨某個指定的獨立源變化的規律,選用.dc語句;如要知道某個電路的幅頻特性和相頻特性,選用交流小信號分析語句.ac;在要查看在指定的時間間隔內,輸出波形的變化函數關系,選用瞬態分析語句.tran。還有其它語句,如噪聲分析語句.noise、頻域分析.four、和小信號傳輸函數分析.tf、小信號靈敏度分析.sens等,也能反映出電路性能的好壞。
Hspice具有很強的查錯功能,可對輸入的電路描述語句進行語法檢查,以及電路連接關系的拓撲檢查。一旦發現錯誤,將輸出出錯信息並停止程序的運行,這時應先檢查.lis文件中是否由出錯信息。
五、HSPICE的基本語法
1.概述
1.1 文件命名
Star-Hspice的輸入文件類型和標准命名列出如下:
輸入文件類型 文件名
輸出配置文件 meta.cfg
初始化文件 hspice.ini
直流工作點初始狀態文件 <design>.ic
輸入網表文件 <design>.sp
庫輸入文件 <library_name>
模擬轉換數據文件 <design>.d2a
1.2 輸入網表文件(<design>.sp)
Star-Hspice 讀入一個輸入網表文件,並將模擬結果存在一個輸出列表文件或圖形數據文件中。輸入文件<design.sp>包含以下內容:
●電路網表(子電路和宏、電源等)
●聲明所要使用的庫(可選)
●說明要進行的分析(可選)
- 說明所要求的輸出(可選)
輸入網表文件和庫文件可以由原理圖的網表生成器或文本編輯器產生。輸入網表文件中的第一行必須是標題行,並且.ALTER輔助模型只能出現在文件最后的.END語句之前,除此之外,其它語句可以按任意順序排列。
注意:如果輸入文件的最后沒有.END語句,將會產生錯誤信息。
1.2.1 輸入行格式
●輸入網表文件不能為壓縮格式。
●輸入文件名的長度、語句長度以及等式長度不超過256個字符。
●除了被引用的文件名以外,不區分所有大小寫。
●一行輸不完轉到下一行時,下一行的第一個非數字、非空格的字符必須為"+"。
●注釋("*"和"$"符號后的內容視為注釋)
●當輸入文件中出現了特殊的控制字符時會產生錯誤。由於大多數系統無法打印特殊字符,錯誤信息就會因為錯誤字符無法顯示而不明確。可以采用.OPTIONS BADCHAR語句來定位這些錯誤。
1.2.2 名稱
●名稱必須以字母打頭,然后可以跟上數字和下列字符:
! # $ % * + - / < > [ ] _
●定界符優於名稱,並緊跟名稱之后。
●名稱可以長達1024個字符。
●名稱不區分大小寫。
1.2.3 定界符
●輸入定界符有:tab、空格、逗號、等號和小括號
●一次和二次引用定界表達式和文件名
●元素的屬性用冒號來定界(如"M1:beta")
●用句點來表示隸屬定界,如"X1.A1.V"表示電路X1的A1子電路的V結點
1.2.4 結點
●結點標識可以長達1024個字符(包括句號和延展部分)
●結點數字開頭的0被忽略
●跟在以數字開頭的結點編號后的字母被忽略。如,結點1A等同結點1
●結點名可以由以下任何字符打頭:# _ ! %
●結點可以用.GLOBAL語句聲明為全局的
- 結點0、GND、GND!和GROUND均指的是Star-Hspice全局的地。
2. 元件輸入的一般格式
2.1 基本元件(R、L、C等)輸入語句
NAME node1, node2 …. nodeN <model reference> value <optional parameters>
其中,
NAME 定義元件的類型及名稱。第一個字母用於指定元件的類型,例如:C表示電容、L表示電感、R表示電阻,剩下的字母則是給這個元件起的名字。
node1 ... nodeN 指明元件在電路中的連接情況
value 指明元件的標稱值。比如:C1 2 0 10uF,表明在結點2和地之間接入一個10uF的電容C1。
<model reference> 當基本元件參數不能充分描述時,調用相應的模型來描述。
<optional parameters> 參數列表
2.2 二極管輸入語句
Dxxx nplus nminus mname <AREA=val> <PJ=val> <WP=val> <LP=val> +<WM=val> <LM=val> <OFF> <IC=vd> <M=val> <DTEMP=val>
或
Dxxx nplus nminus mname <area_val <periphery_val>> <OFF> <IC=vd> +<M=val>
或
Dxxx nplus nminus mname <W=val> <L=val> <WP=val> <LP=val> +<WM=val> <LM=val> <OFF> <IC=vd> <M=val> <DTEMP=val>
2.3 BJT輸入語句
Qxxx nc nb ne <ns> mname <aval> <OFF> <IC=vbeval,vceval> <M=val> +<DTEMP=val>
或
Qxxx nc nb ne <ns> mname <AREA=val> <AREAB=val><AREAC=val> +<OFF> <VBE=val> + <VCE=val> <M=val> <DTEMP=val>
2.4 MOS器件的輸入
Mxxx nd ng ns <nb> mname <L=val> <W=val> <AD=val> <AS=val> <PD=val> <PS=val> <NRD=val> <NRS=val> <RDC=val> <RSC=val> +<OFF> <IC=vds, vgs, vbs> <M=val> <DTEMP=val> <GEO=val> +<DELVTO=val>
or
Mxxx nd ng ns <nb> mname lval wval …
or
.OPTION WL Mxxx nd ng ns <nb> mname wval lval …
3.模型語句
.MODEL mname type <VERSION=version_number> <pname1=val1 pname2=val2 ...>
其中,
mname 所定義的模型名。注意:模型名稱中如果含有點(.)可能會導致某些情況下模型自動選擇的失敗。
type 選擇模型類型。為以下類型之一:
AMP operational amplifier model
C capacitor model
CORE magnetic core model
D diode model
L magnetic core mutual inductor model
NJF n-channel JFET model
NMOS n-channel MOSFET model
NPN npn BJT model
OPT optimization model
PJF p-channel JFET model
PLOT hardcopy plot model for the .GRAPH statement
PMOS p-channel MOSFET model
PNP pnp BJT model
R resistor model
pname1 ... 參數名稱。參數名稱和模型要匹配,可以多行輸入,新起行的第一個字符必須為"+"。
VERSION 版本號。用於識別不同版本所允許的BSIM和BSIM2的模型。(略)
4.元件庫的選擇輸入
分立器件庫(DDL)是Star-Hspice的分立器件模型的集合,由BJT、MESFET、JFET、MOSFET和二極管模型組成。可以采用X子電路調用語句和DDL元件調用,將DDL庫中的元件包含進來。DDL元件語句調用實際DDL庫文件中的模型名。例如,下面的語句建立了一個lN4004二極管模型的實例:
X1 2 1 DlN4004
其中,DlN4004是模型名。
Star-Hspice有如下幾種方式調用DDL模型庫:
- 系統在安裝時的缺省設置。當輸入語句中用到某個模型或者子電路時,系統自動在DDLPATH環境變量所指向的路徑中搜索和模型名同名的文件,其后綴為.inc。DDLPATH變量設置在meta.cfg配置文件中。
- 在輸入文件中用.OPTIONS SEARCH="<library_path>"設置搜索路徑。
- 直接用.INCLUDE語句將特定模型包含進來。如
.INCLUDE <path>/T2N2211.inc
可以用.LIB語句將常用的命令、器件模型、子電路分析等放入到庫文件中。(暫時略)
5. 電壓/電流源語句
5.1 獨立電壓/電流源
某些類型的分析只能使用與之相關聯的電壓/電流源語句。例如,如果在同一獨立源語句中定義了DC和AC源,則在進行DC分析時,AC源被將移出電路。
Vxxx n+ n- <<DC=> dcval> <tranfun> <AC=acmag, <acphase>>
或者
Iyyy n+ n- <<DC=> dcval> <tranfun> <AC=acmag, <acphase>> <M=val>
其中,
Vxxx 獨立電壓源的名稱。必須以"V"打頭,后面可以跟1023個字母數字字符。
Iyyy 獨立電流源的名稱。必須以"I"打頭,后面可以跟1023個字母數字字符。
n+ 正結點
n- 負結點
DC 設置DC電壓/電流源的值,dcval為設置的值。"tranfun"在零時刻的值將覆蓋DC值(缺省為0.0)。
tranfun 電壓/電流源的輸出函數(AC, ACI, AM, DC, EXP, PE, PL,PU, PULSE, +PWL, R, RD, SFFM, SIN)
AC 表示該電壓/電流源用於AC小信號分析
acmag AC幅度
acphase AC相位(缺省為0.0)
M 用於模擬多個並聯的電流源的倍乘因子。電流值與M相乘為總電流(缺省為1.0)。
例子
VX 1 0 5V
VB 2 0 DC=VCC
VH 3 6 DC=2 AC=1,90
IG 8 7 PL(1MA 0S 5MA 25MS)
VCC 10 0 VCC PWL 0 0 10NS VCC 15NS VCC 20NS 0
VIN 13 2 0.001 AC 1 SIN (0 1 1MEG)
ISRC 23 21 AC 0.333 45.0 SFFM (0 1 10K 5 1K)
VMEAS 12 9
5.1.1 DC電壓/電流源
可以采用不同的方式定義DC電壓或者電流源:
V1 1 0 DC=5V
V1 1 0 5V
I1 1 0 DC=5mA
I1 1 0 5mA
前兩個例子在結點1和地之間定義了一個5V的DC電壓源。第三和第四個例子在結點1和地之間定義了一個5mA的DC電流源,電流流向為從結點1流向地。
5.1.2 AC電壓/電流源
用AC關鍵詞來定義AC電壓/電流源的幅度和相位。
V1 1 0 AC=10V,90
VIN 1 0 AC 10V 90
上面兩個例子定義了一個幅度為10V、相位為90度的AC電壓源。進行AC分析時的頻率掃描范圍在.AC分析語句中給出。AC分析給出電路的脈沖響應。
5.1.3 瞬態電壓/電流源
對於瞬態分析,可以將電源定義成時間的函數。可以采用的函數有:脈沖、指數、阻尼正弦、單頻FM以及分段線性函數。
5.1.4 混合電壓/電流源
混合電源的定義是為了進行多種類型的分析。例如,可以在定義DC電源時,在相同結點間同時定義AC和瞬態電源。在這種情況下,當進行特定的分析時,Star-Hspice會選擇相應的DC, AC或者瞬態電源。有一個特例是零時間常數的瞬態電源,它將覆蓋DC值,並被用來計算所有分析的工作點。
VIN 13 2 0.5 AC 1 SIN (0 1 1MEG)
上面的例子在結點13和2之間同時定義了一個0.5V的DC電壓源、一個1V的AC電壓源和一個阻尼正弦電壓源。當進行DC分析時,程序對其它兩個電壓源采用零電壓值。
5.2 獨立電壓/電流源函數
Star-Hspice提供以下幾種電壓/電流源函數:
- Pulse(脈沖函數)
- Sinusoidal(正弦函數)
- Exponential(指數函數)
- Piecewise linear(分段線性函數)
- Single-frequency FM(單頻調頻函數)
- Single-frequency AM(單頻調幅函數)
5.2.1 PULSE(脈沖函數)
Star-Hspice采用梯型脈沖函數。在第一個上升斜坡前有一段瞬態模擬的初始過渡延遲,以后每個上升斜坡內,電壓或者電流從初始值到脈沖平頂值線性變化,過了脈沖平頂值后,電壓或者電流沿下降斜坡線性變化到初始值。整個脈沖再按某一周期重復變化。
PULSE <(>v1 v2 <td <tr <tf <pw <per>>>>> <)>
或者
PU <(>v1 v2 <td <tr <tf <pw <per>>>>> <)>
其中,
v1 電壓或者電流的初始值。
v2 脈沖平頂值。
td 從瞬態模擬開始到第一個上升斜坡開始前的延遲(單位為秒,缺省為0.0,
並且當設置td < 0.0時,同樣取td=0.0)
tr 從初始值到脈沖平頂值的上升斜坡的時間(缺省為TSTEP)
tf 從脈沖平頂值返回到初始值的下降斜坡時間(缺省為TSTEP)
pw 脈沖寬度(脈沖平頂部分的寬度)(缺省為TSTEP)
per 脈沖的重復時間(單位為秒,缺省為TSTEP)
例子:
VIN 3 0 PULSE (-1 1 2NS 2NS 2NS 50NS 100NS)
V1 99 0 PU lv hv tdlay tris tfall tpw tper
第一個例子在結點3和地之間定義了一個脈沖電壓源。脈沖的輸出高電壓為1V,輸出低電壓為-1V,初始延遲為2ns,上升和下降時間均為2ns,脈沖寬度為50ns,周期為100ns。第二個例子中所用到參數值應該有相應的.PARAM語句定義。
脈沖時序表
時刻
電壓或電流值
0
v1
td
v1
td + tr
v2
td + tr + pw
v2
td + tr + pw + tf
v1
tstop
v1
5.2.2 SIN(正弦函數)
Star-Hspice采用阻尼正弦電壓/電流源,即電壓或電流值為一衰減指數因子與一正弦波的乘積。使用時要求給出正弦波的頻率、指數衰變因子、初始相位以及波形的初始時刻(詳細見下面說明)。
SIN <(>vo va <freq <td <θ<φ>>>> <)>
其中,
vo 電壓或者電流的直流偏移量(單位為V或者A)
va 電壓或者電流的幅度(單位為V或者A)
freq 頻率(單位為Hz ,缺省為1/TSTOP)
td 延遲時間(單位為秒,缺省為0.0)
θ 阻尼因子(單位為1/秒,缺省為0.0)
φ 初始相位(單位為度,缺省為0.0)
輸出函數為:
例子:
VIN 3 0 SIN (0 1 100MEG 1NS 1e10)
這個例子在結點3和地之間定義了一個阻尼正弦電壓源。波形峰值為1V,直流偏移量為0V,頻率為100MHz,時間延遲為1ns,阻尼因子為1e10,初始相位為0。
5.2.3 EXP(指數函數)
EXP <(>v1 v2 <td1 <t1 <td2 <t2>>>> <)>
其中,
v1 初始的電壓或者電流值(單位為V或A)
v2 電壓或者電流的脈沖值(單位為V或A)
td1 上升延遲時間(單位為秒,缺省為0.0)
td2 下降延遲時間(單位為秒,缺省為td1+TSTEP)
t1 上升時間常數(單位為秒,缺省為TSTEP)
t2 下降時間常數(單位為秒,缺省為TSTEP)
輸出函數為:
例子:
VIN 3 0 EXP (-4 -1 2NS 30NS 60NS 40NS)
5.2.4 PWL(分段線性函數)
PWL <(>t1 v1 <t2 v2 t3 v3…> <R <=repeat>> <TD=delay> <)>
或者
PL <(>v1 t1 <v2 t2 v3 t3…> <R <=repeat>> <TD=delay> <)>
其中,
v1… 定義電壓或者電流值
t1… 定義時間段的值
R 設置函數循環重復
repeat 定義波形重復的起始點
TD 是定義分段線性波形在開始前有一段延遲的關鍵詞
delay 定義分段線性波形在開始前有一段延遲的延遲量
每一對(t1, v1)定義時刻t1時的電壓或電流值為v1。每兩個時間點之間的電壓或電流值線性變化。用參數"R"來設置函數被循環調用,可以在"R"后面加一參數用來指定函數從什么地方開始循環,但必須設置在函數的間斷點處,例如,如果t1 = 1,t2 = 2,t3 = 3,t4 =4,則"repeat" 可以等於1,2,或者3。
此外,可以采用DADA語句來定義PWL:
PWL (TIME, PV)
.DATA datanam
TIME PV
t1 v1
t2 v2
t3 v3
t4 v4
……
.ENDDATA
.TRAN DATA=datanam
其中,
TIME 提供給DADA語句的時間值參數
PV 提供給DADA語句的幅值參數。p
這種輸入方式可以將一個模擬的結果作為另一個模擬的輸入。最后一定要加瞬態分析語句。
5.2.5 SFFM(單頻調頻函數)
SFFM <(> vo va <fc <mdi <fs>>> <)>
其中,
vo 輸出電壓或者電流的直流偏移量(V或A)
va 輸出電壓或者電流的幅度(V或A)
fc 載波頻率(單位Hz,缺省為1/TSTOP)
mdi 調制系數(缺省為0)
fs 信號頻率(單位Hz,缺省為1/TSTOP)
輸出函數為:
5.2.6 AM(單頻調幅函數)
AM (sa oc fm fc td)
其中,
sa 信號幅度(缺省為0)
fc 載波頻率(缺省為0)
fm 調制頻率(缺省為1/TSTOP)
oc 偏移量(缺省為0)
td 一開始的延遲時間(缺省為0)
輸出函數為:
- 電壓和電流控制源
受控源的定義相當繁瑣,而且在我們工作中不大可能遇到,故略去。
(原文地址:http://hi.baidu.com/yong_delta/item/728be3427212a83810ee1e53)