Tco,顾名思义,clock开始到buffer输出到Vmeas电平这段时间,如下图所示它包括两部分的时间,一部分是器件内部的logic延时,而另一部分则是buffer延时。当然了我们对于logic的延时不那么关心,因为这和IC的工艺有关,已经脱离我们的研究范围,而我们最关心的还是这里的buffer延时。
在数据手册中通常都有给定的Tco,而且我们在时序计算的时候也经常用到这个Tco,那么数据手册里的这个Tco是否可以拿来直接代入公式使用呢?Buffer延时和什么因素有关呢?SQ仿真时是否要添加Tcom进行补偿?
带着这几个问题,下面做进一步的探讨:
既然这个Tco由两部分组成,我们撇开内部的logic,单纯地考察Buffer延时,数据手册上都会有一个AC test load(有些数据手册中称之为AC test condition),如下图所示。意思就是:数据手册中的Tco值是基于这个测试负载而测量出来的。
再来看一下IBIS模型中对应的Buffer信息,从关键字[model]中可以看到Vmeas、Cref、Rref、Vref等值,这里的参数和数据手册中的AC test load是对应的。若是想修改测试负载,比如要在接受端并联一个50pF电容,则可以在IBIS文件里修改这里的Cref=50pF。
似乎说到这里,还是不那么令人信服,那么我们下面就来仿真一下,验证buffer的延时是和负载相关的,并且Buffer的波形是基于数据手册中的AC test load而得到的。
在SigX中搭建拓扑结构如下,与数据手册中的AC test load等效。
设置驱动源,设置仿真参数,选择buffer delays为On-the-fly(From Library与On-the-fly的区别后面会讲解)
仿真波形如下,从图中很容易看出蓝线(驱动端波形)和红线(buffer输出)重合
这两个波形都上述拓扑结构中A3点的波形,那么就有点怪异了,都是同一点的波形,他们当然会重合!这个论点是成立的么?下面我们就来修改一下负载值,同时为了最大限度的抑制反射,设定传输线特性阻抗值与负载值相同,均为80ohm,修改后的拓扑结构如下
其它的所有设置均保持与之前的拓扑设置一致,再来看一下波形
很明显这里的Buffer波形与驱动端的波形没有重合,并且与Vmeas的交点也不在同一点。我们把上面两次的仿真结果中的Buffer波形放到一起显示,发现这两个波形是重合的。无论负载怎么改变,仿真波形中的buffdly波形都是IBIS中model下的负载参数所对应的buffer输出波形。
根据上述仿真验证结果,似乎还没有得出SQ仿真时是否要加入补偿时间Tcom这一项,有些资料上通过仿真得出波形,经过测量得出这个补偿值。我们也来看一下这里所谓的补偿时间Tcom具体是指波形的哪一段时间。
前辈把它定义为:测试负载的驱动端波形与实际负载的驱动端波形在Vmeas电压点的时间差,如下图所示:
对于数据手册中的Tco,我们知道它的起点是时钟开始,终点是Test Load的Buffer输出(也可以说是驱动端,之前讨论了,因为测试负载时,驱动端波形和Buffer输出的波形是重合的)到Vmeas电平的那个时间点。
而仿真结果中的Min/Max Flight Time又是怎么样定义的呢?它们和Fist Switch Delay/Final Settle Delay之间又有怎样的对应关系呢?
SQ里对这几个概念定义得非常明确,并且很多文档都借鉴Cadence网站的那两个上升沿和下降沿的波形图来讲解,这里为了避免重合,我就拿我们的仿真图来定义一下。为了便于说明,建立拓扑结构如下,图示下方为仿真结果
上述图示中仿真结果的最后两个参数Switch Delay和Settle Delay,接收端对应的值分别为0.505103ns和0.699296ns,看一下对应的仿真波形。
波形中有四个数值,黑体数值对应上升沿和下降沿的Switch Delay,红色字体数值代表的是上升沿和下降沿的Settle Delay,不必再多解释什么,细细体会一下就可以感受到SQ对这两个值的定义是多么的形象。从四个数值中不难发现,仿真结果中的Switch Delay值对应上升沿和下降沿中较小Switch值,反过来,Settle Delay值对应上升沿和下降沿中的较大Settle值。至于为什么暂不讨论!
而著名的Min Flight Time和Max Flight Time就是仿真结果里的Switch Delay与Settle Delay。到这里暂告一段落。
说到这不得不提SQ的仿真设置----Buffer Delays,之前也有提过,本文中所有的仿真结果与仿真图形都是在On-the-fly模式下测量得出的。它和From library之间究竟有什么不同呢?
Cadence官方解释如下:
From Library: Specifies that the simulator obtain buffer delays stored with the model in the library. This is the default.
On-the-fly: Specifies that the simulator measure buffer delays during circuit simulation and use these delays in the remaining calculations.
先不着急下结论,没理解透官方的解释也没有关系,下面我们通过实例来对这两个值进一步地解析
仿真验证的拓扑结构如下:
On-the-fly下的仿真结果与波形
From Library下的仿真结果与波形,仿真波形并没有Buffer的波形。
从仿真结果来看,两者之间相差很大,达到ns级别。From Library模式下的Min/Max Flight Time是从Buffer上电那一刻作为测量的起始点。所以它得出的结果与On-the-fly模式下得出的仿真结果之间相差一个Buffer的延时(测试负载的buffer延时)。
下面是一个简易的示意图,我把Buffer和Logic两块分割开来了,蓝色框内的总的时间是From Library模式下的仿真结果,这样就引发一个计算的矛盾,即仿真结果里包括了Buffer Delay,而Tco里也包括了Buffer Delay。如果还按照公式计算,显然Buffer Delay被重复计算。
是否可以减去一个Buffer的时间呢?如果这样做的话岂不是又回到了起点,采用On-the-fly模式下计算时序,Tco和仿真结果的Switch/Settle Delay就可以直接相加了。
所以,选择On-the-fly模式便于计算。当然,在满足一定的条件下----即驱动端和接收端的Buffer Delay相同,选择From Library与On-the-fly所得出的结果是一样的,这里我们以后有机会再讨论,暂时以On-the-fly模式为准。
开头提到的一个问题----仿真结果中是否要加入补偿时间Tcom?其实看到这已经不言而喻,如果我们取值时采用SigX中的仿真结果Switch和Settle,则不需要添加Tcom值,因为他们都已经包括了Tcom。什么情况下才需要添加呢?
我们得到了仿真波形,用手动去量出Driving波形和Receiving波形之间的时间,这时才需要Tcom(这种情况一般不会发生,除非你不相信软件只相信自己的眼睛目测)
首先,我们关注一个参数DelayMeasurement中的V Measure
一般在Model中会有Vmeas这一个参数定义,它就是用来定义测量参考点的
当它缺省时,仿真结果如下
当它定义为1.5V时,仿真结果如下
但是它的定义与否和Buffer的波形是不相关的
Buffer的波形和测试负载有关
测试负载定义就是Delaymeasurement中的Resistor Capacitor和Termination Voltage三个参数
当Measure值缺省时
仿真时候会跳出一个警告框
告知用户没有定义V Measurement值
这时候软件会怎么测量呢?
我们把V Measurement值设定为1.5V
然后定义Buffer Delay的模式为from library
得到测量结果如下
发现测量结果与Measure值缺省时测量结果是一致的
其实当缺省值时,无论选择on-the-fly还是from library其结果都是一致的
这里可以得到这样一个结论:当Measure值缺省时,软件(相当于)自动选择from library模式进行测量
文章评论(0条评论)
登录后参与讨论