電路模擬軟體SPICE 介紹

SPICE,全名為

Simulation Program with Integrated Circuit Emphasis

「特別為積體電路模擬的程式」

 

Contents

1. SPICE Overview

Ø        發展歷史與由來

Ø         SPICE 的使用範圍

2. Simulation Input and Controls

Ø        SPICE 直流電路模擬演算法

Ø         SPICE 暫態電路模擬演算法

Ø        SPICE 資料分析類別

直流分析

 

交流小訊號分析

Ø      SPICE 核心功能特色

最佳化功能(Optimization)

 

信號一致性(signal integrity)

 

傳輸線(transmission line)模型

Ø        SPICE 系統資料流程

Ø        編寫 SPICE 檔案

3. Applications Demonstration


Ø        H-SPICE Applications Demonstration

範例一

 

範例二

 

參考資料:

Hspice積體電路設計分析與模擬導論 蕭培墉 吳孟賢

國研院國家晶片系統設計http://www.cic.org.tw/cic_v13/main.jsp

 

Star-Hspice Manual

 

Introduction to Hspice  Jiun-Wei Horng

 

The Life of SPICE  Laurence W. Nagel

 

 

 

1.  SPICE Overview

 

發展歷史與由來

 

SPICE是一種應用於電路描述與模擬的語言與模擬器軟體,目的在檢測電路的連接和功能的完整性以及預測電路的特性與行為。主要使用在模擬電路與混合信號電路的模擬。由此我們便可以清楚地了解到SPICE這套程式原先發展的目的是為了模擬電子電路系統中日益重要的積體電路(integrated circuit)

 

為了提高積體電路正式生產時的良率及降低成本,勢必要在進入實際製程階段前對其電路特性做「檢查」,確保電路系統在使用規格範圍之內。

 

近幾年來,因為製程技術的演進以及產品市場週期的減少,使得產品由設計到完成的時間大幅被壓縮,若設計上有錯誤,則晶片生產到完成的時間也等於是浪費,正因如此,為了提高積體電路正式生產時的良率及降低成本,勢必要在進入實際製程階段前對其電路特性做檢驗及測試,確保電路系統在使用規格範圍之內,運用這些模擬軟體,我們可以提早檢驗出電路設計上的問題。

 

SPICE是在1975年由學者Donald O. Pederson在加里福尼亞大學伯克萊分校電子研究實驗室 (EECS Department of the University of California at Berkeley) 首先建立的。第一版和第二版都是用Fortran語言編寫的,但是從第三版開始用C語言編寫。

 

SPICE有好幾種版本,成功的商業版本主要有SPECTRE (由最初的SPICE作者之一 Ken Kundert Jacob White 開始最初的框架) HSPICE  (最初由MetaSoftware開發,現屬於Synopsys) Eldo (最初由Anacad公司開發,現屬於Mentor Graphics) 等。其後由於電路設計規模的級數級增長,舊版本的SPICE的模擬速度遠遠不能滿足需要,並且對電路規模大小也有限制,業界發展了快速SPICE

 

今日在市面上所能看到的許多SPICE同類軟體:如OrCAD PSpice (OrCAD)HSPICE (Synopsys)IS-SPICE (intusoft)IG-SPICE

(A. B.Associates)I-SPICE (NCSS timesharing) 等,均是以SPICE2系列為基礎再加改進而成的商業化產品。

 

目前成功的快速SPICE商業版本主要有 HSIM (最初由NASSADA公司開發,現在NASSDA公司被SYNOPSYS公司購入), NANOSIM (SYNOPSYS, 但有電路規模大小的限制,對敏感的模擬電路也有精度的缺陷,在數字電路模擬方面很成功) ADiT (Evercad20061月被Mentor Graphics併購) ULTRASIM(CADENCE公司的快速SPICE 工具,屬於最新的第三代電路模擬工具)等。目前的這些快速SPICE的主要特點是以犧牲準確性換取速度的大幅提高,因此他們的共同問題是如何在快速的同時保持準確性。

 

SPICE主要發展以H-SPICEP-SPICEIS-SPICE這三種較為常見。P-SPICE常見於PCB Level的電路設計,也常用來作為基本電子電路模擬教學輔助軟體;而IS-SPICE則較適合電機與工業電子的應用設計;H-SPICE則較常應用於業界發產(IC設計)或學術研究,特別是在積體電路設計方面使用,其在 Transistor LevelCell-Based的電路設計上是一套方長優越的輔助工具,對於目前從事IC設計或相關研究的人員而言是一項必備的技能。

