图解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计算例子: