TA的每日心情 | 开心 2019-12-3 15:20 |
|---|
签到天数: 3 天 [LV.2]偶尔看看I
|
暂时找不到Cadence那个ppt了,转一个文章给你参考:
& d! y- L) t( H( }1 f1 f2 I时序计算和Cadence仿真结果的运用0 `: P. J4 G: l5 l) }
摘要:本文通过对源同步时序公式的推导,结合对SPECCTRAQuest时序仿真方法的分析,推导出了使用SPECCTRAQuest进行时序仿真时的计算公式,并对公式的使用进行了说明。/ @. s% P5 o7 n/ v8 a0 O0 V, L
一、前言
0 V/ o- d, h/ U8 D, S7 @1 r 通常我们在时序仿真中,首先通过时序计算公式得到数据信号与时钟信号的理论关系,在cadence仿真中,我们也获得了一系列的仿真结果,怎样把仿真结果正确的运用到公式中,仿真结果的具体含义是什么,是我们正确使用Cadence仿真工具的关键。下面对时序计算公式和仿真结果进行详细分析。- ]; R( Z1 C7 P* D6 q& Z
二.时序关系的计算
. {% [; X& }+ q" w | 电路设计中的时序计算,就是根据信号驱动器件的输出信号与时钟的关系(Tco——时钟到数据输出有效时间)和信号与时钟在PCB上的传输时间(Tflytime)同时考虑信号驱动的负载效应、时钟的抖动(Tiitter)、共同时钟的相位偏移(Tskew)等,从而在接收端满足接收器件的建立时间(Tsetup)和保持时间(Thold)要求。通过这些参数,我们可以推导出满足建立时间和保持时间的计算公式。
* t( W6 s5 m6 Z3 Z 时序电路根据时钟的同步方式的不同,通常分为源同步时序电路(Source-synchronous timing)和共同时钟同步电路(common-clock timing)。这两者在时序分析方法上是类似的,下面以源同步电路来说明。, N7 V( |+ G/ h9 t2 _& ~
源同步时序电路也就是同步时钟由发送数据或接收数据的芯片提供。图1中,时钟信号是由CPU驱动到SDRAM方向的单向时钟,数据线Data是双向的。# h) b( B: V. W5 x% S
R3 j8 R1 L2 D0 \9 g
6 v1 u/ V! m% w
4 g: b% H- o& U7 I: x# ]5 |3 R$ ]图2是信号由CPU向SDRAM驱动时的时序图,也就是数据与时钟的传输方向相同时的情况。
e; J0 t4 g1 o4 w' I) k* c
; K. }" z8 y; }
4 c' T. [) ?1 y9 v8 D
& R/ b, n# D7 n/ T9 L5 j4 p1 y图中参数解释如下:
: u# i- ~' j" X4 N" ?, r2 c6 OTft_clk:时钟信号在PCB板上的传输时间;
5 }# ]0 F5 g6 I/ B; V5 l" N% Z" HTft_data:数据信号在PCB板上的传输时间;* P5 W9 L; @0 x+ d# ]/ o9 v% u
Tcycle:时钟周期
, f' [$ V) {8 M5 OTsetup':数据到达接收缓冲器端E1时实际的建立时间;
" ~& c1 u2 k2 {9 G2 U9 ~Thold':数据到达接收缓冲器端E1时实际的保持时间;& j2 W. B9 E( m3 Z; l
Tco_max/Tco_min:时钟到数据的输出有效时间。7 q- L! V( y1 M/ ~
由图2的时序图,我们可以推导出,为了满足接收芯片的Tsetup和Thold时序要求,即Tsetup'>Tsetup和Thold'>Thold,所以Tft_clk和Tft_data应满足如下等式:& L0 Z' P8 `5 Z5 }- t
Tft_data_min>Thold-Tco_min+Tft_clk (公式1)5 X+ o! g+ j1 P* p: P
Tft_data_max<Tcycle-Tsetup-Tco_max+Tft_clk (公式2)4 R3 _6 I. M' a5 h4 n* H
当信号与时钟传输方向相反时,也就是图1中数据由SDRAM向CPU芯片驱动时,可以推导出类似的公式:- P3 B$ x0 Y1 D) |7 @
Tft_data_min>Thold-Tco_min-Tft_clk (公式3)
$ W Q0 ~& `/ Y) pTft_data_max<Tcycle-Tsetup-Tco_max-Tft_clk (公式4)
4 z& ^( G8 e+ M& r 如果我们把时钟的传输延时Tft_clk看成是一个带符号的数,当时钟的驱动方向与数据驱动方向相同时,定义Tft_clk为正数,当时钟驱动方向与数据驱动方向相反时,定义Tft_clk为负数,则公式3和公式4可以统一到公式1和公式2中。' i) t0 [0 B4 Q1 _6 y0 z
三.Cadence的时序仿真
, n6 O+ G+ x, u/ f7 U 在上面推导出了时序的计算公式,在公式中用到了器件手册中的Tco参数,器件手册中Tco参数的获得,实际上是在某一种测试条件下的测量值,而在实际使用上,驱动器的实际负载并不是手册上给出的负载条件,因此,我们有必要使用一种工具仿真在实际负载条件下的信号延时。Cadence提供了这种工具,它通过仿真提供了实际负载条件下和测试负载条件下的延时相对值。7 @$ ^, r' @# z( P' |5 z' I% T
我们先来回顾一下CADENCE的仿真报告形式。仿真报告中涉及到三个参数:FTSmode、SwitchDelay和SettleDelay。其中Cadence时序仿真的结果是通过SwitchDelay和SettleDelay两个参数反映出来的。
1 x9 M; H3 M l4 n2 @* X 在解释FTSmode、SwitchDelay和SwitchDelay前先解释一下BufferDelay曲线的含义。BufferDelay曲线是Cadence仿真器断开实际负载,带上驱动芯片器件手册提供的测试负载条件下获得的一条曲线。测试负载是在IBIS仿真模型库中设置的。Cadence仿真报告中的延时测量是以BufferDelay为基准曲线,以V Measure为起始测量点获得的相对延时值。% E' L6 t, J& [" C! Z
FTSmode:定义了当前仿真驱动器的特性,分为Fast、Type和Slow。该三种特性是在IBIS模型中定义的,Fast是驱动器沿最快的模式,Slow是驱动器沿最慢的模式,从而定义了驱动器在正常工作条件下的两种极限特性。
! F) ]) P6 X% [' oSwitchDelay: 定义为SwitchDelayFall和SwitchDelayRise两者的最小值。图3给出了SwitchDelayFall和SwitchDelayRise的图形解释。; h: {* a2 S% R+ r# |/ L+ P
SwitchDelayFall:是从BufferDelay下降沿的Vmeasure点开始到接收波形下降曲线第一次穿过高电平阈值时的延时值。
5 A! y1 r# [) K/ _. t4 z* E: {0 BSwitchDelayRise:是从BufferDelay上升沿的Vmeasure点开始到接收波形上升曲线第一次穿过低电平阈值时的延时值。3 X$ B; R0 a' t$ C, h- Q5 R
SettleDelay:是SettleDelayFall和SettleDelayRise两者的最大值。图3给出了SettleDelayFall和settleDelayRise的图形解释。6 e$ O( n* P/ a8 P0 j: H
SettleDelayFall:是从BuferDelay下降沿的Vmeasure点开始到接收波形上升曲线最后一次穿过高电平阈值时的延时值。& d6 S0 t: F: C4 m3 B y
从SwitchDelay和SettleDelay的定义我们可以看出,SettleDelay是一个与输入端的建立时间(Tsetup)有关的量,SwitchDelay是一个与输入端保持时间有关的量(Thold)。
( m; o. C- U- J; K/ `# O
6 m7 j# P1 w) ?* x& b c: }
. ?' Y3 p- w: }
9 W7 N9 m1 _3 w0 g0 K0 I' {
公式1和公式2中的Tft_data与Tft_clk在Cadenee仿真工具中是通过仿真获得的数据,它与Cadence仿真中fast和slow状态下的SwitchDelay与SettleDelay参数有关。+ P$ c& w9 E0 T8 M
为了了解Cadence仿真中的SwitchDelay和SettleDelay与时序公式中参数的关系,我们重新分析一下包含有BufferDelay曲线的时序图。
6 f7 s) g6 V* R+ m- ^/ V# `
* d% t4 m8 a3 u; Z0 o: a
1 Y' x* I% ]. Q' j7 d E3 u
# g- M* O2 `& J' b 在图4中,时钟输出和数据输出使用的是BufferDelay曲线,此时Tco是时钟BuferDelay曲线和数据BufferDelay曲线之间的延时关系,这种定义符合“手册中的Tco是在特定负载下测得的”说法。. N" p* V5 u# E* C0 c, o) s `1 E
在图4中,CPU CLK OUT(BuferDelay)和CPU Signals OUT(Buferdelay)是在测试负载条件下的信号输出波形(对应于图3中的BuferDelay曲线,而不是驱动端输出曲线),SDRAM CLK IN和SDRAM Signals IN是在实际负载条件下输入端口的仿真波形。
, Q) V0 T( n! g9 J' d* ~ 在器件手册中给出时序关系时,对于时钟信号,通常以某一测量电压为时间测量点,如图4中的Vmeas1和Vmeas2,对于驱动端测量电压点为驱动器件手册中定义的测量点,对于接收端测量电压点为接收器件手册中定义的测量点。在Cadence仿真时,对于接收端电压测量点的设置,通常在接收器件模型中,把输人高低门限电平定义成Vmeas2来实现。对于驱动端电压测量点的设置,是在驱动器件模型参数中设置的。此时对于时钟仿真的结果是,时钟信号的SettleDelay和SwitchDelay值相等。
' n6 P2 P' l, @6 M5 ^! ] 对于数据信号的测量点就稍微有点复杂了,这要根据手册中Tco的测量方式来确定,有的器件手册Tco是从时钟的Vmeas到数据的Vmeas来测量的,有的手册是从时钟的Vmeas到数据的门限电平来测量的。如果采用从时钟的Vmeas到数据的门限电平来测量的,则在Cadence仿真中,要对高低电平门限分别作为测量点仿真,然后取最恶劣的仿真结果。; b/ f ]: B% Z& D1 v# R
对于公式中数据的延时Tft_data,从Cadence仿真中对SettleDelay和SwitchDelay的定义和图4中的时序关系可以看出,Tft_data就是仿真结果中的SettleDelay和SwitchDelay参数,并且SettleDelay是与建立时间(Tsetup)有关,SwitchDelay是与保持时间(Thold)有关,因此公式中的Tft_data_min对应仿真结果中的SwitchDelay,Tft_data_max对应仿真结果中的SettleDelay,考虑到通常Slow状态的延时比Fast状态的延时要大,因此,公式中的Tft_data_min对应仿真结果中Fast状态的SwitchDelay,Tft_data_max对应仿真结果中Slow状态的SettleDelay。( Q$ p2 \! z) |; a
对于公式中时钟的延时,从测量方式中可以看出Tft_clk=SettleDelay=SwitchDelay,考虑到同一公式中仿真状态的一致,因此,公式中与Thold有关的不等式中的Tfl_clk对应于Fast状态的仿真值,与Tsetup有关的不等式中的Tft_clk对应Slow状态的仿真值。写成公式就是:
( n3 M0 U g% ]4 u" E- vTft_data_fast_switchdelay>Thold口Tco_min+Tft_clk_fast (公式5)
. @; O! j- O. L6 zTff_data_slow_settledelay<Tcycle-Tsetup 口Tco_max+Tft_clk_slow (公式6)* T( J4 t' N6 }+ S4 U% z" a$ }8 W4 h
在实际仿真中,我们只要保证仿真结果满足公式5和公式6的时钟和数据关系,也就保证了单板工作时序的正确性。
" e3 q: ~ u/ o四.总结9 F1 i3 S9 b0 D2 s
Cadence公司的Allegro SI和SigXplor设计工具为硬件开发工程师提供了一个功能强大的高速PCB仿真手段,通过仿真设计,可以设计出符合要求的信号时序和信号完整性,从而提高单板和系统的工作稳定性,降低开发风险和开发成本。
% Y/ m. s9 }- A. Y! K: w4 ^
) W$ T- x+ t- j7 y* Q9 [' b[ 本帖最后由 allen 于 2008-5-29 11:55 编辑 ] |
|