Top

SPICE 的使用範圍

 

由於想要取代土法煉鋼的方式分析解決電路設計問題,進而產生了電子設計自動化(Electronic Design Automation, EDA)程式,也發展出了數位模擬器(Verilog)與類比模擬器 (SPICE) 這兩套模擬的設計驗證環境。而SPICE 主要是用在電晶體電路設計,分析類比電路的模擬較多,而主要的功能技術在於解電路方程式,來計算電壓或電流的數值。電路透過主動元件或被動元件的拓撲 (Topology) ,並且配合複雜的SPICE Model 來表現其電路行為。

 

雖然使用SPICE 是一種很好的嘗試,但是SPICE 並非萬能。在某些情況下,設計是會有許多參數上的變異導致性能受到影響,必須依靠經驗來察覺,所以對新系統採用程式化模式設計容易產生偏差。許多人可能會反駁說可以使用SPICE 來實現模擬並觀察這種誤差。仔細的工程師會使用交流分析方法觀察增益誤差在頻率端點處的差異。但這要在完成參數搜尋、查看數據手冊和模型下載的過程之後才能進行。另外,SPICE 是需要依賴精確模型,如果給的模型參數

不夠精確,那麼要正確分析這些例子可能相當困難,甚至不可能實現。此外,使用SPICE 還存在著其它一些重大缺點。不是所有版本的SPICE 都可通用,工程師可能必須重新調整該模型,特別是處理多項聲明時。模擬的收斂也是一個問題,它會導致一些無法預估的結果。而且SPICE不會主動提供哪些參數會導致何種的問題產生,這時候就需要靠經驗去判斷分析結果是否有誤。

 

Top

 

 

2. Simulation Input and Controls

 

SPICE 直流電路模擬演算法

 

直流電路模擬演算法如右圖所示,將讀入的電路做「線性、收斂」求解。首先讀入電路檔,將此電路依照上述方式將節點和元件分別組合成矩陣。

 

 

 

 

Top

 

 

SPICE 暫態電路模擬演算法

 

暫態電路模擬演算法如下圖所示,將電路的直流電壓解,做「線性、逼近」求解。

 

 

 

 

Top

 

SPICE 資料分析類別

 

SPICE 提供“軟體"電源供應器、訊號產生器、示波器與 網路分析儀之多重功能以完成電路在直流、穩態、暫態與交流頻率領域之分析。SPICE 可以執行各類的資料分析,功能十分強大,以下將逐

項做介紹。

 

直流分析

 

直流分析是SPICE 軟體的核心分析,如上述演算法所示,在暫態或小訊號分析之前都要自動進行直流分析,同時可輸出變數對每個電路參數的小訊號直流靈敏度。直流分析可用於產生直流轉移特性曲線(DC transfer curves),先由直流分析解出電路的節點電壓、分支

電流及確立操作點等,才進行其他後續的分析。

 

SPICE 共有五個主要的直流分析類別:.DC.OP.SENS.PZ .TF。這些敘述中的「.」代表控制敘述之意,而各敘述的特點,主要是利用電路中直流的等效模型為基礎以作各種直流相關的分析,其主要作用如下所示:

 

 

.OP

計算在特定時間或多時間點之條件下的操作點情況(包括節點電壓及各分支電流)

.DC

設定電源、溫度、參數值及直流轉移曲線之掃瞄(SWEEP)範圍

.PZ

極點與零點分析,主要用於頻率響應

.SENS

計算電路中「指定之輸出變數」相對於線路其他元件參數之直流小訊號敏感程度

.TF

計算特定輸出變數對於輸入源之直流小訊號轉移數。此敘述會在輸出結果中自動印出相對增益值、輸入及輸出阻抗

 

由於今日之電子系統或產品有各種電源,在實際電路設計及模擬應用中,.DC 掃瞄提供了同時進行多次不同電源值的分析功能,增加模擬效率。又.SENS 只可對直流電路作敏感度分析,因此如欲於暫態或頻率領域中,觀察各線路參數對特定輸出變數的影響,則需要使用蒙地卡羅分析做模擬。而.TF 亦只是作直流穩太之小訊號轉移函數計算,不適合於模擬頻率掃瞄變化,故交流之輸出入阻抗與增益之變化需作交流分析才可得到正確值。

 

 

Top

 

交流小訊號分析

 

