1973-SPICE#
案件摘要#
1973 年,Berkeley 的 Laurence Nagel 與 Donald Pederson 發表 SPICE(Simulation Program with Integrated Circuit Emphasis),把電路設計從「麵包板試誤」變成「電腦數值實驗」。此後五十餘年,幾乎每一顆晶片在流片前都先在 SPICE 的後代裡跑過一遍。
前因 -- 為什麼會有這個案子#
- 1960 年代末 IC 複雜度暴增(摩爾定律發動),靠麵包板驗證電路已不可能:晶片上的電路無法插在麵包板上。
- IBM 有內部程式 ECAP,Berkeley 有 CANCER(Computer Analysis of Nonlinear Circuits, Excluding Radiation)——後來改名 SPICE 以去除敏感字眼並公開釋出。
- 需求:通用、免費、能在學校與公司的小型機上跑、支援 MOS 元件模型的電路模擬器。
- 線索:電路方程本質上是非線性微分代數方程組,可由數值方法系統化求解。
線索與推理 -- 數學式、程式、理論#
SPICE 架構#
三層管線:網表解析 → 方程組建立 → 數值求解。
1. 修正節點分析(Modified Nodal Analysis, MNA):對每個節點寫 KCL( \(\sum I = 0\) ),用元件的伴隨模型(companion model)把非線性/動態元件線性化後塞進矩陣:
其中 \(G\) 是稀疏導納矩陣, \(x\) 是節點電壓(與部分支路電流)向量。
2. Newton-Raphson 非線性求解:含二極體/MOSFET 的電路方程 \(f(x)=0\) 非線性,迭代求解:
其中雅可比矩陣 \(J_f = \partial f/\partial x\) 。MOSFET 飽和電流模型:
每次迭代把元件在其工作點線性化(等效為電導 + 電流源),直到 \(|f(x_k)| < \varepsilon\) 收斂。
3. LU 分解:矩陣求解 \(Gx=b\) 不直接求反矩陣,而做稀疏 LU 分解 \(G = LU\) ,先解 \(Ly=b\) (前代)再 \(Ux=y\) (回代),複雜度 \(O(n^3)\) 降為稀疏情形近似 \(O(n)\) 。SPICE 的稀疏矩陣技術(Sparse matrix package)是它能處理數百節點電路的關鍵。
元件模型(BSIM)#
- SPICE 2 用 Level 1–3 MOS 模型(平方律、經驗修正)。
- 短通道效應(速度飽和、亞閾值漏電、DIBL)使簡單模型失效,Berkeley 在 1980–90 年代發展 BSIM(Berkeley Short-channel IGFET Model)系列,今日 BSIM4/BSIM6 是晶圓廠交付 PDK 的標準模型。
- 模型參數透過參數萃取(從實測 I-V 曲線擬合)取得,例如用最小平方法最小化 \(\sum_i (I_{meas,i} - I_{model,i}(p))^2\) 。
瞬態分析: \(\frac{dx}{dt}\) 的數值積分#
瞬態分析解微分方程 \(\frac{dx}{dt} = f(x, t)\) (如 \(C\frac{dv}{dt} = i\) )。SPICE 用隱式方法保證穩定:
後向歐拉(Backward Euler):
一階精度,但無條件穩定,適合剛性(stiff)電路。
梯形法(Trapezoidal)(SPICE 預設):
二階精度;SPICE 再搭配 LTE(局部截斷誤差)控制自動調步長,以及 Gear 法處理梯形法的振鈴問題。
Python:簡單 nodal analysis 解 RC 電路#
用後向歐拉 + MNA 解「電流源對並聯 RC」: \(\;C\frac{dv}{dt} + \frac{v}{R} = I\) 。
import numpy as np
import matplotlib.pyplot as plt
R, C, I = 1e3, 1e-9, 1e-3 # 1kΩ, 1nF, 1mA
dt, steps = 1e-8, 300
G = np.array([[1/R + C/dt]]) # 後向歐拉的 MNA 伴隨矩陣
v = np.zeros(steps + 1)
for n in range(steps):
b = np.array([I + C/dt * v[n]]) # 電容電荷歷史項
v[n+1] = np.linalg.solve(G, b)[0]
t = np.arange(steps + 1) * dt
plt.plot(t*1e9, v, label='backward Euler')
plt.plot(t*1e9, I*R*(1-np.exp(-t/(R*C))), '--', label='analytic')
plt.xlabel('Time (ns)'); plt.ylabel('V (V)')
plt.title('Nodal Analysis: RC circuit'); plt.legend(); plt.show()
SPICE 衍生家族#
- SPICE 2(1975, Nagel):C 語言重寫前身,成為業界事實標準。
- SPICE 3(1985):C 語言、X 視窗、BSD 授權釋出。
- HSPICE(Synopsys):商業強化版,簽核(sign-off)標準。
- LTspice(ADI):免費商業版,以高速求解器聞名。
- ngspice:開源後繼者,SPICE 3f5 的延續。
結案 -- 後果與影響#
- Pederson 堅持免費公開釋出 SPICE,使它成為 EDA 產業的種子:Cadence、Synopsys、Mentor 皆由此發芽。
- 「先模擬、後流片」成為 IC 設計鐵律;模擬正確性直接決定數百萬美元的流片成敗。
- BSIM 模型 + SPICE 求解器 + PDK,構成今日晶片設計的基礎設施三件套。
- 教育影響:全世界電機系學生都用 SPICE 學電路,Pederson 獲 1997/1998 年 IEEE 榮譽獎章級肯定。
關鍵人物與文獻#
- Donald Pederson(1925–2004):Berkeley 教授,SPICE 計畫推手,堅持開放釋出。
- Laurence Nagel:SPICE 主要作者,博士論文 "SPICE2: A Computer Program to Simulate Semiconductor Circuits," UC Berkeley, 1975.
- L.W. Nagel & D.O. Pederson, "Simulation Program with Integrated Circuit Emphasis," Midwest Symposium on Circuit Theory, 1973.
- BSIM Group, UC Berkeley, https://bsim.berkeley.edu