一言以蔽之:模擬軟體是設計積體電路不可或缺的EDA工具。
有了電晶體的model以後,我們還需要模擬軟體來輔助,因為總不可能都是用手算的,SPICE就是這樣的模擬軟體。
SPICE,全名是Simulation Program with Integrated Circuit Emphasis(以積體電路為重點的模擬程序),這個名字真的是很奇怪的英文,尾巴特別放了一個emphasis字眼,完全說不通,我覺得當年命名就只是為了要拼湊出spice香料這個可以發音的字。
SPICE也是在柏克萊大學被開發出來的。順帶一提的是,柏克萊大學和史丹佛大學與美國矽谷的距離都不到50英里,也就是一個小時可以到達的車程,所以這二所大學的電子電機系所跟矽谷有很深的淵源,如同早年竹科都是交大人的地緣關係。
第一代的SPICE1在1973年被開發出來,第二代的SPICE2在1975年被開發出來,前二代的SPICE都是用Fortran語言寫的,因為當時沒有一般家庭電腦,跑這些模擬都是在大型電腦上跑的,所以會使用Fortran這種structured programming的語言來撰寫。第三代的SPICE3在1989年誕生,就改用C語言了。
學生時代沒有好的schematic繪圖軟體,所以都要直接編寫SPICE。以HSPICE為例子,這就是一顆inverter的netlist:
.subckt inverter in out vdd vss m1 out in vdd vdd p_18 l=0.18u w=0.5u m2 out in vss vss n_18 l=0.18u w=0.5u .ends
其中subckt是sub circuit的意思,m1和m2分別是PMOS和NMOS,每一行MOS裡面依序為drain/gate/source/bulk/p,n/length/width,最後的ends表示end sub circuit。
現在回想起來,還真的是很苦命,這種手寫netlist的流程是怎麼可能把電路做大呢?所以就有很多商業公司會出schematic繪圖軟體,畫完電路就可以直接輸出netlist。
SPICE後來有幾個重要的商業分支,包括Cadence的Spectre、Synopsys的HSPICE、Mentor的Eldo,這些都是傳統的SPICE,就是滿足克希荷夫電路定律去解Jacobian Matrix。後來隨著電路越來越大,也有EDA廠商開發fast SPICE,簡單地說,就是犧牲一些解析度或準確度,來換取計算的效率。