《FPGA时序约束、时序分析.docx》由会员分享,可在线阅读,更多相关《FPGA时序约束、时序分析.docx(11页珍藏版)》请在三一办公上搜索。
1、FPGA设计之时序设计FPGA设计一个很重要的设计是时序设计,而时序设计的实质就是满足每一个触发器的建立 (Setup)/保持(Hold)时间的要求。建立时间(Setup Time):是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间, 如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(Hold Time):是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间, 如果保持时间不够,数据同样不能被打入触发器。FPGA设计分为异步电路设计和同步电路设计,然而很多异步电路设计都可以转化为同步 电路设计,在设计时尽量采用同步电路进行设计。对于同步电路可以转化的逻辑必须转化,
2、不 能转化的逻辑,应将异步的部分减到最小,而其前后级仍然应该采用同步设计。为了让同步电路可靠地运行,就要对时钟偏差进行控制,以使时钟偏差减小到可用的范围。 影响时钟偏差的主要有以下几个因素:o用于连接时钟树的连线o钟树的拓扑结构o 时钟的驱动o 时钟线的负载o时钟的上升及下降时间在通常的FPGA设计中对时钟偏差的控制主要有以下几种方法:o控制时钟信号尽量走可编程器件的的全局时钟网络。在可编程器件中一般都有 专门的时钟驱动器及全局时钟网络,不同种类、型号的可编程器件,它们中的 全局时钟网络数量不同,因此要根据不同的设计需要选择含有合适数量全局时 钟网络的可编程器件。一般来说,走全局时钟网络的时钟
3、信号到各使用端的延 时小,时钟偏差很 小,基本可以忽略不计。o若设计中时钟信号数量很多,无法让所有的信号都走全局时钟网络,那么可以 通过在设计中加约束的方法,控制不能走全局时钟网络的时钟信号的时钟偏差。o异步接口时序裕度要足够大。局部同步电路之间接口都可以看成是异步接口, 比较典型的是设计中的高低频电路接口、I/O接口,那么接口电路中后一级触 发器的建立-保持时间要满足要求,时序裕度要足够大。o在系统时钟大于30MHz时,设计难度有所加大,建议采用流水线等设计方法。 采用流水线处理方式可以达到提高时序电路的速度,但使用的器件资源也成倍 增加。o要保证电路设计的理论最高工作频率大于电路的实际工作
4、频率。A时序约束的概念和基本策略时序约束主要包括周期约束(FFS到FFS,即触发器到触发器)和偏移约束(IPAD 到FFS、FFS到OPAD)以及静态路径约束(IPAD到OPAD)等3种。通过附加约 束条件可以使综合布线工具调整映射和布局布线过程,使设计达到时序要求。例 如用OFFSET_IN_BEFORE约束可以告诉综合布线工具输入信号在时钟之前什么 时候准备好,综合布线工具就可以根据这个约束调整与IPAD相连的Logic Circuitry的综合实现过程,使结果满足FFS的建立时间要求。附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专 门约束。附加全局约束时,首先定义
5、设计的所有时钟,对各时钟域内的同步元件 进行分组,对分组附加周期约束,然后对FPGA/CPLD输入输出PAD附加偏移约 束、对全组合逻辑的PAD TO PAD路径附加约束。附加专门约束时,首先约束分 组之间的路径,然后约束快、慢速例外路径和多周期路径,以及其他特殊路径。B附加约束的基本作用1. 提高设计的工作频率对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味 着高处理能力。通过附加约束可以控制逻辑的综合、映射、布局和布线, 以减小逻辑和布线延时,从而提高工作频率。2. 获得正确的时序分析报告几乎所有的FPGA设计平台都包含静态时序分析工具,利用这类工具可以 获得映射或布局布线
6、后的时序分析报告,从而对设计的性能做出评估。静 态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求 设计者正确输入约束,以便静态时序分析工具输出正确的时序分析报告。3. 指定FPGA/CPLD引脚位置与电气标准FPGA/CPLD的可编程特性使电路板设计加工和FPGA/CPLD设计可以同时进 行,而不必等FPGA/CPLD引脚位置完全确定,从而节省了系统开发时间。 这样,电路板加工完成后,设计者要根据电路板的走线对FPGA/CPLD加上 引脚位置约束,使FPGA/CPLD与电路板正确连接。另外通过约束还可以指 定IO引脚所支持的接口标准和其他电气特性。为了满足日新月异的通信 发展,
7、Xilinx新型FPGA/CPLD可以通过IO引脚约束设置支持诸如AGP、 BLVDS、 CTT、 GTL、 GTLP、 HSTL、 LDT、 LVCMOS、 LVDCI、 LVDS、 LVPECL、 LVDSEXT、LVTTL、PCI、PCIX、SSTL、ULVDS 等丰富的 IO 接口标准。另 外通过区域约束还能在FPGA上规划各个模块的实现区域,通过物理布局 布线约束,完成模 块化设计等。C周期(PERIOD)的含义周期的含义是时序中最简单也是最重要的含义,其它很多时序概念会因为软件商 不同略有差异,而周期的概念确是最通用的,周期的概念是FPGA/ASIC时序定义 的基础概念。后面要讲到
8、的其它时序约束都是建立在周期约束的基础上的,很多 其它时序公式,可以用周期公式推导。周期约束是一个基本时序和综合约束,它 附加在时钟网线上,时序分析工具根据PERIOD约束检查时钟域内所有同步元件 的时序是否满足要求。PERIOD约束会自动处理寄存器时钟端的反相问题,如果 相邻同步元件时钟相位相反,那么它们之间的延迟将被默认限制为PERIOD约束 值的一半。如下图所示,时钟的最小周期为:TCLK = TCKO +TLOGIC +TNET +TSETUP TCLK_SKEWTCLK_SKEW =TCD2 TCD1其中TCKO为时钟输出时间,TLOGIC为同步元件之间的组合逻辑延迟,TNET为网
9、线延迟,TSETUP为同步元件的建立时间,TCLK_SKEW为时钟信号TCD2和TCD1 延迟的差别。D数据和时钟之间的约束为了确保芯片数据采样可靠和下级芯片之间正确地交换数据,需要约束外部时钟 和数据输入输出引脚之间的时序关系(或者内部时钟和外部输入/输出数据之间 的关系,这仅仅是从采用了不同的参照系罢了)。约束的内容为告诉综合器、布 线器输入数据到达的时刻,或者输出数据稳定的时刻,从而保证与下一级电路的 时序关系。这种时序约束在 Xilinx 中用 Setup to Clock (edge),Clock (edge) to hold 等表示。在 Altera 里常用 tsu (Input
10、Setup Times)、th (Input Hold Times)、 tco (Clock to Out Delays)来表示。很多其它时序工具直接用setup和hold 表示。其实他们所要描述的是同一个问题,仅仅是时间节点的定义上略有不同。 下面依次介绍。E关于输入到达时间Xilinx的输入到达时间的计算时序描述如下图所示:图2输入到达时间示意图定义的含义是输入数据在有效时钟沿之后的TARRIVAL时刻到达。则,TARRIVAL=TCKO+TOUTPUT+TLOGIC 公式 1根据上面介绍的周期(Period)公式,我们可以得到:Tcko+Toutput+Tlogic+Tinput+Tse
11、tup-Tclk_skew=Tclk;公式 2弟将公式 1 代入公式2: Tarrival+Tinput+Tsetup-Tclk_skew=Tclk,而Tclk_skew满足时序关系后为负,所以TARRIVAL +TINPUT+TSETUP TCLK 公式 3这就是Tarrival应该满足的时序关系。其中TINPUT为输入端的组合逻辑、网线 和PAD的延迟之和,TSETUP为输入同步元件的建立时间。F数据延时和数据到达时间的关系图3数据延时和数据到达时间示意图TDELAY为要求的芯片内部输入延迟,其最大值TDELAY_MAX与输入数据到达时间 TARRIVAL的关系如上图所示。也就是说:TDE
12、LAY_MAX+TARRIVAL=TPERIOD 公 式4 所以:TDELAYTDELAYMAX二TPERIOD TARRIVALG要求输出的稳定时间从下一级输入端的延迟可以计算出当前设计输出的数据必须在何时稳定下来,根 据这个数据对设计输出端的逻辑布线进行约束,以满足下一级的建立时间要求, 保证下一级采样的数据是稳定的。计算要求的输出稳定时间如下图所示:图4要求的输出稳定时间示意图公式的推导如下:定义:TSTABLE = TLOGIC +TINPUT +TSETUP从前面帖子介绍的周期(Period)公式,可以得到(其中TCLK_SKEW=TCLK1 一TCLK2):TCLK = TCKO+
13、TOUTPUT+TLOGIC+TINPUT+TSETUP+TCLK_SKEW将TSTABLE的定义代入到周期公式,可以得到:TCLK=TCKO+TOUTPUT+TSTABLE+TCLK_SKEW所以:TCKO +TOUTPUT+TSTABLETCLK这个公式就是TSTABLE必须要满足的基本时序关系,即本级的输出应该保持怎么 样的稳定状态,才能保证下级芯片的采样稳定。有时我们也称这个约束关系是 输 出数据的保持时间的时序约束关系。只要满足上述关系,当前芯片输出端的数据 比时钟上升沿提早TSTABLE时间稳定下来,下一级就可以正确地采样数据。其 中TOUTPUT为设计中连接同步元件输出端的组合逻
14、辑、网线和PAD的延迟之和, TCKO为同步元件时钟输出时间。H实施时序约束的方法和命令实施上述约束的基本方法是,根据已知时序信息,推算需要约束的时间值, 实施约束。具体地说是这样的,首先对于一般设计,首先掌握的是TCLK,这个对 于设计者来说是个已知量。前面介绍公式和图中的TCKO和TSETUP(注:有的工 具软件对TCKO和TSETUP的定义与前面图形不同,还包含了到达同步器件的一段 logic的时延)是器件内部固有的一个时间量,一般我们选取典型值,对于FPGA, 这个量值比较小,一般不大于广2ns。比较难以确定的是TINPUT和TOUTPUT两 个时间量。约束输入时间偏移,需要知道TIN
15、PUT,TINPUT为输入端的组合逻辑、网线和PAD 的延迟之和,PAD的延时也根据器件型号也有典型值可选,但是到达输入端的 组合逻辑电路和网线的延时就比较难以确定了,只能通过静态时序分析工具分 析,或者通过底层布局布线工具量取,有很大的经验和试探的成分在里面。约束输出时间偏移,需要知道TOUTPUT,TOUTPUT为设计中连接同步元件输出端 的组合逻辑、网线和PAD的延迟之和,仍然是到达输出端的组合逻辑电路和网 线的延时就比较难以确定,需要通过静态时序分析工具分析,或者通过底层布局 布线工具量取,有很大的经验和试探的成分在里面。约束的具体命令根据约束工具不同而异,首先说使用Xilinx器件的
16、情况下,实 施上述约束的命令和方法。Xilinx把上述约束统称为:OFFSET约束(偏移约束), 一共有 4 个相关约束属性:OFFSET_IN_BEFORE、OFFSET_IN_AFTER、 OFFSET_OUT_BEFORE和OFFSET_OUT_AFTER。其中前两个属性叫做输入偏移(OFFSET_IN)约束,基本功能相似,仅仅是约束取的参考对象不同而已。后两 个属性叫做输出偏移(OFFSET_OUT)约束,基本功能相似,也是约束取的参考 对象不同而已。为了便于理解,举例说明。输入偏移约束:时钟周期为20ns,前级寄存器的TCKO选择1ns,前级输出逻辑 延时TOUTPUT为3ns,中间
17、逻辑TLOGIC的延时为10ns,那么TARRIVAL=14ns, 于是可以在数据输入引脚附加NET DATA_IN OFFET=IN 14ns AFTER CLK约束,也 可以使用OFFSET_IN_BEFORE对芯片内部的输入逻辑进行约束,其语法如下: NET DATA_IN OFFET=IN TDELAY BEFORE CLK其中TDELAY为要求的芯片内部输入延迟,其最大值与输入数据到达时间 TARRIVAL 的关系:TDELAY_MAX + TARRIVAL = TPERIOD,所以 TDELAY TPERIOD - TARRIVAL = 20 - 14 =6 ns。输出偏移约束:设
18、时钟周期为20ns,后级输入逻辑延时TINPUT为4ns、建立时 间TSETUP为1ns,中间逻辑TLOGIC的延时为10ns,那么TSTABLE=15ns,于是 可以在数据输入引脚附加NET DATA_OUT OFFET=OUT 15ns BEFORE CLK约束,也 可以直接对芯片内部的输出逻辑直接进行约束,NET DATA_OUT OFFET=OUT TOUTPUT_DELAY AFTER CLK,其中TOUTPUT_DELAY为要求的芯片内部输出延迟, 其最大值与要求的输出数据稳定时间TSTABLE的关系为:TOUTPUT_DELAY_MAX+TSTABLE= TPERIOD。TOUT
19、_DELAY TPERIOD - TSTABLE = 20 -15 = 5nsI Altera对应的时序概念下面主要介绍Altera对应的这些时序概念和约束方法。前面首先介绍的第一个 时序概念是周期(Period),这个概念是FPGA/ASIC通用的一个概念,各方的定 义相当统一,至多是描述方式不同罢了,所有的FPGA设计都首先要进行周期约 束,这样做的好处除了在综合与布局布线时给出规定目标外,还能让时序分析工 具考察整个设计的Fmax等。Altera的周期定义如下图所示,公式描述如下:Clock Period图5 Altera的Period示意图Clock Period = Clk-to-o
20、ut + Data Delay + Setup Time - Clk Skew 即,Tclk= Tco+ B + Tsu-(E-C) Fmax =1/Tclk对比一下前面的介绍,只要理解了 B包含了两级寄存器之间的所有logic和 net的延时就会发现与前面公式完全一致。J Altera的其他基本时序概念Clock Setup Time (tsu)要想正确采样数据,就必须使数据和使能信号在有效 时钟沿到达前就准备好,所谓时钟建立时间就是指时钟到达前,数据和使能已经 准备好的最小时间间隔。如下图所示:图6 tsu示意图(注:这里定义Setup时间是站在同步时序整个路径上的,需要区别的是另一个 概
21、念Micro tsu。Micro tsu指的是一个触发器内部的建立时间,它是触发器的 固有属性,一般典型值小于12ns。在Xilinx等的时序概念中,称Altera的Micro tsu为setup时间,用Tsetup表示,请大家区分一下。回到Altera的时序概 念,Altera 的 tsu 定义如下:tsu = Data Delay - Clock Delay + Micro tsu)Clock Hold Time (tH)时钟保持时间是只能保证有效时钟沿正确采用的数据 和使能信号的最小稳定时间。其定义如下图所示:图7 tH示意图定义的公式为:tH= Clock Delay - Data D
22、elay + Micro tH注:其中Micro tH是指寄存器内部的固有保持时间,同样是寄存器的一个固有 参数,典型值小于12ns。Clock-to-Output Delay (tco)这个时间指的是当时钟有效沿变化后,将数据 推倒同步时序路径的输出端的最小时间间隔。如下图所示:Data Delay图8 tco示意图丁Clock De/ayMicro tQQtco = Clock Delay + Micro tco + Data Delay(注:其中Micor tco也是一个寄存器的固有属性,指的是寄存器相应时钟有 效沿,将数据送到输出端口的内部时间参数。它与Xilinx的时序定义中,有一
23、个概念叫Tcko是同一个概念。)Pin to Pin Delay (tpd) tpd指输入管脚通过纯组合逻辑到达输出管脚这段 路径的延时,特别需要说明的是,要求输入到输出之间只有组合逻辑,才是tpd 延时。Slack是表示设计是否满足时序的一个称谓,正的slack表示满足时序(时序的 余量),负的slack表示不满足时序(时序的欠缺量)。slack的定义和图形如 下图所示。Si3CkCiocff PeHatOombrnatonalLogicData风捎虬图9 slack示意图Slack = Required clock period - Actual clock periodSlack = S
24、lack clock period - (Micro tCO+ Data Delay + Micro tSU)Clock Skew指一个同源时钟到达两个不同的寄存器时钟端的时间偏移,如下图 所示。图10 clock skew示意图基于FPGA的时序及同步设计2010-06-07 22:25数字电路中,时钟是整个电路最重要、最特殊的信号。第一,系统内大部分器件的动作都是在时钟的跳变沿上进行,这就要求时钟信 号时延差要非常小,否则就可能造成时序逻辑状态出错.第二,时钟信号通常是系统中频率最高的信号.第三,时钟信号通常是负载最重的信号,所以要合理分配负载。出于这样的考虑 在FPGA这类可编程器件内部
25、一般都设有数量不等的专门用于系统时钟驱动的全 局时钟网络。这类网络的特点是:一、负载能力特别强,任何一个全局时钟驱 动线都可以驱动芯片内部的触发器;二是时延差特别小;三是时钟信号波形畸 变小,工作可靠性好。因此,在FPGA设计中最好的时钟方案是:由专用的全局时钟输入引脚驱动单个 主时钟去控制设计项目中的每一个触发器。CPLD/FPGA都具有专门的全局时钟引 脚,它直接连到器件中的每一个寄存 器。这种全局时钟提供器件中最短的时钟 到输出的延时。同步设计时,全局时钟输入一般都接在器件的时钟端,否则会使 其性能受到影响。对于需要多时钟的时序电路,最好选用一个频率是它们的时钟 频率公倍数的高频主时钟。
26、各个功能模块要使用统一的复位电路。在使用带时 钟的触发器、计数器等有复位端的库器件时,一般应尽量使用有同步复位的器 件。注意复位时保证各个器件都能复位,以避免某些寄存器的初始状态不确定而 引起系统工作不可靠。时钟设计过程中,不可缺少的要涉及到数据的建立时间和保持时间的概念,深刻 理解这两个概念有助于我们设计出优良饿时钟网络。异步信号输入总是无法满 足数据的建立保持时间,所以建议大家把所有异步输入都先经过双触发器进行同 步化。在许多应用中只将异步信号同步化还是不够的,当系统中有两个或两个以 上非同源时钟的时候,数据的建立和保持时间很难得到保证,我们将面临复杂 的时间问题,那么这个时候怎么办呢?最
27、好的方法是将所有非同源时钟同步化, 那么又怎么样将非同源时钟同步化呢?我们可以使用带使能端的D触发器,并 引入一个高频时钟(频率高于系统中的所有源时钟),便可以达到使系统中所有 源时钟同步的效果。如下面的这个例子:系统有两个不同源时钟,一个为3MHz,一个为5MHz,不同的触发器使用不同的 时钟。为了系统稳定,假设我们引入一个20MHz时钟,那么这个20MHz的时钟 怎么才能将3M和5M时钟同步化呢?20M的高频时钟将作为系统时钟,输入到所有触发器的的时钟端3M_EN和5M_EN 将控制所有触发器的使能端。即原来接3M时钟的触发器,接20M时钟,同时3M_EN 将控制该触发器使能,原接5M时钟
28、的触发器,也接20M时钟,同时5M_EN将控 制该触发器使能。这样我们就可以将任何非同源时钟同步化。在通常的FPGA设计中对时钟偏差的控制主要有以下几种方法:1、控制时钟信号尽量走可编程器件的的全局时钟网络。在可编程器件中一般都 有专门的时钟驱动器及全局时钟网络,不同种类、型号的可编程器件,它们中的 全局时钟网络数量不同,因此要根据不同的设计需要选择含有合适数量全局时钟 网络的可编程器件。一般来说,走全局时钟网络的时钟信号到各使能端的延时小, 时钟偏差很小,基本可以忽略不计。2、若设计中时钟信号数量很多,无法让所有的信号都走全局时钟网络,那么可 以通过在设计中加约束的方法,控制不能走全局时钟网
29、络的时钟信号的时钟偏 差。3、异步接口时序裕度要足够大,局部同步电路之间接口都可以看成是异步接口, 比较典型的是设计中的高低频电路接口、I/O接口,那么接口电路中后一级触 发器的建立-保持时间要满足要求,时序裕度要足够大。4、在系统时钟大于30MHz时,设计难度有所加大,建议采用流水线等设计方法。5、要保证电路设计的理论最高工作频率大于电路的实际工作频率。复位和置位信号处理:在设计时应尽量保证有一全局复位信号,或保证触发器、计数器在使用前已经正 确清零状态。在设计寄存器的清除和置位信号时,应尽量直接从器件的专用引脚 驱动。另外,要考虑到有些器件上电时,触发器处于一种不确定的状态,系统设 计时应加入全局复位/Reset。这样主复位引脚就可以给设计中的每一个触发器馈送清除或置位信号,保证系统 处于一个确定的初始状态。需要注意的一点是:不要对寄存器的置位和清除端同 时施加不同信号产生的控制,因为如果出现两个信号同时有效的意外情况,会使 寄存器进入不定状态。