从我开始画的那个时序图上可以看到,系统的时钟信号都是同步的,即驱动端和接收端的时钟都是由主板上时钟发生器提供,在这种情况下,讨论时序问题时不牵涉到时钟信号的走线长短问题,(即使有也是时钟信号线之间的差别,而数据线的长度约束与时钟信号线无关,只与周期有关)。但实际的系统很复杂,不一定是严格的同步时钟系统,有时是异步传输,接收器的时钟可能是直接由driver产生的,这时候就不能完全按照前面提到的公式,可能这时候时序计算的确要考虑时钟走线的长度,因为我没有接触很深,所以现在我也无法讲清,但基本的理论是上面说的,如果知道系统的设计结构,就可以进行相应的推论。我也看到很多设计的datasheet上约束的线长是和时钟走线作比较的,我还没仔细的分析过,有空会再看看。
你说的“一根时钟线和一根数据线,如果始终保持等长,从时序上来说(排除衰减等其他因素的影响),不管走多长,应该都是可以满足时序要求的。”如果对于理想的“源同步时钟系统”来说是成立的,但是普通的时钟系统则不是如此,时钟信号只是保证所有的器件同时进行触发操作,但并不是跟踪每个数据线进行读取。如果按照你上面的理解,那好像应该让数据线短一点更为合适,时钟信号在数据信号的中间部位读取才是最理想的,所以相位上应该有数据信号1/4周期的偏移。
还有一个关键性的思想:我们是通过时序约束条件计算来确定Flight time的最大最小值,从而调整走线的结构或线长。举个例子,对于一块DDR333来说,其时钟周期是166MHz,即6ns,如果memory controller的Tco是1 ns,DDR内存颗粒需要的建立时间为0.8ns,估计时钟的skew, jitter,以及 串扰对时序的影响为0.6ns,那么,就可以计算出地址/控制线的最大传输延时(Flightmax)为:6-1-0.8-0.6=3.6ns,这时候我们设计走线结构和线长的时候就必须要保证传输延时小于3.6ns,小的多少就是setup时间裕量的大小。
至于如何计算Flight Time就是Cadence图中标明的,有一点要注意的是:每一根信号走线在Cadence中仿真中都会测量出其最大/最小的Flight time,但这不是约束条件中的Flight time,约束条件中的传输延时是所有同类信号的最大延时。
先说这么多,时序的东西一下子是难以理解,多想想,如果对Flight time如何定义及如何量度,可以再讨论,现在饿了,要回家吃饭了。:)
[此贴子已经被阿鸣于2002-8-20 18:21:07编辑过] |