
时序路径分析是STA中非常重要的一个部分,任何一条时序路径都是由下面的三条路径构成的:
- 源时钟路径(source clock path)
- 数据路径(data path)
- 目标时钟路径 (destination clock paths)

当设计较为简单,不涉及多时钟域的情况下,destination clock也来自于source clock。由source clock发起的数据启动时钟边沿我们称之为launch edge,反之由destination clock产生的捕获数据时钟沿称之为capture edge。
在了解了这些基础知识后我们就可以开始进行建立时间分析和保持时间分析了(setup and hold analysis)。
setup and hold analysis中有一个重要的参数slack (俺不知道这个中文怎么翻译,松弛度量?),slack指的就是数据需要的时间和数据到达时间之间的差值,当setup slack和hold slack均为正数的时候,说明满足FF的时序要求,数据能够在两个FF之间安全的传输,而不会产生亚稳态现象。
Setup check
为了简单起见,这里分析单条时钟路径,如下图所示:

数据在第一个时钟周期从FF1发送出去并第二个时钟周期被FF2捕获,这里的Data Arrival Time即时钟launch edge的时间T_launch,也就是时钟到达FF1的C端口需要的时间,加上源时钟的路径延迟,即C到Q端需要的时间T_Clk2Q,在加上数据的传播延迟T_DataPath:
Data Require Time即CLK到达FF2所需要的时间T_capture加上1CLK_period的时间,在减去FF2的建立时间T_setup:
此时的Setup slack只要满足:
即可满足Setup Check。
Hold check

同样的,数据在到达后需要保持一段时间,即在捕获沿有效后保存一段时间,由上图可知,
Data Arrival Time是和之前相同的,这里的Data Require Time 为捕获沿的延时T_capture 加上 FF2的保持时间T_hold:
此时要保证时序要求需要满足:
至于 Recover和Removal Check和上面的setup and hold check类似,不同之处在于其同样适用于异步复位和清零信号。
参考文献
[1]刘峰. 集成电路静态时序分析与建模[M]. 机械工业出版社, 2016.
[2] ug903-vivado-using-constraints