在开源Spice仿真器上使用IBIS模型资料 “之一”

备注:

对此贴文有兴趣的读者或可继续在 [Part 2] 得到更多相关资讯,并至 [Free Web App] 使用此一模型转换流程的免费工具。

IBIS to Spice:

系统完整性分析中,大部份的建模流程都专注于由原始设计(Transistor)透过Spice网表格式转成为IBIS模型。但基于以下数点的考量,我们也常发现相反的建模流程、即从IBIS转成相对应Spice的函式库格式 (Subckt library)亦有其存在的价值:

  • 支援开源或免费的仿真器: 网上有数款开源或免费的Spice仿真器, 如 Berkeley 3f5, eispice, ngspice, LTspice 等等。这些仿真器多将重点放在芯片上的BSIM模型或厂家所出产的元件, 如LTSpice的稳压器(Voltage Regulator)等等;当用在系统分析上时,虽然它们对传输线大多也都有相当程度的支援,但对于输出入用的缓冲器(常以IBIS模型资料形式出线)的支援则是付之阙如。在没有原始设计的Transistor网表、又不能使用相对应的IBIS模型情况下,这些免费的仿真器就只能束之高阁了。当然若有足够的经验及能力,吾人也可编程而直接在这些开源软件里加入对IBIS等的直接支援, 但这过程是需要相当时日才能完成的。比起若能直接透过某种流程而能将现有IBIS资料转成这些Spice也能直接使用的模型而言,后者的所需的工程便小得多。而且若这流程是建于Spice之外,则当工程师有需要快速地做些完整性仿真时,便可运用手上任何一款的相容仿真器而不用另外使用特别编译的软件。
  • 让模型供应商能提供公用的参考资料:IBIS本身虽是业界公用的格式,但其在仿真器内的实际体现则依不同厂家而有不同。在理想情况下,不同的仿真器对同一IBIS模型的运作应会生成近似的结果。为了达成这个目标,IBIS制定委员会也定出了”Golden Waveform”的资料格式以便模型使用者能对所用的仿真器的精确性能有所初步的检定。实际上,这个”Golden Waveform”并非强制性地需在IBIS模型内提供而许多模型也都对此付之阙如;故而有些模型供应商 、如美光半导体,便转而提供编码过的Hspice原始设计网表以做为仿真的参考。如此一来,它的模型使用者便必需要有Hspice才能仿真编码过的设计。我们认为若能在现有IBIS模型之外,更提供一未编码Spice网表而且它可透过人人可免费得到的开源Spice来仿真进而得到与IBIS极近似的结果,反而更能体现IBIS在业界是公用格式的精神。
  • 外显地实现IBIS的运作原理及流程更具教育性及参考价值:网上随便一找都可以发现很多谈到IBIS内部运作原体的论文及简报。这些内容或可以供大致了解模型运作的过程所需,但魔鬼多藏在细节理,模型实际上多以C/C++编程、实现且运作于仿真器内而非外人所知;我们认为, 若能将这些原理以外显的方式实际以Spice的格式呈现出来,进而能透过仿真而产出和其它商用软件极近似的结果,则更富教育意义且具参考价值。
  • 开发流程的考量:仿真器是系统整合分析流程里重要而不可或缺的一环 (场解器亦如是);做为一分析工具供应商,我们有以下数种选择以便能在开发的流程里有仿真器可做运用:1.与市面上已具规模的仿真器供应商合作而要求我们的客户都必需要有一分License; 2.内部从无到有自行研发; 3.使用现有的开源且有声望的仿真器。上述选项各有其优缺点且不互斥。对于一新创公司如我们而言,需要在有限的时间及资源内为客户提供最高CP值的工具,则第三个选项、即使用开源版本并再加以改良、便成为最具吸引力的选择。

市面上已有数家公司提供Ibis2Spice的流程。它们之中免费的版本多提供到IBIS Ver 2.1的转换支援。即便是付费的版本也只支援到Ver 3.2。再者,它们所转出的Spice模型多不能直接在开源Spice上所使用。我们开发的目标是要能支援到Ver 5.1的电流资讯、亦即[ISSO] 及 [Composite Current]等资料的运用以能做SSN的噪声分析。在含此文第二部分的这两篇贴文里,我们将对本公司所开发的Ibis to Spice流程做一简介。首先会谈及的是如何运用IBIS里的Ramp Rate来转换出相对应的Spice模型,而后要谈及的是更精确的、即运用Waveform data来建立模型。两者我们都会佐以和其它商用仿真器对同一IBIS模型仿真的结果来证明此流程的可行及结果的精确性。

