工程学科的著名教授,其“青史留名”,不在于他发表了多少论文,更重要在于其为工业界的直接贡献。本人在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之父”的头衔。
原文发布时间为:2018-06-11
本文作者:王志华