交流分析是探討電路的頻率響應,在複變頻率領域中作分析。SPICE 中主要的交流分析敘述為.AC.DISTO.NOISE.SAMPLE .NET,這些敘述使SPICE 計算出線路在指定頻率範圍之交流輸出變數。基本上,SPICE 執行時首先會解出線路之直流操作點,然後確定電路中非線性元件之線性化模型化參數,並產生小訊號模型且在

使用者指定之頻率範圍內,對此線性化電路作頻率交流分析。

 

交流分析允許下列各項掃瞄:頻率、元件值、溫度參數值、模型參數值、蒙地卡羅之亂數變化、最佳化及交流分析,另外在HSPICE 中的頻率變化亦可做下列應用:雜訊分析、失真分析、網路分析、取樣分析。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.AC

.AC 敘述主要是定義出使用者在電路分析時所指定的掃瞄頻率範圍(start,stop)、掃瞄取樣型態與點數(DEC,OCT,LIN,POI),以及蒙地卡羅分析次數<SWEEP MONTE = VAL>

example

.AC DEC 100 1HZ 1MEGHZ SWEEP MONTE=30

此式說明每10倍頻取樣100點從1HZ1MegHZ的頻率掃瞄分析,並執行30次之蒙地卡羅分析。

.DISTO

此分析敘述之目的是計算線路在一交流暫態分析下之失真特性。其設一或二個信號頻率(f1, f2),則SPICE會根據上述條件計算下列五個合成頻率於指定負載電阻上之失真大小(振幅及相角),包括f1-f2, 2f1-f2, 2f1, 3f1, f1+f2 等,特定之合成頻率。

.NOISE

SPICE 之雜訊是基於電路在直流操作點的條件下,來計算交流節點的電壓複數值。其中雜訊是假設成雜訊貢獻源,與其他電路雜訊源無關,並且作個別計算,總輸出雜訊電壓是各別雜訊貢獻的均方根值之和。

暫態分析

.TRAN

.FOUR

.TRAN主要是在指定之時間範圍中計算電路之解,即所謂的時間掃瞄分析。由於SPICE軟體具有多元性之功能,因此其亦可視為軟體型態或虛擬性之信號產生器與示波器(software signal generator and oscilloscope),利用軟體產生各類行信號的輸入,亦可於頻率領域與時間領域中產生可觀察之結果。

.FOUR分析為在一時間間隔中(Tstop-TfperiodTstop),進行SPICE 進行傅立葉分析。其中的Tstop 是於.TRAN中設定,而Tfperiod是基頻率的一週期,而傅立葉分析是取在欲觀察的時間裡,Tfperiod1/f基頻時間中最後的101點作暫態分析。

example

.FOUR 100K V(7)

此敘述是對節點7之電壓V(7)作傅立葉分析,而100KHZ為基頻。

 

 

 

Top

 

 

SPICE 核心功能特色

以目前之積體電路的複雜度與產品應用面之廣闊度而言,在設計與模

擬電路的過程中,如能藉由模擬軟體提供關鍵項目之分析與驗證,將有助於晶片下線製作的成功率。

最佳化功能 (Optimization)

HSPICE 可提供從元件層次到電路元之最佳化。經由晶片上之測試元件及測試鍵(testkey),與外接儀器(HP4155)的量測,與HSPICE 最佳化功能之間的作用,可提供準確的SPICE 元件參數與模型,以提供給積體電路廠商或使用者。

信號一致性 (signal integrity)

在層次化設計(hierarchical design)過程中,取得各階段(如開關或電晶體層次)所處理信號的一致性(signal integrity),是保證電路設計成功之依據。

傳輸線 (transmission line)模型

由於深次微米製成中連接導線(interconnection)造成之訊號延遲,已與元件響應參數大小接近。在模擬過程中,如增加傳輸線(transmission line)之模型,將更能預估積體電路之實際效能。

 

 

 

Top

 

SPICE 系統資料流程

 

SPICE 包含電路圖輸入、模型資料庫、 電路模擬軟體、以及波形分析與處理軟體等四個主要模組,涵蓋的範圍從繪製電路圖、選擇元件、進行模擬、至波形分析,提供使用者完整的電路設計工具。在繪製電路圖上,不同公司所開發的SPICE 具有不同的功能例如:ULTRASIM 可將電路以圖形方式編輯,相較於以往用網路連接的文字描述方式便利許多,接著我們可將編輯完成的電路圖直接進行模擬,並由波形分析與處理軟體檢測結果,幫助電路設計者不需實際接成電路即可知道設計電路是否達成預期功能,縮短研發時間。上述的SPICE 系統資料流程如下圖所示:

 

 

Top

 

 

編寫 SPICE 檔案

