從上面兩個圖中可以清晰的看出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計算例子: