在上一篇文章中講述了靜态時序分析的概念,以及其分類,即主要分為四種:reg2reg、reg2pin、pin2reg、pin2pin,這一篇文章就來細緻分析一下reg2reg的時序分析。
首先看上面這張圖,給出以下定義:
reg1:源寄存器,即信号發出端
reg2:目标寄存器,即信号接收端
Tclk1:時鐘源到達reg1的延遲
Tclk2:時鐘源到達reg2的延遲
Tdata:資料從源寄存器到目标寄存器的傳播延時
Tco:Tclk1到達源寄存器至信号發出之間的延時
Tsu:資料建立時間
Th:資料保持時間
這裡解釋一下時鐘延時,時鐘走全局時鐘網絡,希望時鐘到達寄存器的時間保持一緻,但是現實不是這樣的,到達各個寄存器的時間不同,我們稱時鐘到達目标寄存器和源端寄存器之間的時鐘差稱為時鐘偏斜即Tclk2-Tclk1,稱為時鐘延遲。
建立時間裕量分析
資料到達時間,指的是源時鐘的上升沿與資料到達目标寄存器之間的時間差,由下圖分析可以得出公式:
資料到達時間(data arrival time):Tclk1+Tco+Tdata
資料到達需求時間,指的是在滿足建立時間的情況下目标寄存器能夠準确采樣的時間,在這個事件之前,上一個時鐘所發出的Q在此時間必須到達目标寄存器的D端。由下圖分析可以得出公式:
資料到達需求時間(data require time)=Tcycle+Tclk2-Tsu
建立時間裕量(setup slack):在滿足準确采樣要求的情況下還有的餘量,即資料需求時間-資料到達時間:
setup slack=Tcycle+Tclk2-Tsu-(Tclk1+Tco+Tdata)
建立時間裕量分析如下圖:
下面給出一個例題:
例:已知Tcycle=10ns,pin2PLL=2ns,PLL2clk1=3ns,PLL2clk2=2ns,Tdata=3ns,Tsu=0.5ns,Tco=1ns。求setup slack、Fmax
解:由于提可知兩個始終都是從PLL端出來的,那麼PLL端之前的就不需要分析了,即pin2PLL無需理會,那麼:
setup slack=10ns+2ns-3ns-0.5ns-1ns-3ns=4.5ns
Fmax=1/資料需求時間=222MHz
保持時間裕量分析:
資料結束時間(data finish time):資料開始時間往後延一個時鐘周期,就是下一個信号到來的時間,也就是前一個信号的結束時間。由下圖分析可得公式:
資料結束時間=Tclk1+Tco+Tdata+Tcycle
資料結束需求時間(Require finish time):在保持時間内保持穩定,由下圖分析可得下式:
資料結束需求時間=Tclk2+Th+Tcycle
是以保持時間裕量為:
hold slack(Data finish time-Require finish time)= Tclk1+Tco+Tdata-Th-Tclk2
保持時間裕量分析如下圖:
可以看出,資料保持時間的要求與Tcycle無關,是以提升時鐘速率并不會影響到保持時間的裕量。
練習:已知Tcycle=10ns,pin2PLL=2ns,PLL2clk1=3ns,PLL2clk2=2ns,Tdata=3ns,Th=0.5ns,Tco=1ns,求hold slack?
hold slack=10ns+3ns+1ns+3ns-10ns-2ns-0.5ns=4.5ns
以上這個計算過程就是vivado靜态時序分析的過程。
以上所述内容參考了b站尤老師的時序分析課程,如有不足之處,望不吝賜教!