静态时序
静态时序中,组成设计的元件分类成组合逻辑和时序逻辑两大类。
在vivado中,设计是否满足性能要求是由静态时序分析(Static Timing Analysis,STA)来校验和验证的,在静态时序分析STA中元件的功能并不重要,重要的是元件的性能。
在vivado中,静态时序引擎是基于基本元件,这意味着时序特征是为每个基本元件而作的。
设计中延时来自于以下因素:
- FPGA的构图与设计的实现;
- 元件构成的物理特性;
- 元件的位置布局;
- 器件工艺变化;
- PVT环境因素。
时序校验
静态时序通道中需要考虑的两点是建立时间和保持时间的校验。
对于建立时间校验,是从一个时钟的上升沿到下一个时钟的上升沿,数据到达目的定时元件必须在下一时钟上升沿到达目的定时元件之前,依次检验所有的静态时序通道。
对于保持时钟校验,是从始终上升沿到相同时钟的上升沿,数据到达目的定时元件必须不能比相同时钟的上升沿到达目的定时元件早,依次检验所有的静态时序通道。
Tsu ——建立时间,Thd——保持时间
在时钟信号线和数据信号线在两个定时元件中有固定延时的前提条件下:
由于数据超前于CLK上升沿到达定时元件,所以不可能用启动沿(同一上升沿)作捕获沿,因为从启动沿发送数据到下一定时元件,不可能在同一上升沿在下一定时元件检测到数据,就算能检测到也是上个时钟周期遗留的数据,这种检测数据不能代表建立时间。所以只能用启动沿下个周期的上升沿作捕获沿。
由于数据必须持续到上升沿到达定时元件之后,则可以直接用启动沿作捕获沿。因为数据已经到达定时元件,为了检测数据是否在上升沿处于保持状态,只需用启动沿的上升沿作捕获沿。
裕量计算
对于建立时间裕量计算,要考虑到最大的延时,因为最大延时情况下,数据很有可能在下一个时钟周期上升沿之后到达定时元件。
对于保持时间裕量计算,要考虑到最小延时,因为在最小延时情况下,数据很有可能无法保持到本周期上升沿到达定时元件之时。
对几个专有名词的理解:
源时钟延时(SCD):时钟信号线到源定时元件的延时;
目的时钟延时(DCD):时钟信号线到目的定时元件的延时;
数据通道延时(DPD):数据信号线从源定时元件到目的定时元件的延时;
建立时间裕量的计算:
Slack(setup) = ( (clock period) + DCD(mim) ) – ( SCD(max) + DPD(max) )
对于建立时间检测而言,数据从源定时元件到目的定时元件的时间要求是小于一个时钟周期,由于DCD和DPD的存在,时间要求可以是 ( < 一个时钟周期 + DCD – SCD ),同时数据通道延时DPD存在,要使数据在下个周期上升沿之前到达目的定时元件,即DPD < 一个时钟周期 + DCD – SCD,即 ( clock period + DCD ) – ( SCD + DPD ) > 0,要使得该不等式在DCD,SCD,DPD的范围内任意取值都成立,即:
Slack(setup) = ( (clock period) + DCD(mim) ) – ( SCD(max) + DPD(max) ) > 0 成立。
究竟需要大多少就是由所需裕量决定。
保持时间裕量的计算:
Slack(hold) = ( - DCD(max) + ( SCD(min) + DPD(min) ) )
对于保持时间检验,要求数据在本周期上升沿之后在目的定时元件结束保持状态。同上,有DPD > DCD – SCD,即DPD + SCD – DCD > 0,同样,要使该不等式在DCD,SCD,DPD的范围内任意取值都成立,即:
Slack(hold) = ( - DCD(max) + ( SCD(min) + DPD(min) ) ) > 0 成立。
同样,差值由所需裕量决定。