Netlist 檔案、組成的電路元件描述、模擬狀態。

 

Netlist Statements and Elements

類別

 

 

TITLE

. TITLE

標題

註解

* or $

註解

Set-up

.OPTION

用於執行分析與模擬時的各種選項設定

.IC or .NODESET

串接電路或子電路或支電路的節點電壓初始設定

.PARAM

設定串接電路元件的參數值

.GLOBAL

設定整體電路的節點名稱

Source

電壓或電流及數位訊號

設定電路的激勵源 (Stimulus)

Netlist

串接元件

執行模擬的電路元件串接情形

SUBKET and .ENDS

定義子電路的內容

Analysis

.DC or .TRAN or .AC

要執行分析的陳述

Output

.PRINT

建立輸出變數的陳述

.MEASURE

測量計算及回傳使用者自訂的函數

Library

Model

.MODEL

描述一組元件的模型參數

.LIB

指定引用的Library

.PTOTECT

控制輸出檔的Print-Back

Alter

.ALTER

一次模擬可連續執行不同狀況的分析

End

.END

輸入串接檔的結束陳述

 

HSPICE常用元件名稱對照表

C

電容

D

二極體

I

獨立電源:電流源

J

接面場效電晶體 (JFET)

L

電感

M

金氧半場效電晶體 (MOSFET)

Q

雙極性接面電晶體 (BJT)

R

電阻

V

獨立電源:電壓源

X

子電路

 

 

 

Top

 

 

3. Applications Demonstration

 

步驟一  開啟HSPICE

 

HSPICE使用者介面

 

 

 

 

 

 

波形顯示面板

 

 

 

 

Top

 

H-SPICE Applications Demonstration

OP-Amp

Netlist Lib

******* TSMC 0.35 LEVEL_49 MODEL OP LAB.303 CYCU*******

*A.1.1 nchOS HSPICE (LEVEL 49) OP PARAMETERS :

.LIB op

.subckt allenop v+ v- vo

m1   3  v-  1   vss  nch L=1u  W=3u

m2   2  v+  1   vss  nch L=1u  W=3u

m3   3  3  vdd  vdd  pch L=1u  W=15u

m4   2  3  vdd  vdd  pch L=1u  W=15u

m5   1  4  vss  vss  nch L=1u  W=4.5u

m6   vo 2  vdd  vdd  pch L=1u  W=94u

m7   vo 4  vss  vss  nch L=1u  W=14u

m8   4  4  vss  vss  nch L=1u  W=4.5u

c1   2  vo  Cc 

I   vdd 4  dc  bias 

.param bias=30u Cc=3p

.ends

 

 

範例一 .SP file_1 AC Frequency Analysis

* opamp test demo *

.option numdgt=9 measdgt=9

.protect

.lib 'C:\lib\op.lib' op

.lib 'C:\lib\tsmc35.l' TT

.unprotect

 

.global vdd vss

vdd vdd 0 dc 1.65

vss vss 0 dc -1.65

.param freq=1k

 

********opamp********

x_d 1 2 3 op

 

*******circuit describe*****

v1 1 0 ac 0

v2 2 0 ac 1

 

.ac dec 10 10 100meg

.ac vdb(3) vp(3)

.meas ac unitgain when vdb(3)=0

.meas ac phase find vp(3) when vdb(3)=0

 

.end

 

執行模擬完後開啟Acenwaves,點選Volts Mag 3

 

即可顯示

在座標軸上按滑鼠右鍵,選擇set logarithmic scale

點選波形列表的波形,按下主選單PanelsEdit Curves

 

 

 

 

更換成黑色線條,點選主選單WindowsFlip Color更換底色

 

 

 

 

 

 

 

再次觀察相位圖形,點選Volts Phase3重複相同步驟,可得到

下圖是一個在兩個不同面板中分別顯示兩個波形的圖形

 

 

Top

 

範例二 .SP file_2 Transient Analysis Slew Rate analysis

* opamp test demo *

.option numdgt=9 measdgt=9

.protect

.lib 'C:\lib\op.lib' op

.lib 'C:\lib\tsmc35.l' TT

.unprotect

.global vdd vss

vdd vdd 0 dc 1.65

vss vss 0 dc -1.65

.param freq=1k

********opamp********

x_d 1 2 2 op

*******circuit describe*****

v1 1 0 pulse(0v 2v 1n 1p 1p 600n 1200n)

.tran 5n 2u

.probe tran

.save all

.end

根據範例一的步驟可得如下之波形圖

 

 

 

Top