PCBSI's Archiver

袁荣盛 发表于 2009-7-2 14:30

SQ仿真中的Tco与Tcom详解

Tco,顾名思义,clock开始到buffer输出到Vmeas电平这段时间,如下图所示它包括两部分的时间,一部分是器件内部的logic延时,而另一部分则是buffer延时。当然了我们对于logic的延时不那么关心,因为这和IC的工艺有关,已经脱离我们的研究范围,而我们最关心的还是这里的buffer延时。

[attach]350[/attach]

在数据手册中通常都有给定的Tco,而且我们在时序计算的时候也经常用到这个Tco,那么数据手册里的这个Tco是否可以拿来直接代入公式使用呢?Buffer延时和什么因素有关呢?SQ仿真时是否要添加Tcom进行补偿?
带着这几个问题,下面做进一步的探讨:

既然这个Tco由两部分组成,我们撇开内部的logic,单纯地考察Buffer延时,数据手册上都会有一个AC test load(有些数据手册中称之为AC test condition),如下图所示。意思就是:数据手册中的Tco值是基于这个测试负载而测量出来的。

[attach]351[/attach]

再来看一下IBIS模型中对应的Buffer信息,从关键字[model]中可以看到Vmeas、Cref、Rref、Vref等值,这里的参数和数据手册中的AC test load是对应的。若是想修改测试负载,比如要在接受端并联一个50pF电容,则可以在IBIS文件里修改这里的Cref=50pF。

[attach]352[/attach]

袁荣盛 发表于 2009-7-2 15:28

[i=s] 本帖最后由 袁荣盛 于 2009-7-23 11:17 编辑 [/i]

似乎说到这里,还是不那么令人信服,那么我们下面就来仿真一下,验证buffer的延时是和负载相关的,并且Buffer的波形是基于数据手册中的AC test load而得到的。
在SigX中搭建拓扑结构如下,与数据手册中的AC test load等效。

[attach]353[/attach]

设置驱动源,设置仿真参数,选择buffer delays为[b][color=DarkOrange]On-the-fly(From Library与On-the-fly的区别后面会讲解)[/color][/b]
[attach]354[/attach]

仿真波形如下,从图中很容易看出蓝线(驱动端波形)和红线(buffer输出)重合

[attach]355[/attach]

袁荣盛 发表于 2009-7-2 15:29

[i=s] 本帖最后由 袁荣盛 于 2009-7-23 11:18 编辑 [/i]

这两个波形都上述拓扑结构中A3点的波形,那么就有点怪异了,都是同一点的波形,他们当然会重合!这个论点是成立的么?下面我们就来修改一下负载值,同时为了最大限度的抑制反射,设定传输线特性阻抗值与负载值相同,均为80ohm,修改后的拓扑结构如下

[attach]356[/attach]

其它的所有设置均保持与之前的拓扑设置一致,再来看一下波形

[attach]357[/attach]

很明显这里的Buffer波形与驱动端的波形没有重合,并且与Vmeas的交点也不在同一点。我们把上面两次的仿真结果中的Buffer波形放到一起显示,发现这两个波形是重合的。无论负载怎么改变,仿真波形中的buffdly波形都是IBIS中model下的负载参数所对应的buffer输出波形。

[attach]358[/attach]

根据上述仿真验证结果,似乎还没有得出SQ仿真时是否要加入补偿时间Tcom这一项,有些资料上通过仿真得出波形,经过测量得出这个补偿值。我们也来看一下这里所谓的补偿时间Tcom具体是指波形的哪一段时间。

前辈把它定义为:测试负载的驱动端波形与实际负载的驱动端波形在Vmeas电压点的时间差,如下图所示:
[attach]359[/attach]

袁荣盛 发表于 2009-7-2 15:31

