本文摘自《Vivado使用误区与进阶》,作者为Xilinx工具与方法学应用专家Ally Zhou。
《XDC 约束技巧之时钟篇》中曾对 I/O 约束做过简要概括,相比较而 言,XDC 中的 I/O 约束虽然形式简单,但整体思路和约束方法却与 UCF 大 相径庭。加之 FPGA 的应用特性决定了其在接口上有多种构建和实现方 式,所以从 UCF 到 XDC 的转换过程中,最具挑战的可以说便是本文将要 讨论的 I/O 约束了。
01
I/O约束的语法
XDC 中可以用于 I/O 约束的命令包括set_input_delay/set_output_delay 和set_max_delay/set_min_delay。其中,只有那些从 FPGA 管脚进入和/或输出都不经过任何时序元件的纯组合逻辑路径可以用set_max_delay/ set_min_delay 来约束,其余I/O时序路径都必须由set_input_delay/ set_output_delay来约束。如果对 FPGA 的 I/O 不加任何 约束,Vivado 会缺省认为时序要求为无穷大,不仅综合和实现时不会考虑 I/O 时序,而且在时序分析时也不会报出这些未约束的路径。
本文以下章节将会着重讨论 XDC 接口约束和时序分析的基础,介绍如 何使用set_input_delay/set_output_delay 对 FPGA 的 I/O 时序进行约束。
Input约束
![3c5e134b7cd8e69c21eabc0577883a7a.png](https://i-blog.csdnimg.cn/blog_migrate/2c271557e51230d6cf62f88a2f33d368.jpeg)
上图所示 set_input_delay 的基本语法中, 是想要设定 input 约束的端口名,可以是一个或数个 port;-clock 之后的 指 明了对 时序进行分析所用的时钟,可以是一个FPGA 中真实存在的时钟也可以是预先定义好的虚拟时钟;-max之后的描 述了用于 setup 分析的包含有板级走线和外部器件的延时;-min之后的 描述了用于hold分析的包含有板级走线和外部器件的延时。上述这些选项是定义 Input 约束时必须写明的,还有少数几个可选项,如-add_delay和-clock_fall用于DDR接口的约束。
Output
![d82569e2352ef871c527acce095e4324.png](https://i-blog.csdnimg.cn/blog_migrate/f778dc0fe572f996f02c05b628b9c9ab.jpeg)
上图所示set_output_delay的基本语法中, 是想要设定output 约束的端口名,可以是一个或数个port;-clock之后的指明了对 时序进行分析所用的时钟,可以是一个 FPGA 中真实存在的时钟也可以是预先定义好的虚拟时钟;-max 之后的描述了用于 setup 分析的包含有板级走线和外部器件的延时;-min之后的描述了用于 hold 分析的包含有板级走线和外部器件的延时。上述这些选项是定义Output约束时必须写明的,还有少数几个可选项如-add_delay 和 -clock_fall用于DDR接口的约束。
<