output_delay:用户告诉编译器,外部的线缆延时和下游的建立保持时间要求。
可以看做reg2reg来分析output_delay和input_delay
编译器自己转化为对上游(本级)的输出路径约束。
隐含条件:上游FF的建立保持时间与下游FF的建立保持时间不一定相同。
使用output_delay的目的是让下游设备能准确的采样到本级发出的数据。满足下游的建立保持时间。
本级发送出去的数据经过线缆延时还要能满足下游的建立时间。output_delay_max=T线缆+Tsu+裕量
本级发送的数据经过线缆延时不能破坏launch沿的保持时间。
-max
-min
-min可以大于-max
为什么output_delay会有最大值,为什么不考虑裕量?
因为是TDmax,而不是TD,应该可以考虑裕量,output_delay(max)=TDmax+裕量+Tsu。
裕量留给FPGA控制调节
TraceDelay(TD)为什么有max/min?
因为数据一般都是多bit,不同bit之间的延时有大有小,所以存在max/min。
output delay是什么?
output delay是输出数据在时钟上升沿之前提前多长时间准备好,如上图6ns。而不是表示在时钟上升沿之后延时多久有效。
参考点为下游芯片的捕获沿。
由于是下游芯片的捕获沿为参考点,所以建立时间为正,保持时间为负。
为什么output delay有max/min值?
因为max是与downstream的setup时间有关,如果max很大很大会破坏downstream的setup时间。
min是与downstream的hold时间有关,如果min很小很小,FPGA发出的数据立马在时钟沿立马到达,会破坏downstream的hold时间。
如何转化为编译器识别的信息?将参考点由下游时钟移动到FPGA管脚时钟
站在编译器的角度,如何依据设定的-max/-min转化为对本FPGA的布线约束?
用户告知编译器下游芯片的Tsu/Th/Tdmax/Tdmin(线缆延时),
编译器得到:output_delay (Tdmax+Tsu,Tdmin-Th)
编译器知道了在上游FPGA管脚参考处的时序约束是 (Tdmin-Th) T-(Tdmax+Tsu)
SDR框图
DDR框图
-clock_fall:指定下降沿。以下降沿为参考,分析下降沿之前的数据稳定时间。
-add_delay:保护下降沿的max/min约束不被覆盖。
参考
【 FPGA 】设置输出延迟(Output Delay)_Reborn Lee-CSDN博客_fpga将一个信号延时输出
关于set_input_delay和set_output_delay - FPGA/ASIC/IC前端设计 - EETOP 创芯网论坛 (原名:电子顶级开发网) -