对于数据手册中的Tco,我们知道它的起点是时钟开始,终点是Test Load的Buffer输出(也可以说是驱动端,之前讨论了,因为测试负载时,驱动端波形和Buffer输出的波形是重合的)到Vmeas电平的那个时间点。
而仿真结果中的Min/Max Flight Time又是怎么样定义的呢?它们和Fist Switch Delay/Final Settle Delay之间又有怎样的对应关系呢?
SQ里对这几个概念定义得非常明确,并且很多文档都借鉴Cadence网站的那两个上升沿和下降沿的波形图来讲解,这里为了避免重合,我就拿我们的仿真图来定义一下。为了便于说明,建立拓扑结构如下,图示下方为仿真结果

[attach]360[/attach]

上述图示中仿真结果的最后两个参数Switch Delay和Settle Delay,接收端对应的值分别为0.505103ns和0.699296ns,看一下对应的仿真波形。

[attach]361[/attach]

波形中有四个数值,黑体数值对应上升沿和下降沿的Switch Delay,红色字体数值代表的是上升沿和下降沿的Settle Delay,不必再多解释什么,细细体会一下就可以感受到SQ对这两个值的定义是多么的形象。从四个数值中不难发现,仿真结果中的Switch Delay值对应上升沿和下降沿中较小Switch值,反过来,Settle Delay值对应上升沿和下降沿中的较大Settle值。至于为什么暂不讨论!
而著名的Min Flight Time和Max Flight Time就是仿真结果里的Switch Delay与Settle Delay。到这里暂告一段落。

admin 发表于 2009-7-2 16:07

Switch Delay中Switch表明信号刚刚从一个状态开始转换到另一个状态;
Settle Delay中Settle表明信号已经转换完毕,已经稳定在新状态上了。
min/max这样说比较直接,switch/settle这样说比较形象。

ripple 发表于 2009-7-2 16:15

不错,经典!

Jenny 发表于 2009-7-2 16:46

图文并貌,联系实际:victory:

袁荣盛 发表于 2009-7-2 17:26

[i=s] 本帖最后由 袁荣盛 于 2009-7-23 11:18 编辑 [/i]

说到这不得不提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.

先不着急下结论,没理解透官方的解释也没有关系,下面我们通过实例来对这两个值进一步地解析
仿真验证的拓扑结构如下:

[attach]362[/attach]

[b][color=DarkOrange]On-the-fly下的仿真结果与波形[/color][/b]
[attach]363[/attach]

[b][color=DarkOrange]From Library下的仿真结果与波形,仿真波形并没有Buffer的波形。[/color][/b]

[attach]364[/attach]
从仿真结果来看,两者之间相差很大,达到ns级别。From Library模式下的Min/Max Flight Time是从Buffer上电那一刻作为测量的起始点。所以它得出的结果与On-the-fly模式下得出的仿真结果之间相差一个Buffer的延时(测试负载的buffer延时)。

袁荣盛 发表于 2009-7-2 17:27

下面是一个简易的示意图,我把Buffer和Logic两块分割开来了,蓝色框内的总的时间是From Library模式下的仿真结果,这样就引发一个计算的矛盾,即仿真结果里包括了Buffer Delay,而Tco里也包括了Buffer Delay。如果还按照公式计算,显然Buffer Delay被重复计算,有人说可以减去一个Buffer再计算嘛!
[attach]365[/attach]

袁荣盛 发表于 2009-7-2 17:28

是否可以减去一个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(这种情况一般不会发生,除非你不相信软件只相信自己的眼睛目测)

[attach]366[/attach]

admin 发表于 2009-7-2 17:53

