静态时序分析的前提就是设计者先提出要求,而后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告。html
进行静态时序分析,主要目的就是为了提升系统工做主频以及增长系统的稳定性。对不少数字电路设计来讲,提升工做频率很是重要,由于高工做频率意味着高处理能力。经过附加约束能够控制逻辑的综合、映射、布局和布线,以减少逻辑和布线延时,从而提升工做频率。工具
时序分析起点(launch edge):第一级寄存器数据变化的时钟边沿,也是静态时序分析的起点。布局
时序分析终点(latch edge):数据锁存的时钟边沿,也是静态时序分析的终点。post
创建时间(Tsu):是指在时钟沿到来以前数据从不稳定到稳定所需的时间,若是创建的时间不知足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器。如图3.2所示:ui
图3.2 创建时间图解url
保持时间(Th):是指数据稳定后保持的时间,若是保持时间不知足要求那么数据一样也不能被稳定的打入触发器。保持时间示意图如图3.3所示:设计
图3.3 保持时间图解htm
数据输出延时(Tco):这个时间指的是当时钟有效沿变化后,数据从输入端到输出端的最小时间间隔。blog
时钟偏斜(clock skew):是指一个时钟源到达两个不一样寄存器时钟端的时间偏移,如图3.4所示:get
图3.4 时钟偏斜
时钟偏斜计算公式以下:
Tskew = Tclk2 - Tclk1 (公式2-1)
数据到达时间(Data Arrival Time):输入数据在有效时钟沿后到达所须要的时间。主要分为三部分:时钟到达寄存器时间(Tclk1),寄存器输出延时(Tco)和数据传输延时(Tdata),如图3.5所示
图3.5 数据到达时间
数据到达时间计算公式以下:
Data Arrival Time = Launch edge + Tclk1 +Tco + Tdata (公式2-2)
时钟到达时间(Clock Arrival Time):时钟从latch边沿到达锁存寄存器时钟输入端所消耗的时间为时钟到达时间,如图3.6所示
图3.6 时钟到达时间
时钟到达时间计算公式以下:
Clock Arrival Time = Lacth edge + Tclk2 (公式2-3)
数据需求时间(Data Required Time):在时钟锁存的创建时间和保持时间之间数据必须稳定,从源时钟起点达到这种稳定状态须要的时间即为数据需求时间。如图3.7所示:
图3.7 数据需求时间
(创建)数据需求时间计算公式以下:
Data Required Time = Clock Arrival Time - Tsu (公式2-4)
(保持)数据需求时间计算公式以下:
Data Required Time = Clock Arrival Time + Th (公式2-5)
创建时间余量(setup slack):当数据需求时间大于数据到达时间时,就说时间有余量,Slack是表示设计是否知足时序的一个称谓。
图3.8 创建时间余量
如图3.8所示,创建时间余量的计算公式以下:
Setup slack = Data Required Time - Data Arrival Time (公式2-6)
由公式可知,正的slack表示数据需求时间大于数据到达时间,知足时序(时序的余量),负的slack表示数据需求时间小于数据到达时间,不知足时序(时序的欠缺量)。
时钟最小周期:系统时钟能运行的最高频率。
1. 当数据需求时间大于数据到达时间时,时钟具备余量;
2. 当数据需求时间小于数据到达时间时,不知足时序要求,寄存器经历亚稳态或者不能正确得到数据;
3. 当数据需求时间等于数据到达时间时,这是最小时钟运行频率,恰好知足时序。
从以上三点能够得出最小时钟周期为数据到达时间等于数据需求时间,的运算公式以下:
Data Required Time = Data Arrival Time
从上面两个图中能够清晰的看出Setup与Hold Slack的定义与计算方法:
Setup slack=latch edge+Tclk2-Tsu-(launch edge+Tclk1+Tco+Tdata)
=(latch edge-lanuch edge)+(Tclk2-Tclk1)-(Tsu+Tco+Tdata)
对于工具默认的单周期来讲,latch edge-lanuch edge=T,若是不考虑时钟的skew,Tclk2-Tclk1=0,上式能够表达成:
Setup slack=T-(Tsu+Tco+Tdata),这就是为何说源寄存器与目的寄存器之间延迟不能太长的缘由,延迟越长,slack越小。
Hold slack=data arrival time – data required time
=(launch edge + Tclk1 + Tco + Tdata) – (latch edge + Tclk2 + Th)
=(launch edge – latch edge) – (Tclk2 – Tclk1) + (Tco + Tdata + Th)
注意,上式中的launch edge为next launch edge,即为latch edge,因此launch edge – latch edge=0,若是不考虑时钟的skew,Tclk2-Tclk1=0,上式能够表达成:
Hold slack=Tco + Tdata – Th,这就是为何说源寄存器与目的寄存器之间延迟不能过短的缘由,时间过短,slack越小。