1.5 仿真模型
1.5.1 IBIS模型
在IBIS(Input/Output Buffer Information Specification)模型出现之前,人们用晶体管级的SPICE(Simulation Program with Integrated Circuit Emphasis)模型进行系统仿真,这种方法有以下三个方面的问题。
结构化的SPICE模型只适用于元器件较少和网络简单的小规模系统仿真,借助这种方法设定系统的设计准则或对一条实际的网络进行最坏情况分析。
得到元器件结构化的SPICE模型较困难,元器件生产厂不愿意提供包含其电路设计、制造工艺等信息的SPICE模型。
各个商业版的SPICE软件彼此不兼容,一个供应商提供的SPICE模型可能在其他的SPICE仿真器上不能被运行。
因此,人们需要一种被业界普遍接受的、不涉及元器件设计制造专有技术的、能准确描述元器件电气特性的行为化的“黑盒”式的仿真模型。
1990年年初,Intel公司为了满足PCI总线驱动的严格要求,在内部草拟了一种基于Lotus Spread-Sheet的列表式模型,数据的准备和模型的可行性是主要问题。由于当时已经有了几个EDA厂商的标准存在,因此邀请了一些EDA供应商参与通用模型格式的确定。这样,IBIS 1.0在1993年6月诞生,1993年8月被更新为IBIS 1.1版本,并被广泛接受。此时,旨在与技术发展要求同步和改善IBIS模型可行性的IBIS论坛(IBIS Open Forum)成立,更多的EDA供应商、半导体商和用户加入IBIS论坛。1995年2月,IBIS论坛正式并入美国电子工业协会(Electronic Industries Association,EIA)。1995年12月,IBIS 2.1版本成为美国工业标准ANSI/EIA-656。1997年6月发布的IBIS 3.0版本成为IEC 62012-1标准。1999年9月通过的IBIS 3.2版本成为美国工业标准ANSI/EIA-656-A。目前,大量使用的模型为IBIS 2.1、IBIS 3.2版本。
1.IBIS模型与SPICE模型的特点
进行板级仿真的关键问题在于模型的建立。在传统的电路设计中,SPICE模型作为电路级模型能够提供精确的结果,但是SPICE模型不能满足现在的仿真需求,SPICE与IBIS模型的各自特点如下。
SPICE模型:
✧电压/电流/电容等节点关系从元器件图形、材料特性得来,建立在低级数据的基础上。
✧每个缓冲器中的元器件分别被描述/仿真。
✧仿真速度慢,适用于电路级的设计者。
✧包含了详细的芯片内部设计信息。
IBIS模型:
✧电压/电流/时间等缓冲器的节点关系建立在V-I或V-t数据曲线上。
✧其中没有包括电路细节。
✧仿真速度快(是SPICE模型仿真的25倍),适用于系统设计者。
✧不包括芯片内部的设计信息。
2.IBIS模型的物理描述
IBIS模型是以I/O缓冲器结构为基础的。I/O缓冲器行为模块包括封装所带来的RLC寄生参数、硅片本身的寄生电容参数、电源或地的电平钳位保护电路、缓冲器特征(门槛电压、上升沿、下降沿、高电平和低电平状态)。IBIS模型结构如图1-5-1所示。
图1-5-1 IBIS模型结构
输入的模型电路可以细化,如图1-5-2所示。
C_pkg、R_pkg、L_pkg为封装参数。
C_comp为硅片上引脚的压焊盘电容。
Power_Clamp为高端ESD结构的V-I曲线。
GND_Clamp为低端ESD结构的V-I曲线。
类似地,输出的模型电路也可以细化,如图1-5-3所示。
图1-5-2 输入的模型电路
图1-5-3 输出的模型电路
1为Pullup、Pulldown,包含了高电平和低电平状态的上拉、下拉V-I曲线。模拟缓冲单元被驱向低电平或高电平的V-I特性。
2为Ramp,包含了上升沿和下降沿的摆率(dV/dt),指的是输出电压幅度变化其20%~80%所用的时间。为了更加准确地描述上升沿和下降沿的过程,有上升沿和下降沿的V-t曲线。
3为Power/GND Clamp,包含了电源和地的钳位保护电路的V-I特性。
4为C_comp,包含了硅片本身固有的寄生电容。
5为封装的寄生参数,对元器件的所有引脚进行一个粗略的描述,也可以进一步地详细描述。
元器件中只有C_comp的描述而没有R_comp的描述,这是因为硅片本身的寄生电阻影响已经包含在上、下拉电路和钳位保护电路的V-I特性中了。
由此可以看出,IBIS模型是一种基于全电路仿真或测试获得V-I曲线而建立的快速、准确的行为化的电路仿真模型。它的仿真速度是SPICE模型仿真速度的25倍以上。人们可以根据标准化的模型格式建立这种模拟IC电气特性的模型,并可以通过模型验证程序验证模型格式的正确性。IBIS模型几乎能被所有的模拟仿真器和EDA工具接受。由于通过测量或仿真数据,较易获得IBIS模型,且IBIS模型不涉及芯片的电路设计和制造工艺,芯片供应商也愿意为用户提供元器件的IBIS模型,所以IBIS模型被广泛应用于系统的信号完整性分析。
3.建立IBIS模型
IBIS模型可以通过仿真器件的SPICE模型来获得,也可以用直接测量的方法来获得。作为最终用户,最常见的方法是到半导体制造厂商的网站下载各种元器件的IBIS模型,在使用前要对得到的IBIS模型进行语法检查。
建立一个元器件的IBIS模型需要以下5个步骤。
(1)进行建立模型前的准备工作,包括决定模型的复杂程度;根据模型所要表现的内容和元器件工作的环境,来确定电压和温度范围,以及制程限制等因素;获取元器件相关信息,如电气特性及引脚分布;元器件的应用信息。
(2)获得V-I曲线或上升/下降沿V-t曲线的数据,可以通过直接测量或仿真得到。
(3)将得到的数据写入IBIS模型。不同的数据在各自相应的关键字后列出,要注意满足IBIS的语法要求。
(4)初步建立了模型后,应当用S2iplt等工具来查看以图形方式表现的V-I曲线,并检查模型的语法是否正确。如果模型是通过仿真得到的,应当分别用IBIS模型和最初的晶体管级模型进行仿真,比较其结果,以检验模型的正确性。
(5)得到了实际的元器件后,或者模型是由测量得到的,要对模型的输出波形和测量的波形进行比较。
4.使用IBIS模型
IBIS模型主要用于板级系统的信号完整性分析。可以用IBIS模型分析的信号完整性问题包括串扰、反射、振铃、过冲、下冲、不匹配阻抗、传输线分析、拓扑结构分析等。IBIS模型尤其能够对高速信号的振铃和串扰进行准确、精细的仿真,它可用于检测最坏情况的上升时间条件下的信号行为,以及一些用物理测试无法解决的问题。在使用IBIS模型时,用户用PCB的数据库来生成PCB上的连线的传输线模型,然后将IBIS模型赋给PCB上相应的驱动端或接收端,就可以进行仿真了。
虽然IBIS模型有很多的优点,但也存在一些不足。目前,仍有许多厂家缺乏对IBIS模型的支持,致使IBIS仿真工具无法工作。虽然IBIS文件可以被手工创建或通过SPICE模型来转换获得,但若无法从厂家得到最小上升时间参数,则通过任何转换工具都无法获得。另外,IBIS模型缺乏对地弹噪声的建模能力。
1.5.2 验证IBIS模型
Model Integrity能够进行模型建立、处理和校验。在使用仿真模型前,必须先验证仿真模型。Model Integrity可以分析IBIS模型和Cadence DML(Device Model Library)模型的语法错误,Model Integrity可以相互转换IBIS、Quad和Cadence DML文件。模型校验包含语法检查、单调性检查、模型完整性检查和数据合理性检查。
1.浏览解析的IBIS文件结果
(1)在程序文件夹中选择Cadence→Release 17.2→Model Integrity项,弹出Model Integrity窗口,如图1-5-4所示。
图1-5-4 Model Integrity窗口
(2)在Model Integrity窗口选择File→Open菜单命令,打开ep1sgx25f_1.ibs文件,如图1-5-5所示。
当打开IBIS文件时,一个解析程序ibischk4.2.0开始运行。这个解析程序运行完后,会弹出错误和警告信息,必须解决这些错误和警告。
(3)在Physical…选项卡中单击ep1sgx25f_1项前面的+号,浏览IOCell模型,树列表中显示所有的IOCell模型,如图1-5-6所示。
(4)在Physical…选项卡中双击1sgx_sstl25c2_io_dm,然后单击按钮,会发现在编辑窗口有警告标志,并且最下面的输出窗口会有警告信息,如图1-5-7所示。
图1-5-5 模型内容
图1-5-6 IOCell模型
(5)在输出窗口可以看到第1行被高亮显示,并且输出窗口有提示信息“NOTE(line 1260)-GND Clamp Minimum data is non-monotonic”(第1260行,GND Clamp的最小数据是非单调的)。对于这个IOCell模型,在编辑窗口会查看到电压为“2.1500e+000”时对应的最小电流为“-3.1180e-010”,上一行(1259行)的“2.0000e+000”对应的最小电流为“-4.9080e-012”,第1258行的“1.8500e+000”对应的最小电流为“-8.5730e-011”,如图1-5-8所示。
图1-5-7 警告标志和信息
图1-5-8 具体警告信息
(6)在Physical…选项卡中选择1sgx_sstl25c2_io_dm项,右击,从弹出的菜单中选择View Curve→GND_Clamp→Min菜单命令,弹出Untitled-SigWave窗口,如图1-5-9所示。
图1-5-9 Untitled-SigWave窗口
(7)Untitled-SigWave窗口显示了下拉I-V曲线,非单调性波形电压为1.85~2.15V,由于电流值差别过小,在图1-5-9中不能被正确显示。在当前目录中,会产生波形文件,文件名为IOCell,扩展名为sim。
(8)选择File→Exit菜单命令,退出Untitled-SigWave窗口。
(9)这里需要注意的是,该非单调性波形发生的位置是在电压波形的末端,而且变化很小,对仿真结果影响甚小,无须纠正IBIS文件。
(10)在窗口底部的信息栏中,查看警告信息,找到“WARNING-Model'1sgx_sstl25c2_io_dm':Model_type'I/O'must have Vinl set”(模型“1sgx_sstl25c2_io_dm”:I/O模型必须有Vinl设置)和“WARNING-Model'1sgx_sstl25c2_io_dm':Model_type'I/O'must have Vinh set”(模型“1sgx_sstl25c2_io_dm”:I/O模型必须有Vinh设置),如图1-5-10所示。
(11)在Physical View栏中双击1sgx_sstl25c2_io_dm项,编辑窗口会显示该IOCell模型信息,并且模型名被高亮显示,如图1-5-11所示。
(12)在编辑窗口部分可以看到Model_type I/O部分没有Vinh和Vinl,在“Vmeas=1.2500”语句的上面输入“Vinl=1.0700”和“Vinh=1.4300”,如图1-5-12所示。
(13)选择File→Save As菜单命令,保存文件于当前目录,文件名为ep1sgx25f_11.ibs。
图1-5-10 窗口底部的信息栏
图1-5-11 1sgx_sstl25c2_io_dm模型参数
(14)在Physical…选项卡中选择ep1sgx25f_11.ibs项,右击,从弹出的菜单中选择parse selected菜单命令,Model Integrity会运行ibischk解析器,并且在当前目录下建立ep1sgx25f_11_ibisparse.log文件。同时,在ep1sgx25f_11前面有一个红色的“×”标志,如图1-5-13所示。
图1-5-12 修改1sgx_sstl25c2_io_dm模型参数
图1-5-13 错误标志
(15)在Physical…选项卡中双击ep1sgx25f_11项,在编辑窗口会弹出错误标志。双击编辑窗口的错误标志,在输出窗口会有警告信息,如图1-5-14所示。
图1-5-14 错误标志和警告信息
(16)Model Integrity要求文件名和File Name一致,在编辑窗口中改变File Name后的ep1sgx25f_1.ibs文件为ep1sgx25f_11.ibs文件,单击保存按钮,保存文件。
(17)在Physical…选项卡中选择ep1sgx25f_11项,右击,在弹出的菜单中选择parse selected菜单命令,解析文件,发现错误标志消失,如图1-5-15所示。
图1-5-15 错误标志消失
2.在Model Integrity中仿真IOCell模型
(1)在Physical…选项卡中选择ep1sgx25f_11项,右击,从弹出的菜单中选择Simulate Buffer…菜单命令,弹出Buffer Model Simulation窗口,如图1-5-16所示。在Physical…选项卡中有一个新的文件,这是DML格式的IBIS模型,PCB SI运行仿真需要DML格式的模型,所以Model Integrity窗口自动产生DML文件。
图1-5-16 Buffer Model Simulation窗口
(2)在Buffer Model Simulation窗口选择Output选项卡,可以看到,Vref自动读取模型中的设定值为1.25,Cref自动读取模型中的设定值为0.03n,Tperiod为仿真周期。更改参数Rref为50,如图1-5-17所示。
图1-5-17 设置测试负载电阻参数
(3)单击Simulate按钮,运行仿真,并在Untitled-SigWave窗口产生波形,如图1-5-18所示。该波形被写入当前目录,波形名为Waveform.sim。当仿真其他IOCell模型时,波形文件会被重写。
(4)单击Close按钮,关闭波形窗口。
(5)在Buffer Model Simulation窗口单击Close按钮,关闭Buffer Model Simulation窗口。
3.使用IBIS to DML转换器
(1)在Physical…选项卡中单击ep1sgx25f_11项,选择Tools→Translation Options Editor菜单命令,弹出Translation Options窗口,如图1-5-19所示。
(2)默认选中Make model names unique项,这个设置为每个IOCell模型名附加IBIS文件名。单击OK按钮,关闭Translation Options窗口。
(3)在Physical…选项卡中右击ep1sgx25f_11项,从弹出的菜单中选择IBIS to DML菜单命令,系统会提示是否重写,这是因为软件先前已经自动生成了一个DML文件,单击确定按钮,重写文档,如图1-5-20所示。
图1-5-18 仿真波形
图1-5-19 Translation Options窗口
图1-5-20 警告窗口
(4)查看编辑窗口的第3行,第1个IOCell模型为EP1SGX25F_11_1sgx_dhstl15c2_out,ep1sgx25F_11已经被添加到IOCell模型名的前面,如图1-5-21所示。
4.浏览DML文件的错误和警告信息
当转换一个IBIS文件为DML格式时,dmlcheck解析器运行,并在输出窗口显示错误和警告信息。
图1-5-21 DML文件信息
(1)在工具栏中单击按钮,输出窗口提示12个警告和0个错误。在输出窗口滚动查看警告信息“WARNING@line239:EP1SGX25F_11_1sgx_dhstl15c2_out GroundClamp:Overall typical area exceeds overall maximum area”。
(2)在输出窗口双击警告信息,在编辑窗口顶部会高亮显示第239行,如图1-5-22所示。
图1-5-22 警告信息
(3)注意关键词VICurve和下面的数据,在DML格式中没有提示哪一栏数据是最小值、典型值或最大值,并且单位统一为伏特(V)和安培(A),最左边一栏列出了电压值,紧靠着这一栏右边的是典型电流值,下一栏是最小电流值,最右边一栏是最大电流值。这些数据没有IBIS文件容易被读取,所以要查看IBIS文件中的这个模型以找出dmlcheck警告的变化。
(4)在Physical…选项卡中双击1sgx_dhstl15c2_out项,在编辑窗口右击,从弹出的菜单中选择Replace菜单命令,弹出Replace窗口,在Find what文本框中输入POWER_Clamp,不选择Match case项,如图1-5-23所示。
图1-5-23 Replace窗口
(5)单击Find Next按钮,在编辑窗口中1sgx_dhstl15c2_out模型的POWER_Clamp被高亮显示,单击Cancel按钮,关闭Replace窗口。
(6)查看VICurve数据的电流值,在Max栏的电流值应该比Min和Typ栏的大,但发现在-3.10~-1.85V的数据在错误的栏里。
(7)在Physical…选项卡中选择1sgx_dhstl15c2_out项,右击,从弹出的菜单中选择View Curve→POWER_Clamp→All菜单命令,弹出Untitled-SigWave窗口,显示最小值(Min)、最大值(Max)、典型值(Typ)3条曲线,发现最大值不总是比最小值和典型值大,而典型值不总是比最小值大,这就是dmlcheck解析器产生警告信息的原因,如图1-5-24所示。
图1-5-24 POWER_Clamp曲线
(8)关闭Untitled-SigWave窗口,以及ep1sgx25f_11文件和ep1sgx25f_11文件。
5.使用Espice to Spice转换器
使用Espice to Spice转换器可以把Cadence Espice文件转换为标准的Spice文件。在PCB SI中要设置仿真参数,从Probe窗口选择要仿真的网络,从报告或波形窗口保存电路文件,这些动作都会将Espice文件写入signoise.run/case#/sim#目录下,其中#代表数字,sim目录包含名为main.spc和其他几个需要的文件。
(1)在Model Integrity窗口选择File→Open菜单命令。在D:\SQAdv_14_2\mi\ESpice\signoise.run\case1\sim1目录下打开main.spc文件,如图1-5-25所示。
图1-5-25 转换后的模型
(2)在Physical…选项卡中单击main项,选择Tools→Translation Options…菜单命令,在弹出的Translation Options窗口打开Espice to Spice选项卡,如图1-5-26所示。不选择任何项,main.spc文件包含传输线元素。
(3)在Translation Options窗口单击OK按钮。在Physical…选项卡中选择main项,右击,从弹出的菜单中选择Translate Selected→Generic Spice菜单命令,main.spc文件已经被转换为标准Spice格式,其文件名为mainspc_gen.spc,如图1-5-27所示。
(4)在Physical…选项卡中选择mainspc_gen→File→Save as菜单命令,保存文件,其文件名为mainspc_gen_default。
(5)选择Tools→Translation Options…菜单命令,在弹出的Translation Options窗口打开Espice to Spice选项卡,勾选Use W element for all transmission line models复选框,如图1-5-28所示。
图1-5-26 Translation Options窗口
图1-5-27 Spice格式模型
(6)单击OK按钮,关闭Translation Options窗口。W-element文件用于Hspice仿真,在Physical…选项卡中选择mainspc_gen项,右击,从弹出的菜单中选择Translate Selected→Generic Spice菜单命令,弹出提示信息,单击Yes按钮,如图1-5-29所示。
图1-5-28 Translation Options窗口
图1-5-29 转换修改的模型
(7)在Physical…选项卡中选择mainspc_gen项,选择File→Save as菜单命令,保存文件,其文件名为mainspc_gen_welement。
(8)在Physical…选项卡中选择main项,右击,从弹出的菜单中选择Close Selected菜单命令,关闭main.spc文件。
(9)选择Window→Tile Horizontally(横向平铺)菜单命令,使两个文件上下显示,这样很容易将这两个文件进行比较,如图1-5-30所示。
图1-5-30 比较模型文件
(10)在文件中查找Trace模型定义,W-element指向其他文件,关键词“RLGCfile=文件名”,这就意味着当提取W-element Spice文件到Hspice时,也要提取它的RLGC文件。
(11)在名为subckt COMPLETE_Interconn的W-element文件中查看子电路定义,在转换的过程中,这些文件被转换为标准Spice文件,将Trace定义从Allegro PCB SI电路板文件中提取出来并存储在interconn.iml文件中。
(12)查看W-element声明的第1行“WTL_XSTLX3090Y9732L1X3090Y9775L1”,“WTL_X”表示W-element声明,“STL”表示单传输线,“X3090”、“Y9372”和“L1”表示X和Y坐标和互连线连接的层号,这表示连接到子电路的内部节点。“X3090”、“Y9775”和“L1”表示X和Y坐标和互连线连接的层号,这表示连接到子电路的外部节点。
(13)后面的“RLGCfile=STL_1S_1R_41.rlc l=0.0010922”表示子电路引用名为ntl_rlgc.inc的Allegro PCB SI的模型,模型文件是STL_1S_1R_41.rlc,其长度是0.001 092 2m(43mil)。
(14)在编辑窗口查看W-element文件的子电路定义.subckt COMPLETE.U15 2,注意提示信息,如图1-5-31所示。
图1-5-31 子电路定义
(15)注释信息“bdrvr 18 3 19 23 22 20 21 File=ibis_models.inc Model=GTL_IO_Typical”表明了使用的连接节点和缓冲模型。
(16)选择File→Close All菜单命令,关闭所有窗口。
(17)选择File→Exit菜单命令,退出Model Integrity窗口。