在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 10470|回复: 17

[原创] SPICE简史(2)

[复制链接]
发表于 2015-9-12 12:02:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

SPICE2SPICE3


70年代初期,伯克利电子系用的计算机是CDC6400大型机,它的运算能力相当于286(它的时钟频率是10兆赫,可它的成本是六百万美元。再看看今天你手中的iPhone,它的时钟频率超过1000兆赫,成本不到六百美元这是一百万倍性价比的差别!)分给每个学生的主内存白天为256K字节。到了晚上人少,你就可得到384K。运行一个不算太大的电路仿真,用Nagel的话来说,就像把你11码大的脚穿进婴儿的鞋里你得想尽一切办法节省内存。能仿真的最大的电路规模也就是25个双极晶体管(相当于50个电路节点)。而且,那时候SPICE还只有双极晶体管模型。71年的秋季,从贝尔实验室来到伯克利的DavidHodges教授带来了第一个MOSFET模型: Shichman-Hodges模型。如果你用过SPICE(并且年头足够多的话),你应该知道这就是Level1 MOSFET 模型。它是所有MOSFET模型的鼻祖(下面我们还会讲到MOSFET模型的)。


1975Nagel从伯克利博士毕业。他的论文“SPICE2:A COMPUTER PROGRAM TO SIMULATE SEMICONDUCTOR CIRCUITS”, 成为了EDA行业被引用最多的文章。


SPICE2这个版本基本上奠定了今天电路仿真程序的基石,其中包括:改进的节点分析法(ModifiedNodal Analysis),稀疏矩阵解法(Sparse Matrix Solver),牛顿-拉夫逊迭代(Newton-RaphsonIteration),隐性数值积分(ImplicitNumerical Integration),动态步长的瞬态分析(Dynamic Time Step Control),局部截断误差(LocalTruncation Error),等等-- 说太多技术细节了,还是接着讲故事吧。


Nagel毕业后去了贝尔实验室。从此以后,SPICE2的改进就由Nagel的室友,EllisCohen,继续进行下去。Ellis是个计算机编程能手。用当时周围学生的话说,他就是一个长成人形的计算机。是他(以及后来的AndreiVladimirescuSally Liu)把学校里开发的程序SPICE改造成了实用的SPICE2G6。在SPICE的早期开发中,他是个无名英雄。今天工业界里的很多商业SPICE就是基于SPICE2G6开发出来的。


这是Nagel博士论文的封面。


nagel_dissertation1.png




你可以用下面的链接下载这篇论文:



http://www.eecs.berkeley.edu/Pubs/TechRpts/1975/9602.html

如果你想了解SPICE的核心秘密,就下载一份好好读读吧!


最早的SPICE2没有用户界面。它的运行是批处理方式。也就是说,你准备好了你的电路描述和仿真命令,就把它们提交给主机系统里。然后呢?然后你就可以下班回家了(多好啊)。因为你的几十个(或几百个)同事也在做着同样的事。这就好像在一个银行里只有一个办事员(主机),而有几百个顾客(提交的仿真任务)排着队。这个办事员动作又慢(286的速度)。所以,等第二天早上上了班再看结果吧!(下面在讲HSPICE时我们还会讲到这个情况)。


SPICE2的输入是用打卡。你可能会问:什么是打卡啊?呵呵,祝贺你年纪够小。对那些年过半百的人,最初接触到的计算机输入界面就是像下面这样的卡:


punch_card.png


你把你的电路描述及仿真命令打在一叠这样的卡上,然后放到读卡机里。你可能听说过SPICE的输入叫“SPICE DECK”,这个名字就是从这叠卡来的。


SPICE2的输出是行打印机。是的,就是用下面这样的打印机打出仿真结果在纸上(想象一下那时消耗了多少纸张)。


line_printer.png




你也可以打印输入输出的信号波形。每个波形是用不同的字符画的。像下面这样(看着是不是很粗糙啊):



character_plot.png



有同学读SPICE手册时会看到一个奇怪的选择项叫”NOPAGE“。这是因为SPICE的输出在页与页之间的折线处会加入一个分页符,留出空白。这个选项就是要求不要停止打印的。这样一来,波形就不会因为换页而在页与页之间断掉了。随着行打印机的消失,这个选择项也进入了历史。呵呵,如果有谁知道这个选项,那他的年龄至少在40岁以上。


后来SPICE2的输入/出也进化成了文件输入/出,像下面这样:
spice2g6_output.png


到了八十年代,SPICE2已经遍及了各个大学。但它的问题也显现出来:FORTRAN代码太难维护,加新的器件模型需要改动的地方太多,等等。在此同时,C作为一种新的程序语言正方兴未艾。于是,用C语言重新写SPICE就被提到了议事日程上来。这个任务被伯克利的ThomasQuarles89年的时候完成了。比起SPICE2来,SPICE3增加了用户界面,你可以使用命令,甚至命令串来控制程序。另外,还增加了图形界面看波形。更重要的是,SPICE3的程序构架更加清晰,更加模块化。维护及修改起来更加容易。八十年代也是计算机硬件突飞猛进的时代:大型机(mainframe)被工作站(workstation)取代。UNIX及架构在它上面的C-shellX-window成为软件开发及应用的基本框架。另外,个人电脑(PC)也越来越普及。这些都为SPICE的广泛应用打下了坚实的基础(下面我们讲商业SPICE时会提到)。



这是Quarles论文的封面。
quarles_dissertation.png




同样,你可以用下面的链接下载Quarles的论文http://www.eecs.berkeley.edu/Pubs/TechRpts/1989/ERL-89-46.pdf 下面是SPICE3(版本3f5)的执行语句,注意它是交互式的。每一个“Spice<number>->”后面是一个Spice3的命令。比如“source”就是把电路读入,“run”就是运行,”display”就是显示,”quit”就是退出。

spice3f5_output.png


SPICE3自带了一个图形模块nutmeg。下面是nutmeg显示的波形,是不是比SPICE2的行打印的字符波形好看多了?
nutmeg_plot1.png





自从上世纪九十年代后,学术界SPICE的发展基本就停止在SPICE3f5这个版本了。这是不是意味着SPICE停滞不前了呢?非也。至少在两个方向上SPICE还在一直发展:一个是器件模型(特别是MOSFET模型),另一个是商业SPICE程序。(这里值得提一下,有一批SPICE的爱好者及高校把SPICE3f5接过来,并整合了其他几个开源软件(xspice,cider, gss, adms,等),建成了ngspiceNgspice也在缓慢的进化着,但比起商业SPICE进化的速度慢多了。你可以在sourceforge上找到ngspice。)



(待续)
发表于 2015-9-13 15:47:20 | 显示全部楼层
好贴呀!
发表于 2015-9-14 10:59:54 | 显示全部楼层
收看中。。。。。。
发表于 2015-9-14 15:53:00 | 显示全部楼层
期待楼主………………
发表于 2015-9-19 16:07:08 | 显示全部楼层
good!
发表于 2015-10-9 13:07:47 | 显示全部楼层
good article
发表于 2015-10-11 14:45:14 | 显示全部楼层
楼主辛苦了!
发表于 2015-10-11 17:47:21 | 显示全部楼层
回复 2# wang1991


    thanks
发表于 2015-10-28 14:49:38 | 显示全部楼层
本贴从 谈天说地 板块移动过来的,感觉到更适合本版块。
发表于 2016-4-11 22:46:26 | 显示全部楼层
本科四年,都没用过SPICE,我大三下学期才知道这个软件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-3 01:16 , Processed in 0.036837 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表