IBIS模型除了用于SI仿真,我们还可以从IBIS模型中得到一些有用的东西,如信号上升时间,输出阻抗以及封装延时等等。
IBIS模型中的关键字[Ramp]定义了buffer输出的上升下降沿的斜率。如下为micron的DDR3芯片的DQ_34_1600的[Ramp]语句。用 dv_r表示将R_load 接地情况下,逻辑电平状态(由低到高)转换的 20%到 80%的摆幅大小。
由DDR3 的IO电压为1.5V可以计算出信号的上升下降时间为330ps左右(20%到 80%的上升时间为200ps这里为了仿真方便使用330ps)。由经验法则“当信号传输延时小于信号上升时间1/6时,互连线处在集总区域,不会体现出传输线效应。”可知,当信号传输延时小于55ps时,传输链路不会体现出传输线特性。也就是说如果当信号线的延时小于55ps的时候我们可以考虑采用直连的形式,而不需要使用任何匹配。
一个经验丰富的信号完整性工程师通过IBIS模型中读取了信号上升时间,并根据PCB布局情况估算布线延时就能够大体得知接收端信号应该有什么样的特征,以及信号是否需要匹配。
由上一节的介绍我们能够从IBIS模型中得到输出buffer的上升时间,那么如果预估的布线延时超过了1/6的上升时间我们就需要通过增加匹配的方式来解决信号完整性问题。最简单的匹配方式就是源端的串联匹配,但如何确定最优的串联电阻值呢。我们也可以从IBIS模型中得到输出buffer的驱动能力,即buffer的输出阻抗 ,由于通常情况下传输线阻抗 控制在50ohm。那么就可以计算得到串联匹配电阻值 = 。下面我们来看如何得到驱动器的输出阻抗 。
IBIS模型中的pulldown和pullup曲线分别为输出buffer的下管和上管的工作曲线。而数字电路只是简单的工作在晶体管的饱和区或者可变电阻区。由模拟电路的知识我们可以画出晶体管的直流负载线就可以找到操作点的电流电压值,由此计算出输出阻抗 下面以pulldown曲线为例说明输出阻抗 的求解过程。
一般情况IBIS模型中的每一条曲线都会对应typ、min、max三种情况,分别代表了不同的电压、温度下晶体管表现出的不同特性。负载线由50ohm上拉到VGS确定,对于micron DDR3的IBIS模型的DQ_34_1600 buffer的typ模式 ,由此可以确定直流负载线和两个坐标轴的交点(0V,30mA)、(1.5V,0A)。这样就能画出typ模式的直流负载线,进而得到操作点的电压和电流,计算得到 这个计算结果和DDR3手册中的34ohm非常接近,由此可知这种方式计算输出buffer的输出阻抗是完全正确的。如此我们就可以不通过仿真估算出需要添加的匹配电阻值。
最优的 = 。在hyperlynx中搭建仿真电路进行仿真验证,由于我们只是通过pulldown曲线来计算输出阻抗,下面的仿真也只仿真一个下降沿。
如上所示的仿真结果来看信号基本没有下冲,这就说明阻抗匹配已经做的很好了。细心的读者可能会想到,当我们增加了16.3ohm的 之后,晶体管的直流负载线已经发生了变化因为到VDDQ的电阻已经由50ohm变为了50+16.3=66.3ohm了,对于在一些饱和区线性度比较高的晶体管这个影响并不是很大,而对于一些在饱和区电阻变化很快的晶体管就会导致匹配的不理想存在下冲和过冲。
我们也可以通过另一种更加简便的方法来得到输出阻抗Zout的值,用这种方法无需画出直流负载线。 我们做源端阻抗匹配的目的就是要让驱动器输出阻抗Zout加上源端串阻 得到的等效输出阻抗和传输线阻抗匹配。我们可以反过来思考当驱动器等效输出阻抗等于传输线阻抗时,驱动器阻抗和传输线阻抗之间由于分压使进入传输线的入射电压 ,那么通过传输线 ,
对于上面的例子而言VDDQ=1.5V,
由此,我们可以直接在pulldown曲线中找到15mA对应的电压500mV,计算得到
IBIS模型中可能会包含三种形式的封装信息,分别在[package] [pin] [package model]三个字段定义。下面来说明一下这三个字段的含义和区别。
首先来看[package]字段,它是定义关于R_pkg,L_pkg, C_pkg参数的一个字段,这里定义的参数是一个笼统的数,为什么说它是笼统的呢,是因为它只有一组数就把器件所有的PIN脚都包括了。
显然这种方式无法描述封装内不同管脚之间的寄生参数的差异性,在速率不是很高的情况下这种参数模型仿真得到的信号质量可能和实际偏差不大,但是仿真结果不能表示封装对信号时序的影响,同样随着信号速率的不断提高如DDR3等接口的仿真如果想得到准确的信号质量和时序结果不能仅仅依靠[package]字段的参数。一般大的IC厂家都不会只弄这么一组数据,还会在[pin]字段里描述了每个PIN脚的package参数,同时与管脚的编号、管脚的信号名称、管脚的模型名称相对应,如下所示:
[pin]字段和[package]字段一样,仅仅用一阶的RLC电路来描述整个package的特性,可能在频率不太高的情况下可以做个参考,但是到了高频后这显然是不够的,PIN与PIN之间的耦合信息,IC内部的bondwire信息等等全部没有。最理想的做法是用3D全波电磁场建模解决问题,但这种想法并不现实package的3D模型不是每个厂家都能提供的。但是我们已经可以从[pin]字段的L_pin、C_pin中得到每个pin在封装内的延时信息:
这样我们就可以通过PCB的布线控制来补偿芯片封装内部的延时偏差,高速总线的时序设计将能够得到最大限度的保障。
IBIS5.0版本又引入了[package model]字段,让手头仅有的资源发挥出最大的作用。[package model]字段内容可以出现在.ibs文件里,也可以出现在一个单独的以.PKG为后缀名的文件里。先看一下它的整体结构:
接下来3个字段[Manufacturer],[OEM],[Description]属于描述性质的,大家完全可以忽略,对仿真没有什么影响。
[Number Of Pins],这个看字面意思应该也能理解了,就是器件的引脚个数。[Pin Numbers]字段中列出了封装中所有pin的编号。
接下来的[Model Data]将是[package model]的核心内容,包含了[Resistance Matrix],[Inductance Matrix],[Capacitance Matrix],翻译过来就是电阻矩阵,电感矩阵和电容矩阵。后面有Banded_matrix,Sparse_matrix等关键字,分别表示为一维矩阵,多维矩阵。一维矩阵的情况就和[pin]字段中定义的R_pin、L_pin、C_pin效果一样并不包含pin和pin之间存在的耦合信息,多为矩阵则包含了pin和pin之间的耦合信息不仅能够进行信号质量仿真也可以进行串扰仿真。
通过上面的分析可知,我们可以在[pin]、[package model]字段中获得每个管脚封装内部的延时信息,获得这一延时对我们来说有着怎样地意义呢?
首先,我们知道互连线延时超过信号上升时间延时1/6时互连线就会表现出传输线效应。在2.4.3章节介绍源端匹配时我们已经了解匹配电阻的布局必须足够靠近驱动器才能和驱动器的输出电阻看成是集总电路,才能获得最好的匹配效果。由[ramp]参数可以读出驱动器的上升下降时间,我们可以用1/6信号上升时间减去封装内部的延时作为封装管脚到匹配电阻的PCB布线延时的约束。
第二,由于我们在进行信号质量测试时只能在靠近输入管脚的封装处选择测试点。而对于一个输入管脚如果封装延时很大,我们在封装处测试得到的信号波形和芯片DIE实际接收到的波形将会存在很大的差异。
在ADS中搭建仿真电路,有8.6nH的电感和2.25pF的电容来模拟封装参数,仿真来观测Vpkg和Vdie两点的电压波形差异。
计算得到封装延时 = 139ps,此时的仿真结果如下图所示(红色实线为die内接收波形,蓝色短划线为封装处的测试波形) 。
如上所示,两个波形存在比较明显的差异。封装处的测试波形在上升下降延都存在100ps左右的回沟,而且边沿要比die内测试到的波形要缓,幅度要比die内信号波形低。这一现象可以用反射的理论来解释,在封装处测试的波形实际上是由发送端的入射波和接收端反射产生的反射波的叠加产生,由于封装参数的存在导致入射波和反射波之间有一定的延时,在叠加的时候就导致回沟或者台阶的出现。
我们可以试着减小封装参数来看是否回购有效减小或者消失。将封装参数更改为电感6.01nH、电容1.52pF,计算得到封装延时 = 96ps,此时的仿真结果如下图所示(红色实线为die内接收波形,蓝色短划线为封装处的测试波形)
如上所示,两个波形之间的差异已经很小。封装处的测试波形在上升下降延的回沟都消失了,只是边沿要比die内测试到的波形要缓一点,幅度要比die内信号波形低。