首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Vivado使用误区与进阶

Vivado使用误区与进阶

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 的基本语法中, 是想要设定 input 约束的端口名,可以是一个或数个 port;-clock 之后的 指明了对  时序进行分析所用的时钟,可以是一个 FPGA 中真实存在的时钟也可以是预先定义好的虚拟时钟;-max 之后的  描述了用于 setup 分析的包含有板级走线和外部器件的延时;-min 之后的  描述了用于 hold 分析的包含有板级走线和外部器件的延时。
上述这些选项是定义 Input 约束时必须写明的,还有少数几个可选项,如 -add_delay和 -clock_fall 用于 DDR 接口的约束。
Output 约束

上图所示 set_output_delay 的基本语法中, 是想要设定 output 约束的端口名,可以是一个或数个 port;-clock 之后的 指明了对  时序进行分析所用的时钟,可以是一个 FPGA 中真实存在的时钟也可以是预先定义好的虚拟时钟;-max 之后的  描述了用于 setup 分析的包含有板级走线和外部器件的延时;-min之后的  描述了用于 hold 分析的包含有板级走线和外部器件的延时。
上述这些选项是定义 Output 约束时必须写明的,还有少数几个可选项如 -add_delay和 -clock_fall 用于 DDR 接口的约束。
Setup/Hold 时序分析
我们知道约束是为了设计服务,而设置好的约束必须在时序报告中加以验证。所以,怎样理解时序分析中的检查规则就成了重中之重,这一点对 I/O 约束来说尤为重要。理解时序分析工具如何选取路径分析的发送端(Launch)和接收端(Capture)时钟沿(Clock Edges),在 Setup 和 Hold 分析时又有怎样的具体区别,以及这些数字在时序报告中如何体现等等是设置正确 I/O 约束的基础。
更具体的时序分析方法以及如何深入解读时序报告等内容将会在后续另开主题文章详述,这里仅就 Setup/Hold 分析时对时钟边沿的选择加以描述,便于以下章节的展开。
Setup 时序分析
同步电路设计中,一般情况下,数据在时钟上升沿发送,在下一个时钟上升沿接收,发送的时钟沿称作 Launch Edge,接收沿称作 Capture Edge。时序分析中的 Setup Check 跟Capture Edge 的选择息息相关。
在 SDR 接口的 setup 分析中,工具如下图这样识别发送和接收时钟沿。

而在 DDR 接口的 setup 分析中,因为数据是双沿采样,所以发送和接收时钟沿变成上升(下降)沿发送,下降(上升)沿接收。

Hold 时序分析

Hold Check 主要是为了保证数据在接收(采样)端时钟沿之后还能稳定保持一段时间,对 Hold 分析而言,同一个时钟沿既是 Launch Edge 也是 Capture Edge,这一点对 SDR和 DDR(不论是中心对齐还是边沿对齐)都一样。
Input 接口类型和约束
由于历史的原因,相当一部分 FPGA 设计仍然在系统中起到胶合逻辑(Glue Logic)的作用,当然,如今的 FPGA 中嵌入了高速串行收发器和嵌入式处理器等,早就不仅仅局限于系统设计的配角,反而成为了其中的主角甚至是明星。但数据接口的同步一直是FPGA 设计中的常见问题,也是一个重点和难点,很多设计不稳定都是因为数据接口的同步有问题。
FPGA 的数据接口同步根据系统级设计方式来讲可以分为系统同步和源同步两种。
继承事业,薪火相传
返回列表