工程學科的著名教授,其“青史留名”,不在于他發表了多少論文,更重要在于其為工業界的直接貢獻。本人在2013年8月也在新浪微博上發表過“工科學者有所成”的說法。現用國外著名教授Spice之父Don Pederson教授的例子說明。
圖1:工程領域的有所成“意味著你的研究成果被工業界所使用,而且社會公認這個是你的研究成果”
SPICE之父DonPederson
本文主要引子Department of EECS, University ofCalifornia, Berkeley的Andrei Vladimirescu教授為A SHORT HISTORY OF CIRCUITS AND SYSTEMS撰寫的文章,該書由我的學生翻譯,即將由清華大學出版社出版1960年代初,硅集成電路(IC)的發明,與原有的由分立元件組成的印刷電路板(PCB)電路不同,人們迫切需要新的設計方法。PCB板的電路系統,可以用實驗板測量檢驗、可以通過試錯來校正。然而,對于集成電路若設計出的電路沒有達到最初的目標,那么它需要重新加工制造才可以修正錯誤。制造過程需要經過很多道工序。而那些無法工作的硅片會被扔掉,這白白增加了成本,延長了IC的上市時間。
工業界的需求:迫切需要一種新的方法來得到首次流片即能工作的硅片。
基礎條件:人們認識到,求解大規模晶體管組成的電子電路的數學方程,可以在計算機的輔助下解決。當時強大的科學計算機——如控制數據公司(CDC,Control-Data Corporation)的6600,已經有能力求解那些IC方程。在這些因素的共同推動下,世界上的許多實驗室都開始嘗試開發這樣的計算機程序。
加州大學伯克利分校(University of California at Berkeley)的Don Pederson在1962年就認識到了IC將會對世界產生的巨大影響,他首先在大學中建造了第一個半導體制造工廠;他也看到了計算機輔助設計的需求。在Don的支持下,在1969-70年,青年教授Ron Rohrer在研究生班中組織了一個有關計算機輔助設計(CAD,Computer-Aided Design)的班級課題。這個項目的目標是“開發出最好的集成電路仿真程序”。該程序需要實現的主要任務是快速獲得模擬集成電路的直流工作點;在早期的半導體工業中,線性雙極型IC——例如運算放大器,扮演了十分關鍵的角色,而運算放大器的性能的發揮完全有賴于正確的偏置。
班上的學生們編寫的不同代碼被Larry Nagel整合成了單一的、完整的程序,名為CANCER(Computer-Aided Nonlinear Circuit analysis ExcludingRadiation)[1],它能夠進行直流(DC)、交流(AC)以及時域瞬態分析。當然,當時的CANCER并不完善,存在一些問題;首先,它有一個不討人喜歡的名字,此外,更重要的一點是,它是一個專有(proprietary)的程序。這一點是與Don Pederson的思想相悖的。Don Pederson始終秉持這樣的信條:大學的研究應當是公開的,應當有助于科學的進步。經過進一步的研究改進之后,一個擁有新的名字的仿真器——SPICE產生了。SPICE1于1971年秋首次公開發布。在四十多年后的今天,在一塊芯片上已經能集成數十億個晶體管的今天,市面上已經有了各種各樣的商業版本和公開發行版本的SPICE;SPICE也已經演變成了IC設計的標準,用在了所有的晶體管級電路的設計中。
SPICE1以電路描述語言為起點,帶來了一系列的創新,如今,這種語言在不同的IC CAD工具中事實上只是形式上有變化而已;此外,它還包含了很多算法創新,如關聯矩陣電路表示、節點-基準電壓(node-to-datum voltage)解決方案、稀疏矩陣算法、Newton-Raphson迭代和隱式數值積分等。這一系列算法統稱為直接解法(direct-methods solution)[2]。
SPICE1的用戶為UC Berkeley所有電路課的學生,以及一些來自產業界的“友好的”設計人員。他們給出了很多非常有價值的反饋,指出了第一版的SPICE的缺點。其中最重要的幾個缺點與編譯時聲明的元件數量、電壓源接地限制(節點-基準電壓方程)和固定時間-步長積分等問題有關。
以上的這些缺點促使人們進行更進一步的研究,并于1975年首次發布了SPICE2。早期的SPICE 2A和2B兩個版本只解決了后兩個問題——節點-基準電壓方程被替換成了改進節點分析(MNA,Modified-Nodal Analysis),此外,程序中還加入了一個可變時間-步長的算法 [3];而元件數量限制直到1976年才由Ellis Cohen在SPICE 2D中解決;Ellis重新構建了數據結構,并用Fortran寫了一個內存管理包,它不需要依賴于各種元件(如晶體管、電阻、電容)的數量,就能將計算機的可用內存分配給電路。
到此,SPICE2已經具備了廣泛應用的條件,而且UC Berkeley的電子研究實驗室(ERL,Electronics Research Laboratory)的準備工作也已經到位,他們把這個程序包括源代碼和文檔發布出去,給任何感興趣者。
然而,在產業界這一程序并沒有獲得一致的認可;實際上仍存在著一大批懷疑者,他們以Bob Pease為首——Bob Pease在《電子設計》(Electronic Design)雜志上開有一個專欄,題為“這個辛辣(spice)的東西到底是個什么玩意兒?(What’sAll This SPICEY Stuff, Anyhow?)”,并寫道,“沒有什么事情是SPICE能做到而我不能手工做到的”。對于一項顛覆性的技術來說,只有人類自己才是技術可能遇到的阻力;不過,隨著IC復雜度的提升,該技術的使用者越來越多,到了70年代末,絕大部分半導體公司都已經用上了SPICE。
隨著該程序在產業界的廣泛使用,對其進行進一步改進和補充也提上了日程;Don Pederson把這個挑戰交給了Andrei Vladimirescu。要解決的關鍵問題是所得結果的魯棒性,而它由牛頓迭代算法的收斂性與否決定。SPICE的2F和2G版本對算法進行了一些改良,如基于實際電導值的電路矩陣重排序(旋轉)、工作點(operating point)解的連續方法(continuation methods)、來自于牛頓迭代法的個性化器件(device-specific)限流算法等。SPICE 2G6 [4]在1980年發布,并由UC Berkeley免費分發,可以說,它是由大學開發的、最強大(robust)的軟件。SPICE 2G6強大的產業實力是當時剛剛開始的HSPICE項目的基礎,而HSPICE今天已經成為了商業SPICE仿真器的市場領導者。
像惠普(Hewlett Packard)、模擬器件公司(Analog Devices)、泰克(Tektronix)、德州儀器(Texas Instruments)等大公司紛紛組建了它們自己的CAD部門,招攬了如DickDowell、Steve Hamm、Graham Boyle和Burt Epler等SPICE專家,在這些專家的幫助下將Berkeley的程序改編,以滿足它們自己的具體需求。從70年代后期到80年代初期的近十年的時間里,Berkeley與產業界的SPICE專家們之間的交流是持續而開放的,后者提供關于錯誤修復和改進的反饋,而前者將這些反饋應用于后來發布的版本中。這是一個大學與產業界協作的獨特案例,這樣的合作使整個半導體領域受益匪淺。
圖2 唐·佩德森(Don Pederson)
20世紀70年代末,UC Berkeley發布了伯克利標準發行(BSD,Berkeley Standard Distribution)Unix操作系統——一個從Bell實驗室發明的Unix系統衍生而來的操作系統。與Unix密切相關的C語言,提供了應用程序與設備的交互。Tom Quarles著手進行了SPICE2的重構,并將它的數據結構從Fortran轉換為了C;SPICE3于1983年發布,它是一個具有圖形功能的交互式程序。人們對SPICE3的改進與補充一直在進行著,直到1993年UC Berkeley發布了它的最后一個版本SPICE 3f5——它的求解算法已經完全成熟了,人們無法想象還有什么進一步的研究項目可以進行。
1998年,由于在SPICE項目中扮演了最重要的角色,以及SPICE已經在事實上被采用為了IC設計的標準,Don Pederson被授予了IEEE金獎(Gold Medal);同時,他也正式獲得了“SPICE之父”的頭銜。