今天给大侠带来FPGA 高级设计:时序分析和收敛,话不多说,上货。
这里超链接一篇之前的STA的文章,仅供各位大侠参考。
FPGA STA(静态时序分析)
什么是静态时序分析?静态时序分析就是Static Timing Analysis,简称 STA。它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析。分析的最终结果当然是要求系统时序满足设计者提出的要求。
下面举一个最简单的例子来说明时序分析的基本概念。
假设信号需要从输入到输出在FPGA 内部经过一些逻辑延时和路径延时。我们的系统要求这个信号在 FPGA 内部的延时不 能超过 15ns,而开发工具在执行过程中找到了如图 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 所示
图 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 的关系如图 4 所示。也就是说:
TDELAY_MAX + TARRIVAL = TPERIOD(4)
所以:
TDELAY < TDELAY_MAX = TPERIOD - TARRIVAL(5)
4、要求输出的稳定时间
从下一级输入端的延迟可以计算出当前设计输出的数据必须在何时稳定下来,根据这个 数据对设计输出端的逻辑布线进行约束,以满足下一级的建立时间要求,保证下一级采样的 数据是稳定的。计算要求的输出稳定时间如图 5 所示:
图 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 的周期定义如图 6 所示,公式描述如下:
图 6 Altera-clock periodClock 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)
要想正确采样数据,就必须使数据和使能信号在有效时钟沿到达前就准备好,所谓时钟建立时间就是指时钟到达前,数据和使能已经准备好的最小时间间隔。如图 7 所示:
图 7 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)
时钟保持时间是只能保证有效时钟沿正确采用的数据和使能信号的最小稳定时间。其定 义如图 8 所示:
图 8 tH示意图
时钟保持时间是只能保证有效时钟沿正确采用的数据和使能信号的最小稳定时间。其定 义如下图所示:定义的公式为:tH = Clock Delay – Data Delay + Micro tH 注:其中 Micro tH 是指寄存器内部的固有保持时间,同样是寄存器的一个固有参数, 典型值小于 1~2ns。
3、Clock-to-Output Delay(tco)
这个时间指的是当时钟有效沿变化后,将数据推倒同步时序路径的输出端的最小时间间隔。如图 9 所示:
图 9 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 的定义和图形如图 10 所示:
图 10 Slack 示意图
Slack = Required clock period – Actual clock period Slack = Slack clock period – ( Micro tCO + Data Delay + Micro tSU )
6、始终偏斜
Clock Skew 指一个同源时钟到达两个不同的寄存器时钟端的时间偏移,如图 11 所示:
图 11 clock skew 示意图 END后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见! 精彩推荐源码系列:基于FPGA的中值滤波器设计(附源码)FPGA零基础学习:Intel FPGA 开发流程FPGA工程师就业班,9月份开课!今日说“法”:FPGA“可编程” 的 “魅惑”FPGA技术江湖广发江湖帖
无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。
FPGA技术江湖微信交流群
加群主微信,备注职业+方向+名字进群
FPGA技术江湖QQ交流群
备注地区+职业+方向+名字进群