文章目录
什么是静态时序分析?
首先,静态时序分析分析是基于同步电路设计模型的。静态时序分析STA对于同步时序电路必不可少,通过静态时序分析,一方面可以增加系统稳定性减少亚稳态的发生,另一方面可以最大限度的提升系统工作频率。因此,对静态时序相关概念的理解,以及掌握静态时序分析的方法具有重要意义:相关参数
静态时序的分析,涉及到了众多基础概念;在进行静态时序分析之前,应该先理清基础概念
1.建立时间和保持时间的分析
一般来讲,触发器会在有效时钟沿来临时对数据进行采样并产生一个相应的输出,但是由于实际器件的工艺和制造等问题存在,将会无法瞬间完成数据的采集和输出。因此,在这一过程中,需要将数据在时钟沿前后一段时间内均保持稳定,即建立时间和保持时间。
建立时间:就是时钟有效沿到来之前数据必须保持稳态的最小时间Tsu.
保持时间:时钟有效沿到来之后数据必须保持稳态的最小时间Th.
如下图所示:
2.发射沿和锁存沿
发射沿(Launch Edge):时序分析起点,第一级寄存器数据变化的时钟边沿,也是静态时序分析的起点。
锁存沿(Latch Edge):时序分析终点,数据锁存的时钟边沿,是静态时序分析的终点。
可见下图描述便于理解
3.数据输出延时(Tco)
数据输出延时指的是当时钟触发(一般可认为是第一个寄存器的时钟沿触发时刻)开始到有效数据输出**(第一个寄存器的Q端数据开始输出(有可能变化,也有可能不变化))**的器件内部所有延时的总和。见图
4.数据到达时间(数据路径,Data Arrival Time)
输入数据在有效时钟沿后到达目的寄存器所需要的时间,可大致划分为:时钟沿到达第一级寄存器所需时间(Tclk1),寄存器内部延迟时间(Tco),数据输出后传输到第二级寄存器所需时间(Tdata).
其中Tdata可细分为:
组合逻辑延时Tcomb_logic:数据经过组合逻辑部分所需的时间;
线网延时Tnet:数据在线上传输所需的时间,一般较小可以忽略;
如图描述
同时可用下图配合理解
该处使用的url网络请求的数据。
5.时钟到达时间(时间路径,Clock Arrival Time)
时钟到达时间就是指时钟从latch edge到达目的寄存器(destination register)输入端所用的时间。
5.时钟偏斜(Tskew)
指同一个时钟沿(clk)和分别到达两个寄存器所需的时间之间的差值(Tclk1和Tclk2的差值).
公式为:Tskew=Tclk2-Tclk1.
6.数据需求时间(Data Require Time)
细分为 (Setup-Data Require Time)
( Hold-Data Require Time )
Setup-Data Require Time
由5可知,Clock Arrival Time = Latch +Tclk2.
因此 Data Required Time = Latch+Tclk2-Tsu (忽略建立不定态)。
Hold-Data Require Time
7.建立裕量(Setup Slack)
首先给出示意图:
公式推导:
为了避免亚稳态(以后会专门写一篇关于亚稳态的文章)的发生,我们需要让数据在第二级寄存器有效沿之前达到稳态,具体是在哪个时刻之前呢,就是上面最开始讲的建立时间Tsu。
通过上面的介绍以及配合本图可知:
Setup Slack = (Latch Edge + Tclk2 - Tsu)-( Launch Edge + Tclk1 +Tco +Tdata)
(建立数据所需时间)Setup-Data Required Time = Latch Edge + Tclk2 - Tsu
(数据到达时间) Data Arrival Time = Lauch Edge + Tclk1 + Tco + Tdata
因此 Setup Slack
= Setup-Data Required Time - Data Arrival Time
=(Latch Edge - Launch Edge)+(Tclk2-Tclk1)-(Tsu+Tco+Tdata)
= Tperiod +(Tclk2-Tclk1)-(Tsu + Tco+Tdata)
对应图上绿色画线部分。
这个最终结果说明了源寄存器与目的寄存器之间延迟 Tdata不能太长的原因,延迟越长,slack越小。
当建立裕量为正时,满足时序要求,否则不满足。
8.保持裕量(Hold Slack)
保持裕量分析方法:
直接先给出公式:
Hold Slack = Data Arrival Time - (Hold-Data Required Time)
同样的可推导:
Data Arrival Time = Launch Edge + Tclk1 + Tco + Tdata
Hold-Data Required Time = Latch Edge + Tclk2
Hold Slack = Launch Edge + Tclk1 + Tco + Tdata -(Latch Edge + Tclk2)
=-Tperiod +(Tclk1-Tclk2)+Tco+Tdata
从结果可以看出,当源寄存器与目的寄存器之间延迟Tdata太短的话,则保持裕量会很短,因此Hold Slack 越小。
本文中源寄存器由第一级寄存器代替,目的寄存器由第二级寄存器代替。
参考博客: