EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2023-5-15 16:05 编辑 x6 ]! ^3 F0 c# Q( e) a. I, m
+ Y" q9 R8 d5 W
; G+ r8 G) p7 d2 o! I/ \/ h( ^: ~! i2 }
ddio接收模块为双边沿工作模式,如下图所示,ddio_in接入DFFH和DFFL,时钟下降沿DFFL锁存DL,但不立刻输出,直到时钟上升沿高电平使能latch时输出,同时DFFH在上升沿锁存输出DH,和DL拼接成输出数据,这样就实现了对双边沿输入数据的采样输出。 . o) U) Q* X( P0 ?& J4 F
其时序特性是,上升沿发送的数据下降沿采样,下降沿发送的上升沿采样,工作波形如下图所示,需要施加约束才能正确的双边沿采样。
* y. A* j" V6 U q4 g6 U, X首先用create_clock创建输入时钟频率为100MHz的ddio_clk_s,然后用set input delay关联输入数据ddio_in和输入时钟ddio_clk_s,设置延迟为2ns,查看IO Timing,发现TimeQuest分析了两条路径如下图所示,一条是上升沿到下降沿,这是我们想要的,另一条是上升沿到上升沿,这不是我们需要的,而且还没有下降沿到上升沿的路径,看来这种简单的约束方式明显存在问题。
1 C& w! c! C- R8 S1 eset input delay默认是基于时钟上升沿设置,TimeQuest不清楚用户的真实使用情况:上升沿发出的ddio_in数据到底是被DFFH采样还是被DFFL采样呢,所以默认源端上升沿发出的数据会同时被这两个D触发器采样,这就出现了上述rise to fall和rise to rise两条路径,第二条无关路径设置为伪路径后可以被去除。
, s8 E' N6 f* I% J p3 d. h1 `) D& _6 H6 R
, ]4 J% y0 C3 F
: P2 H3 S3 m S8 |* `3 f5 R
8 C) ]5 W$ k7 X" u% v1 T3 V
% r" p. u4 _: Z. M& u& h+ X9 J其中博文认为fall是时钟的下降沿延时,但是fall是用来修辞input delay的而不是clock,所以我并不认可这种翻译,此时我注意到表格里还有一个参数是-clock_fall,这个好像和我想找的意思相符,为了验证参数的具体含义,又继续搜索找到了altera关于set input delay的中参数的官方解释如下:
) F9 G3 ~7 |6 {7 ?# y' Q1 t- ?4 u7 G# R
-fall Specifies the falling input delay at the port " i0 J( ^, A7 W4 T6 C( P
双边沿约束的问题解决了,可是官方对fall的解释 the falling input delay 是神马意思呢?都是四级的词汇,凑在一起,就不是很明了了,数据下降延迟?听起来总感觉怪别扭的。一组输入数据变化时,哪有上升和下降之说?(数据从0010变为1001,你说是上升还是下降呢?),上升下降应该是针对某一根数据线的变化而言的(数据从0010变为1001,你可以说第0位上升了,第1位下降了),但是TimeQuest真的想知道你每根数据线的上升下降延迟吗?
$ V5 t- p0 l5 Z( M2 z$ x. k+ O测试后发现,如果不设置rise和fall,会导致约束不精准。举个例子:源端发出数据的输入上升延迟Tdelay_rise为0.5ns,下降延迟为Tdelay_fall为0.8ns,路径最大延迟为2ns,最小延迟为1ns,只设置set input delay的 max delay为2.8ns,min delay 为1.5ns,其中ddio_in[1]的路径延迟报告如下图所示。 9 q4 t6 `" [ \% W
注意红色线标记,data path为2.129ns。 8 A, o, J# F( ?, w
+ a3 y5 U! A T0 u$ p: V6 G0 H$ H: y
set output delay一样也有rise 和 fall的选项,和set input delay作用类似,这里就不再复述了。
0 D2 V' ~& ]- C4 O |