流程开发的目标:

  • 转出的模型能直接在开源仿真器、 如Spice3f5 及NgSpice上运作
  • 支援电压部份的Waveform data (Ver 3.2 andup)及电流部份的Composite current (Ver 5.1  and up)
  • 能与其它的业界所常用仿真器产生极近似的结果。

由IBIS里的RAMP资讯做IBIS to Spice的模型转出:

首先我们来看一下现有以RAMP为主的Spice模型转换,因市面上其它工具所转出的模型不能在免费Spice上直接使用,在我们的免费工具SPILite里,我们也已加入类似的功能以便能直接使用NgSpice。这部份的流程主要是将原IBIS模型里的RAMP资料取出并用于瞬态仿真时。静态电流部份、即PowerClamp, GroundClamp, PullUp及PullDown的资料则是用免费Spice里支援的ASRC有源元件来实现。这部份在下一贴里所将提及的:用IBIS里的Waveform来转出Spice模型里,将做更多的应用。

在网上搜寻Ibis to spice则会找出一篇贴文:IBIS to Spice Translation (part 1), 在此文中,原作者讨论了市面上其它工具做Spice模型转出的工作原理、及他所试图改进的设计及结果。他也提供了一Awk程序以便能将原始Spice模型在当时的免费Spice里使用。由于这篇贴文是十多年前所写,当时很多的观察在今日均已不再适用。比如说:现今公版的NgSpice已可直接读入如X+-3.2的语法而毋需再将其转成X-3.2, 故其Awk程序似已无用武之地。无疑的,由于文中所提之商用工具最后更新似是在1998年,原理图至今仍未做更动,故就研究其运作原理而言,原贴文还是有其参考价值。

上述贴文的第二部份是如何将利用Ramp资料来运作的原理图。在网上要找到原文恐怕比第一部份难得多,我便将其重贴于下以省读者的时间:

原理图中的主要原件是四个静态电流元件,即XPWRCLAMP, XGNDCLAMP, XPULLUP 与 XPULLDOWN, 它们是利用Spice里的ASRC(Arbitrary SouRCe, 即任意源元件)来实现。在Spice的使用手册里,我们可看到其语法及功能:

由于Power Clamp(PC)及Ground Clamp(GC)是属于ESD电路的一部份而始终是有在作用的,故其资料可直接被使用。在实作上是将IBIS里的IV对应表先转成每两点间的线性直线(Piecewise Linear)方程而后输出电流。以PC为例, 由下图中可看出端点1,2间的电压被拿来做查表内插而将算出的电流由端点3,4间来供应。

对于Pull up (PU)及Pull down (PD)分支而言,由于它们是在输入信号切切换后才渐渐开或关的,故在以原理图中是以在左上部份的C1及RB3所供应的RC充放电常数来完成此开或关的目的。在瞬态仿真中,此RC参数先被RAMP的值设定于分母的部份, 而后将乘上由PU等所提供的原始值,最后再以G控制源元件(VCCS,电压控制电流源)来将电流输出。

在原贴文里,原作者也提及他曾试着直接以其它方式来取代以此RC来做PU/PD电流切换的方式但效果不彰。我们认为其中可能的原因是因为PU/PD供应电流值是有瞬态时间因素的,即它们不是马上就如PC或GC般全开或全关的,故若少了这“渐渐打开/关闭”的运作,则输出电压会很不平滑而可能造成仿真不收歛。而且就算收歛,结果也不会准确。也就是说,一般输出缓冲器里场效体(MOSFET)通道里的载子有其一定的速度,故其开或关的时序不会在瞬间完成。

透过这种由RC方式的开关模拟,来仿真由IBIS转出的Spice模型,再与其它商用仿真器对同一IBIS模型在相同负载情况下仿真结果相比较,我们可看出其结果算是相当接近的。但这相近仅止于PAD或PIN点的电压部份。当测量其对供应电压源所使用的电流,则可发现两者相去甚远。也就是说:这种Spice模型只能做理想供压情况下的信号完整性分析而不能拿来将SSN列入考量。其次,上升/下降的曲线会呈现出如RC充放电般的曲线而非直线性。对于仿真速度而言,因为这种实作的设计相对简单,故可很快地完成仿真。。与直接使用IBIS的商用仿真器相较之下并不会慢太多。最后要再说明的是:不像IBIS模型里各种Typ/Min/Max的资料都在同一表格内;当要将某一IBIS里的模型转出做Spice仿真时,欲使用之不同的Typ/Min/Max Corner均需分别地各自先被做转换。

这篇贴文系为于DesignCon 2016同时举行之Ibis Summit所准备;我们在这会中宣读并展示此研究结果。读者请继续参阅“之二”之贴文并可在那下载相关文档及范例。

Leave a Reply

Your email address will not be published. Required fields are marked *