时序约束

视频:约束爆炸

本段 Xilinx 快速入门视频将探讨约束爆炸。视频探讨了是什么导致时序约束爆炸,以及如何调试和修复异常约束问题。

输出延迟是怎么回事?

作者:Sanjay Churiwala,赛灵思公司工具与方法学应用专家

本篇文章我们将与大家共同讨论时序约束方面的一个概念:output_delay

Output_delay可选参数-max相对比较容易理解。为了全面性本文下面也进行了介绍

Output_delay的另一个可选参数-min则比较难理解,这也是本文的主要目的

我们以下面这个情况为例:

B表示整个设计中的一个模块,也是我们要进行约束的部分

P表示模块B的一个输出端口,output_delay设置的一个节点

F1表示模块B内部的一个触发器,同时也是P的驱动源

F2表示模块外部的一个触发器,用于采样P输出的数据

为了简单起见,我们假设F1和F2采用同一驱动时钟,而且也不存在时钟偏移。P端口的output_delay设置也参照同一时钟源

P端口的output_delay设置也参照同一时钟源

为了更容易理解,我们使用一些具体的参数值

在仿真中防止脉冲滤波

作者:Sanjay,赛灵思公司工具与方法学应用专家

通常如果你的设计在较低时钟频率时通过了仿真,但是在较高时钟频率时却失败了,你的第一个问题应该是你的设计在某个较高时钟频率时是否达到了时序约束的要求。

然而这里我们将举这样一个例子,就是对于某个较高时钟频率你已经检查了静态时序分析(STA),而且时序约束也是正确的。

这种情况是什么引起的较高时钟频率仿真失败呢?

可能的原因就是仿真方式、设计本身或者testbench设置方式有问题。

然而在较低时钟频率通过了仿真这个事实就排除了设计/testbench/仿真在设置上的问题。

排除了上面两项,下一个可能就是脉冲拒绝(reject)或者脉冲错误。

“脉冲拒绝(reject)”和“脉冲错误”是Verilog仿真中的概念。

这些概念说的是脉冲的持续时间小于某个值(pulse_r)就不会通过某个电路元件。

当然脉冲持续时间大于pulse_r,但是如果小于另一个值pulse_e尽管会通过,但是在仿真中显示的是“x”。

这个持续时间是以通过某元器件延迟的百分比来表示的。

比如通过某元件的延迟是1ns。

0.5ns的脉冲表示为50%的持续时间。

现在假设设计采用的频率是200MHz。

对应的周期就是5ns。

观看视频,学习如何使用 Vivado 的“时序约束向导”来完整地约束您的设计。该向导延续 UltraFAST 设计方法学中的要求来定义时钟,时钟交互,以及输入/输出约束。本视频向您演示了如何使用向导将一个部分约束的设计转换为完全约束的设计来传递时序。

让 XDC 时序约束为您效力

作者:Adam Taylor e2v 公司首席工程师 aptaylor@theiet.org

时序和布局约束是实现设计要求的关键因素。本文是介绍其使用方法的入门读物。

完成 RTL 设计只是 FPGA 设计量产准备工作中的一部分。接下来的挑战是确保设计满足芯片内的时序和性能要求。为此,您经常需要定义时序和布局约束。我们了解一下在基于赛灵思 FPGA 和 SoC 设计系统时如何创建和使用这两种约束。

时序约束
最基本的时序约束定义了系统时钟的工作频率。然而,更高级的约束能建立时钟路径之间的关系。工程师利用这类约束确定是否有必要对路径进行分析,或者在时钟路径之间不存在有效的时序关系时忽视路径。

默认情况下,赛灵思的 Vivado® 设计套件会分析所有关系。然而,并非设计中的所有时钟之间都有可以准确分析的时序关系。例如当时钟是异步的,就无法准确确定它们的相位,如图 1 所示。

OFFSET IN使用举例

本文将结合具体实例阐述OFFSET IN的使用方法。注意:这是我第一次写OFFSET IN约束,本文仅供参考。阅读本文前需要了解时序收敛的基本概念,OFFSET IN和Period的相关知识,可先阅读时序收敛:基本概念,OFFSET约束(OFFSET IN 和OFFSET OUT)这两篇内容。

1. 分析

某器件(Device)有信号RXD0-RXD15,RKLSB,RKMSB需要输入到FPGA内,同时有与数据同步的RXCLK,数据为SDR输入。如下图所示,这是一个典型的源同步输入方式,需要给出OFFSET IN约束。

OFFSET IN的相关参数可以到与器件对应的Datasheet内寻找,该器件的输入满足以下关系。RXD0-RXD15,RKLSB,RKMSB在RXCLK上升沿到达前3ns有效,同时在上升沿之后保持3ns。(这一情况对应TXCLK=80MHz,TXCLK = RXCLK)

特殊约束From To

“A timing exception is needed when the logic behaves in a way that is not timed correctly by default.”

前面谈时序约束的时候,略去了Path specific exceptions。'Path specific exceptions'可以直接理解为特别指定的路径例外。我们自然希望软件帮我们做好绝大多数事情,既然存在这个例外,那么说明软件在知道了OFFSET 和 PERIOD之后,还有并不知晓的时序要求。所以这个时序要求需要我们人为指定。这可能有多种情况,一下分别说明(注意,From to 我也没用过,所以可能不对……)

多周期(Multi-Cycle)约束

By Adam Taylor

之前在博客发表的文章中,我已经介绍了在Vivado环境下的基本约束,这篇文章将着重介绍时序约束。

在FPGA里的底层,我们利用时钟来提供的时序参考,据此来传输和接收数据。如果我们想要对时钟进行分析,我们需要考虑时钟周期,建立时间(Tsu)和保持(Thd)时间,和Tclk-Q,并要保证他们的时序没有冲突。

尽管我们可以手工检查某一个寄存器的时序,但对于包含数百万触发器和非理想时钟树的复杂的设计来说,手工检查是不可能的。因此必须依靠EDA工具(本例中为Vivado设计套件)来自动处理时钟的抖动和偏移。

FPGA开发之时序约束(周期约束)

时序约束可以使得布线的成功率的提高,减少ISE布局布线时间。这时候用到的全局约束就有周期约束和偏移约束。周期约束就是根据时钟频率的不同划分为不同的时钟域,添加各自周期约束。对于模块的输入输出端口添加偏移约束。

这里先说一下周期约束:周期约束是为了达到同步组件的时序要求。如果相邻同步原件相位相反,那么延迟就会是时钟约束值的一半,一般不要同时使用上升沿和下降沿。注意:在实际工程中,附加的约束时间为期望值的90%,即约束的最高频率是实际工作频率的110%左右。

Xilinx FPGA编程技巧之常用时序约束详解

1. 基本的约束方法
为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三种路径为:
. 输入路径(Input Path),使用输入约束
. 寄存器到寄存器路径(Register-to-Register Path),使用周期约束
. 输出路径(Output Path),使用输出约束
. 具体的异常路径(Path specific exceptions),使用虚假路径、多周期路径约束

同步内容