时序约束的目的是:规范设计的时序行为,表达设计者所期望满足的时序条件,指导综合和布局布线阶段的优化算法等,作用:提高系统设计的fmax、得到正确的时序分析报告
1. 系统的最高频率Fmax
Fmax: 所设计系统的稳定情况下的最高时钟频率所设计系统的稳定情况下的最高时钟频率,他是时序分析中最重要的指标,综合表现所设计时序的性能
首先介绍最小时钟周期Tclk
Tclk = 寄存器的时钟输出延时Tco + 组合逻辑延时Tlogic + FPGA内部的网络延时Tnet + 寄存器时钟建立时间Tsu –时钟偏斜Tclkskew
Fmax = 1 / Tclk
在QuartusII时序分析后很容易看到Fmax
2. 时钟的建立时间Tsu和保持时间Th
建立时间Tsu:时钟到达之前数据或者使能信号已经准备好(稳定)的最小时间间隔
Tsu = 数据延时Data_delay – 时钟延时Clock_delay + 寄存器固有的建立时间Tsu
保持时间Th:能保证有效时钟沿正确采样的数据或者使能信号在时钟沿之后的最小稳定时间
Th = 时钟延时Clock_delay – 数据延时Data_delay = 寄存器固有的保持时间Th
3. 时序裕量Slack
Slack :约束文件要求时钟周期与实际布局布线后时钟周期的差值,表示时序裕量的一个称谓,大于零表示满足时序,小于零表示不满足时序
1) Setup Slack
Setup Slack = Data Required time - Data Arrival Time
2) Hold Slack
Hold Slack = Data Arrival Time - Data Required Time
Slack = Required_clock_period – Actual_clock_period
4. 时钟偏斜Skew
时钟偏斜skew:一个同源时钟到达两个不同寄存器的时钟端的时间差别(时钟分布系统中到达各个时钟末端(即器件内部触发器的时钟输入端)的时钟相位不一致的现象)。
如果时钟偏斜超过所允许的最大值,电路的同步可能会发生失效。偏斜主要由两个因素造成:一是时钟源驱动器件的偏差,例如同一个PLL输出的不同时钟信号之间的偏斜;另一个是时钟分配网络的偏斜 。由于时钟信号驱动系统中的大量元件为了达到同步必须同时接收到时钟信号,因此它们之间的任何时间差异都将直接影响系统性能。
避免时钟偏斜Skew可以采取下列方法:1.CLOCK采用全局时钟网络驱动,全局时钟的CLOCK SKEW很小。因此主要时钟信号应该走全局时钟网络以避免始终偏斜。2.采用全局时钟缓冲器 3.采用锁相环(pll)。
5. 时钟抖动Jetter
时钟抖动(Jetter)是时钟沿距离其理想位置的偏离。在时序分析中理解时钟抖动非常重要,因为它在系统时序预算方面肩负关键角色。它还能帮助系统设计人员理解系统时序余量。随着系统数据率越来越高,时序抖动在系统设计中已经变得更加关键,如在某些案例中系统性能限制由系统时序余量来确定,因此充份了解时序抖动在系统设计中变得更加重要。总抖动可分为随机抖动和确定性抖动等分量。时钟时序抖动可以在时域以及频域测量。相邻周期抖动、周期抖动及时间间隔误差(TIE)抖动在时域测量,而相位噪声和相位抖动在频域测量。部分抖动源包括热噪声、电源噪声、地弹噪声(ground bounce)、锁相环(PLL)电路、串扰及反射。下图为时钟抖动示例。
6. Data Arrival Time
Data Arrival Time = Launch edge + 源寄存器时钟延时Tclk1 + 源寄存器数据输出延时Tco + 寄存器之间的组合逻辑延时Tdata
7. Clock Arrival Time
Clock Arrival Time = Latch edge + 目标寄存器时钟延时Tclk2
8. Data Required Time - Setup
Data Required Time = Clock Arrival Time – 目标寄存器固有的建立时间Tsu
9. Data Required Time – Hold
Data Required Time = Clock Arrival Time – 目标寄存器固有的保持时间Th
10. Launch edge和Latch edge
Launch Edge :源寄存器发送数据对应的时钟沿,是时序分析的起点。
Latch Edge :目标寄存器捕获数据对应的时钟沿,是时序分析的终点。