有关setup time和hold time的概念参考:建立时间、保持时间、亚稳态
数据信号的到达时间必须在时钟信号的 Tsetup 之前,或者 Thold 之后,才能有效的打入触发器,否则如果有任何一个不满足,数据则无法正常被送入触发器,就出现violation。
首先定义几个变量:
Tclk:时钟周期
Tcq:触发器传输延迟
Tcomb:组合逻辑延时
Tsetup:建立时间
Thold:保持时间
Tskew:时钟抖动
setup time violation的解决办法
setup time正常工作的公式为:
Tclk > Tcq + Tcomb + Tsetup + Tskew
如果出现violation,则公式变为:
Tclk < Tcq + Tcomb + Tsetup + Tskew
可以采用以下几种方式解决:
- 降低时钟频率(即增大Tclk),
- 减小Tcomb,例如pipeline(采用流水线切割组合逻辑,减小路径延时)、在不改变逻辑功能的前提下,改变成其他样式的组合逻辑,进行组合逻辑的优化、或者是改变扇出系数使得延时减小,或者是增大 cell 的尺寸来使得延时减小都是可以施行的措施。
- 提高工作电压,减少信号延迟。
- 使用反应速度更快的 D 触发器。
建立时间与工艺、温度、电压,时钟周期有关。
建立保持时间是芯片本身的特性,其与组合逻辑延迟有关,对于组合逻辑的延迟,也即触发器之间的门延迟,不能太大,也不能太小,太大会导致(关键路径)建立时间不满足,太小会导致(关键路径)保持时间不满足。
hold time violation的解决办法
hold time正常工作的公式为:
Thold+Tskew < Tcq + Tcomb
如果出现violation,则公式变为:
Thold +Tskew > Tcq + Tcomb
可以采用以下几种方式解决:
- 增大Tcomb,在 data path 上面插入 buffer 来增加组合逻辑延时,但是相对的,当你插入 buffer 增大延时的时候,相应的 setup time 就会变差。
- 做时钟树平衡。
- 提高温度,降低电压。(加大信号延迟)
保持时间与 工艺、温度、电压有关。
降低时钟频率无法解决,保持时间公式里没有 Tclk,与 Tclk无关。