版主: 51FPGA |
xilinx论坛
最后登陆时间:2015-03-19 10:58:07 |
XDC约束技巧之I/O篇 (上)
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约束
上图所示set_input_delay的基本语法中,<objects> 是想要设定input约束的端口名,可以是一个或数个port;-clock 之后的 <clock_name> 指明了对 <objects> 时序进行分析所用的时钟,可以是一个FPGA中真实存在的时钟也可以是预先定义好的虚拟时钟;-max后的 <maxdelay> 描述了用于setup分析的包含有板级走线和外部器件的延时;-min之后的 <mindelay> 描述了用于hold分析的包含有板级走线和外部器件的延时。
上述这些选项是定义Input约束时必须写明的,还有少数几个可选项,如 -add_delay 和 -clock_fall用于DDR接口的约束。
Output约束
Setup/Hold时序分析
我们知道约束是为了设计服务,而设置好的约束必须在时序报告中加以验证。所以,怎样理解时序分析中的检查规则就成了重中之重,这一点对I/O约束来说尤为重要。理解时序分析工具如何选取路径分析的发送端(Launch)和接收端(Capture)时钟沿(Clock Edges),在Setup和Hold分析时又有怎样的具体区别,以及这些数字在时序报告中如何体现等等是设置正确I/O约束的基础。
Setup时序分析
同步电路设计中,一般情况下,数据在时钟上升沿发送,在下一个时钟上升沿接收,发送的时钟沿称作Launch Edge,接收沿称作Capture Edge。时序分析中的Setup Check跟Capture Edge的选择息息相关。
Hold时序分析
Hold Check主要是为了保证数据在接收(采样)端时钟沿之后还能稳定保持一段时间,对Hold分析而言,同一个时钟沿既是Launch Edge也是Capture Edge,这一点对SDR和DDR(不论是中心对齐还是边沿对齐)都一样。
Input接口类型和约束
由于历史的原因,相当一部分FPGA设计仍然在系统中起到胶合逻辑(Glue Logic)的作用,当然,如今的FPGA中嵌入了高速串行收发器和嵌入式处理器等,早就不仅仅局限于系统设计的配角,反而成为了其中的主角甚至是明星。但数据接口的同步一直是 FPGA设计中的常见问题,也是一个重点和难点,很多设计不稳定都是因为数据接口的同步有问题。
系统同步接口
源同步接口
为了改进系统同步接口中时钟频率受限的弊端,一种针对高速I/O的同步时序接口应运而生,在发送端将数据和时钟同步传输,在接收端用时钟沿脉冲来对数据进行锁存,重新使数据与时钟同步,这种电路就是源同步接口电路(Source Synchronous Interface)。
DDR接口的约束设置
DDR源同步接口的约束稍许复杂,需要将上升沿和下降沿分别考虑和约束,以下以源同步接口为例,分别就输入接口数据为中心对齐或边沿对齐的方式来举例。
DDR源同步中心对齐输入接口
可以这样计算输入接口约束:DDR方式下数据实际的采样周期是时钟周期的一半;上升沿采样的数据(Rise Data)的 -max 应该是采样周期减去这个数据的发送沿(下降沿)之前的数据有效窗口值dv_bfe,而对应的-min 就应该是上升沿之后的数据有效窗口值dv_are ;同理,下降沿采样的数据(Fall Data)的 -max 应该是采样周期减去这个数据的发送沿(上升沿)之前的数据有效窗口值dv_bre,而对应的-min 就应该是下降沿之后的数据有效窗口值dv_afe 。
DDR源同步边沿对齐输入接口
可以这样计算输入接口约束:因为已知条件是数据相对于时钟上升沿和下降沿的skew,所以可以分别独立计算;上升沿的 -max 是上升沿之后的数据skew (skew_are ),对应的-min 就应该是负的上升沿之前的数据skew (skew_bre );下降沿的 -max 是下降沿之后的数据skew (skew_afe ),对应的-min 就应该是负的下降沿之前的数据skew (skew_bfe )。
虚拟时钟
在FPGA做系统同步输入接口的情况下,很多时候上游器件送入的数据并不是跟某个FPGA中已经存在的真实的时钟相关,而是来自于一个不同的时钟,这时就要用到虚拟时钟(Virtual Clock)。
|
共1条 1/1 1 |