定义
静态时序分析是一种通过检查所有可能的路径是否违例来验证设计的时序性能。STA把设计分解成时序路径,计算这这些路径的传播时延,并且检查设计内部和输入/输出接口的时序约束的违例情况。
另外一种时序分析的方法是动态仿真,这是通过给定一组输入激励矢量,然后检查电路的全部行为。和动态仿真相比,静态时序分析由于不用激励电路的逻辑运算,所以更快。由于分析了所有可能的时序路径而不只是检查对输入矢量逻辑敏感的路径,所以STA也更理想。然后,STA仅仅做时序检查,不检查电路的功能。
STA怎么工作?
当开始执行时序分析时,STA首先把设计分解成各种时序路径。每条路径包含以下要素:
Startpoint:时序路径的起点是从时钟边沿启动或者从数据指定时间可以使用的地方。每个开始点必须是输入port或者寄存器的时钟pin。
Combinational logc network:组合逻辑网络里面memory或者内部状态。它包括AND,OR,XOR和inverter,但是不能包括flip-flops,lanches,register和RAM。
Endpoint:时序路径的结束点是数据被时钟边沿采集处或者被指定时间数据必须可以的地方。每个结束点必须是寄存器数据输入pin或者输出port。
下图展示了一个简单设计的时序路径:
一个组合逻辑中可以包含多条路径。STA用最长路径计算最大时延,用最短路径计算最小时延。
STA检查时序约束违例情况,比如setup time和hold time。
setup time:setup time约束了数据在输入端到时钟沿到前的时间,以便时钟沿能采到时间。setup time约束了数据通路相对于时钟沿的最大时延。
hold time:保持时间device中数据被时钟沿采到后必须保持的时间。保持时间约束了数据通路中最小时延。
默认情况下,工具会假设信号会在一个时钟内穿过各个路径。因此在做建立时间检查时,工具会检查数据从FF1到FF2是不是在一个时钟周期内。如果假设建立时间是1,那么工具会检查数据到达FF2有没有提前下个时钟边沿1。如果FF1和FF2之前的时延太大,那么就会出现setup time违例。
工具在做hold time检查时,会验证数据从FF1开始到达FF2不会快于上一个时钟的的采集时钟沿。保持时间检查保证了在时钟边沿采集数据之后数据在FF2输入口保持稳定足够长时间。如果时钟时延过大,会导致hold time违例。
下面介绍几种例外:
虚假路径:是指由于逻辑配置,预期的数据序列或者操作模式导致从来不会触发的路径。
多时钟路径:是指从launch到capture花费多余一个时钟周期的路径。
最大或者最小时延路径:是指必须满足时延约束的指定路径。
原文网址:https://www.synopsys.com/glossary/what-is-static-timing-analysis.html