FPGA高级设计——时序分析和收敛(转)
何谓静态时序分析(Static Timing Analysis,简称STA)?
它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析。分析的最终结果当然是要求系统时序满足设计者提出的要求。
下面举一个最简单的例子来说明时序分析的基本概念。假设信号需要从输入到输出在FPGA内部经过一些逻辑延时和路径延时。我们的系统要求这个信号在FPGA内部的延时不能超过15ns,而开发工具在执行过程中找到了如图4.1所示的一些可能的布局布线方式。那么,怎样的布局布线能够达到我们的要求呢?仔细分析一番,发现所有路径的延时可能为14ns、14ns、16ns、17ns、18ns,有两条路径能够满足要求,布局布线就会选择满足要求的两条路径之一。
1.静态时序分析模型
因此,有些说法是错误的,不分什么情况就说时序不收敛,其实在不加约束的情况下谈时序约束是没有意义的。
附加约束的基本作用
1.提高设计的工作频率
对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。
2.获得正确的时序分析报告
几乎所有的FPGA设计平台都包含静态时序分析工具,利用这类工具可以获得映射或布局布线后的时序分析报告,从而对设计的性能做出评估。静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具输出正确的时序分析报告。
3.指定FPGA/CPLD引脚位置与电气标准
FPGA/CPLD的可编程特性使电路板设计加工和FPGA/CPLD设计可以同时进行,而不必等FPGA/CPLD引脚位置完全确定,从而节省了系统开发时间。这样,电路板加工完成后,设计者要根据电路板的走线对FPGA/CPLD加上引脚位置约束,使FPGA/CPLD与电路板正确连接。另外通过约束还可以指定IO引脚所支持的接口标准和其他电气特性。为了满足日新月异的通信发展,Xilinx新型FPGA/CPLD可以通过IO引脚约束设置支持诸如AGP、BLVDS、CTT、GTL、GTLP、HSTL、LDT、LVCMOS、LVDCI、LVDS、LVPECL、LVDSEXT、LVTTL、PCI、PCIX、SSTL、ULVDS等丰富的IO接口标准。另外通过区域约束还能在FPGA上规划各个模块的实现区域,通过物理布局布线约束,完成模块化设计等。
静态时序分析中使用的各个模型分析
1.周期(PERIOD)的含义
周期的含义是时序中最简单也是最重要的含义,其它很多时序概念会因为软件商不同略有差异,而周期的概念确是最通用的,周期的概念是FPGA/ASIC时序定义的基础概念。后面要讲到的其它时序约束都是建立在周期约束的基础上的,很多其它时序公式,可以用周期公式推导。周期约束是一个基本时序和综合约束,它附加在时钟网线上,时序分析工具根据PERIOD约束检查时钟域内所有同步元件的时序是否满足要求。PERIOD约束会自动处理寄存器时钟端的反相问题,如果相邻同步元件时钟相位相反,那么它们之间的延迟将被默认限制为PERIOD约束值的一半。如下图所示,
2.周期定义
时钟的最小周期为:
TCLK = TCKO +TLOGIC +TNET +TSETUP -TCLK_SKEW
TCLK_SKEW =TCD1 -TCD2 (稳定时为负的)
其中TCKO为时钟输出时间,TLOGIC为同步元件之间的组合逻辑延迟,TNET为网线延迟,TSETUP为同步元件的建立时间,TCLK_SKEW为时钟信号TCD2和TCD1延迟的差别。
2.关于输入到达时间
图3.输入到达时间示意图
定义的含义是输入数据在有效时钟沿之后的TARRIVAL时刻到达。则,
TARRIVAL=TCKO+TOUTPUT+TLOGIC (1)
根据上面介绍的周期(Period)公式,我们可以得到:
Tcko+Toutput+Tlogic+Tinput+Tsetup-Tclk_skew=Tclk; (2)
将公式1代入公式2: Tarrival+Tinput+Tsetup-Tclk_skew=Tclk, 而Tclk_skew满足时序关系后为负,所以
TARRIVAL +TINPUT+TSETUP <TCLK (3)
这就是Tarrival应该满足的时序关系。其中TINPUT为输入端的组合逻辑、网线和PAD的延迟之和,TSETUP为输入同步元件的建立时间。
3.数据延时和数据到达时间的关系
4.数据延时和数据到达时间的关系
TDELAY为要求的芯片内部输入延迟,其最大值TDELAY_MAX与输入数据到达时间TARRIVAL的关系如上图所示。也就是说: TDELAY_MAX+TARRIVAL=TPERIOD (4)
所以:
TDELAY<TDELAY_MAX=TPERIOD-TARRIVAL
4.要求输出的稳定时间
从下一级输入端的延迟可以计算出当前设计输出的数据必须在何时稳定下来,根据这个数据对设计输出端的逻辑布线进行约束,以满足下一级的建立时间要求,保证下一级采样的数据是稳定的。计算要求的输出稳定时间如下图所示:
5.要求的输出稳定时间示意图
公式的推导如下:
定义: TSTABLE = TLOGIC +TINPUT +TSETUP
从前面介绍的周期(Period)公式,可以得到(其中TCLK_SKEW=TCLK1-TCLK2):
TCLK=TCKO+TOUTPUT+TLOGIC+TINPUT+TSETUP+TCLK_SKEW
将TSTABLE的定义代入到周期公式,可以得到:
TCLK=TCKO+TOUTPUT+TSTABLE+TCLK_SKEW
所以:TCKO +TOUTPUT+TSTABLE<TCLK
这个公式就是TSTABLE必须要满足的基本时序关系,即本级的输出应该保持怎么样的稳定状态,才能保证下级芯片的采样稳定。有时我们也称这个约束关系是输出数据的保持时间的时序约束关系。只要满足上述关系,当前芯片输出端的数据比时钟上升沿提早TSTABLE 时间稳定下来,下一级就可以正确地采样数据。其中TOUTPUT为设计中连接同步元件输出端的组合逻辑、网线和PAD的延迟之和,TCKO为同步元件时钟输出时间。
下面阐述的是上面的时序概念对应于Altera中的几个重要的时序问题。
下面主要介绍Altera对应的这些时序概念和约束方法。 前面首先介绍的第一个时序概念周期(Period),这个概念是FPGA/ASIC通用的一个概念,各方的定义相当统一,至多是描述方式不同罢了,所有的FPGA设计都首先要进行周期约束,这样做的好处除了在综合与布局布线时给出规定目标外,还能让时序分析工具考察整个设计的Fmax等。
Altera的周期定义如下图所示,公式描述如下:
图1.Altera-clock period
Clock Period = Clk-to-out + Data Delay + Setup Time - Clk Skew
即,Tclk= Tco+ B + Tsu-(E-C) Fmax =1/Tclk
对比一下前面的介绍,只要理解了B 包含了两级寄存器之间的所有 logic 和 net 的延时就会发现与前面公式完全一致。
其他一些重要的概念:
1.Clock Setup Time (tsu)
要想正确采样数据,就必须使数据和使能信号在有效时钟沿到达前就准备好,所谓时钟建立时间就是指时钟到达前,数据和使能已经准备好的最小时间间隔。如下图所示:
图2.tsu示意图
这里定义Setup时间是站在同步时序整个路径上的,需要区别的是另一个概念Micro tsu。Micro tsu指的是一个触发器内部的建立时间,它是触发器的固有属性,一般典型值小于1~2ns。在Xilinx等的时序概念中,称Altera的Micro tsu为setup时间,用Tsetup表示,请大家区分一下。 回到Altera的时序概念,Altera的tsu定义如下: tsu = Data Delay – Clock Delay + Micro tsu
2.Clock Hold Time (tH)
时钟保持时间是只能保证有效时钟沿正确采用的数据和使能信号的最小稳定时间。其定义如下图所示:
图3.th示意图
时钟保持时间是只能保证有效时钟沿正确采用的数据和使能信号的最小稳定时间。其定义如下图所示:
定义的公式为: tH= Clock Delay – Data Delay + Micro tH
注:其中Micro tH是指寄存器内部的固有保持时间,同样是寄存器的一个固有参数,典型值小于1~2ns。
3.Clock-to-Output Delay(tco)
这个时间指的是当时钟有效沿变化后,将数据推倒同步时序路径的输出端的最小时间间隔。如下图所示:
图4,tco示意图
定义: tco = Clock Delay + Micro tco + Data Delay
注:其中 Micor tco也是一个寄存器的固有属性,指的是寄存器相应时钟有效沿,将数据送到输出端口的内部时间参数。它与Xilinx的时序定义中,有一个概念叫Tcko是同一个概念.
4.Pin to Pin Delay (tpd)
tpd指输入管脚通过纯组合逻辑到达输出管脚这段路径的延时,特别需要说明的是,要求输入到输出之间只有组合逻辑,才是tpd延时。
5.Slack
Slack是表示设计是否满足时序的一个称谓,正的slack表示满足时序(时序的余量),负的slack表示不满足时序(时序的欠缺量)。slack的定义和图形如下图所示。
图6.slack示意图
Slack = Required clock period – Actual clock period
Slack = Slack clock period – (Micro tCO+ Data Delay + Micro tSU)
6.始终偏斜
Clock Skew指一个同源时钟到达两个不同的寄存器时钟端的时间偏移,如下图所示:
图7.clock skew示意图