本篇研究set_input_delay约束的使用方法,在IO口约束上除了电平和管脚约束,还有set_input_delay约束和set_output_delay约束。本节着重讲解set_input_delay。
Set_input_delay主要用于外部芯片向FPGA同步传输数据时,用来告诉FPGA外部进来的数据信号和时钟的相位关系,FPGA根据相位关系,能够数据进入FPGA后第一级寄存器的位置,使得满足FPGA的setup time和hold time要求。别的资料上讲解,外部芯片与FPGA之间进行同步数据通信,分为源同步接口和系统同步接口。
图一 系统同步接口
如图一所示,所谓系统同步上游器件仅仅传递数据信号到FPGA 中,时钟信号则完全依靠系统板级来同步。时钟信号在系统级上同源,板级走线的延时也要对齐。正因为这样的设计,决定了数据传递的性能受到时钟在系统级的走线延时和skew 以及数据路径延时的双重限制,无法达到更高速的设计要求,所以大部分情况也仅仅应用SDR 方式。
图二源同步接口
如图二所示,所谓源同步接口,为了改进系统同步接口中时钟频率受限的弊端,一种针对高速I/O 的同步时序接口应运而生,在发送端将数据和时钟同步传输,在接收端用时钟沿脉冲来对数据进行锁存,重新使数据与时钟同步,这种电路就是源同步接口电路(Source Synchronous Interface)。源同步接口最大的优点就是大大提升了总线的速度,在理论上信号的传送可以不受传输延迟的影响,所以源同步接口也经常应用DDR 方式,在相同时钟频率下提供双倍于SDR 接口的数据带宽。
其实分析这两种同步接口,理论基础是一样的,还是之前的静态时序分析方法。系统同步接口相当于FPGA内部的两个寄存器,clock skew非常小。源同步接口也可以看成FPGA内部的两个寄存器,但clock skew和datapath delay一样大。套用静态时序分析里面的setup t