[b] [url=http://www.pcbsi.com/redirect.php?goto=findpost&pid=1685&ptid=419]8#[/url] [i]袁荣盛[/i] [/b]


from library是拿库里面定义的值来计算flight time,如果事先仿真测试负载,把这个值写到库里面,得到的switch delay 和 settle delay应该是一样的。
还有一个选项是no buffer delay,这一选项是到15.x后才有的,因为有客户习惯和某些例子选用on the fly会有问题,就只用sigxp做仿真得到延时,再仿真测试负载,两个延时通过计算得到需要的飞行时间。

袁荣盛 发表于 2009-7-2 18:10

[b] [url=http://www.pcbsi.com/redirect.php?goto=findpost&pid=1688&ptid=419]11#[/url] [i]admin[/i] [/b]

难道是我一直以来理解错误?
我从仿真结果上看出from library的仿真结果比On-the-fly大一个buffer延时
我再调查一下
我要是理解错误再来给大家道歉
拍板子砖块都可以
呵呵:lol

袁荣盛 发表于 2009-7-2 20:21

我在回家的地铁上苦思冥想
为什么on-the-fly和from library之间相差一个buffer的延时
我以前一直只是知道它们之间的差值
却没想过为什么
管理员说from library是从库里提取的值来计算的
从官方的字面意思上也可以看出来的却是这样的

我就大胆地猜想了一下
[color=Purple][b]可能from library里的buffer是一个无延时的完美方波[color=Blue][/color][/b][/color]
这样从理论计算上是符合我之前的想法的
但没有资料能够证明
望知情者指点...
我继续查相关资料

Triton 发表于 2009-7-2 20:57

我也研究过这个问题,好像在DML里面(或者是其他地方)可以加入buffer delay的数据,这样加进去的话,就会看到得到的delay是减去这个数据的值

Triton 发表于 2009-7-2 20:58

[quote] 11# admin

难道是我一直以来理解错误?
我从仿真结果上看出from library的仿真结果比On-the-fly大一个buffer延时
我再调查一下
我要是理解错误再来给大家道歉
拍板子砖块都可以
呵呵:lol ...
[size=2][color=#999999]袁荣盛 发表于 2009-7-2 18:10[/color] [url=http://www.pcbsi.com/redirect.php?goto=findpost&pid=1689&ptid=419][img]http://www.pcbsi.com/images/common/back.gif[/img][/url][/size][/quote]

问题讨论,要的就是越辩越明:lol

袁荣盛 发表于 2009-7-2 21:07

好久没用SQ了
都用SixP了
明天整明白点

Triton 发表于 2009-7-2 21:33

[b] [url=http://www.pcbsi.com/redirect.php?goto=findpost&pid=1693&ptid=419]16#[/url] [i]袁荣盛[/i] [/b]

SQ跟sigxp有区别吗?

袁荣盛 发表于 2009-7-2 21:47

SQ比SigxP高级阿
SixP主要是前仿真用的

Triton 发表于 2009-7-2 21:54

要是后仿真的话,我一般用SQ也是提取拓扑到sigxp里面

Jenny 发表于 2009-7-4 16:04

[i=s] 本帖最后由 Jenny 于 2009-7-4 16:37 编辑 [/i]

BufferDelayRise:从低电平上升到Vmeas时的延时值;
BufferDelayFall:从高电平下降到Vmeas时的延时值;

Switch Delay:[color=Red]min[/color](SwitchDelayRise,SwitchDelayFall)
SwitchDelayRise:从BufferDelay上升沿的Vmeas点开始到接收波形上升曲线[color=Red]第一次[/color]穿过[color=Red]Vil[/color]时的延时值;
SwitchDelayFall:从BufferDelay下降沿的Vmeas点开始到接收波形下降曲线[color=Red]第一次[/color]穿过[color=Red]Vih[/color]时的延时值;

Settle Delay:[color=Red]max[/color](SettleDelayRise,SettleDelayFall)
SettleDelayRise:从BufferDelay上升沿的Vmeas点开始到接收波形上升曲线[color=Red]最后一次[/color]穿过[color=Red]Vih[/color]时的延时值;
SwitchDelayFall:从BufferDelay下降沿的Vmeas点开始到接收波形下降曲线[color=Red]最后一次[/color]穿过[color=Red]Vil[/color]时的延时值;

页: [1] 2

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.