图解setup slack 与hold slack


从上面两个图中可以清晰的看出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越小。

hold slack计算例子: