本篇用vivado timing constraints wizard来进行set_input_delay的约束,set_input_delay界面如图一所示,包括interface,clock,synchronous,alignment,data rate and edge。几个参数,synchronous选择是系统同步还是源同步,aligment选择是边沿同步还是中心同步,data rate and edge 选择是上升沿采样,下降沿采样还是双沿采样。首先我们用系统同步方式来进行分析验证,选择系统同步,上升沿采样时,右边有tco_min,tco_max,trce_dly_min,trce_dly_max四个参数,tco_min为外部芯片的tco最小值,tco_max为外部芯片的tco最大值,trce_dly_min为数据信号从外部芯片到FPGA管脚的最小延时,trce_dly_max为数据信号从外部芯片到FPGA管脚的最大延时,此时vivado默认clk到FPGA和到外部芯片的skew为0,符合我们前面分析的公式input_delay = Tco+Tlogic_PCB – Tskew_PCB。
![在这里插入图片描述](https://img-blog.csdnimg.cn/9916605cf2b74b959562170e93442911.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pyq5p2l55qE5bCP6ICB5aS0,size_15,color_FFFFFF,t_70,g_se,x_16)
图一
系统同步方式要求清楚外部芯片的TCO和数据信号到达FPGA的延时以及clk到达外部芯片和FPGA的skew。
我们设定了如图二的约束,设置完成后,在xdc文件中创建了如下约束:
set_input_delay -clock [get_clocks clk] -min -add_delay 4.000 [get_ports data_in]
set_input_delay -clock [get_clocks clk] -max -add_delay 6.000 [get_ports data_in]
![在这里插入图片描述](https://img-blog.csdnimg.cn/49a8bd3dc17e4923989c592b3edfd7d9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pyq5p2l55qE5bCP6ICB5aS0,size_15,color_FFFFFF,t_70,g_se,x_16)
图二
继续让软件完成布局布线,查看IO口的时序路径分析如图三图四图五所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2ab8224b287641bc9b17a0652d91a9b6.png)
图三
![在这里插入图片描述](https://img-blog.csdnimg.cn/5fea58b088bd4141a5d014f06ad3abdb.png)
图四