|
reg2reg路徑的時序分析 本文節選自特權同學的圖書《FPGA設計實戰演練(邏輯篇)》 配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt 我們可以先重點研究一下reg2reg的時序約束。如圖8.18所示,一般的時序分析我們都可以來看看他們的數據路徑(data path)和時鐘路徑(clock path)。所謂數據路徑,就是數據在整個傳輸起點到傳輸終點所走過的路徑;所謂時鐘路徑,則是指時鐘從源端到達各個寄存器輸入端的路徑。(特權同學,版權所有)
如圖8.19所示,為了便于后續的時序余量分析和計算,我們提出了data arrival path和data required path的概念。data arrival path是指數據在兩個寄存器間傳輸的實際所需時間;data required path則是指為了確保穩定、可靠且有效的傳輸(即滿足相應的建立時間和保持時間要求),數據在兩個寄存器間傳輸的理論所需時間(也就是最基本的必須滿足的傳輸時間要求,對于建立時間是最大值,對于保持時間則是最小值)。很明顯,從圖中,我們就可以看出data arrival path傳輸的起點是時鐘源,達到源寄存器,然后是實際的數據從源寄存器到目的寄存器時間;而data required path的傳輸起點也是源時鐘,但卻是達到目的寄存器,然后再考慮目的寄存器的建立時間和保持時間要求(圖中未示意)。(特權同學,版權所有)
如圖8.20所示,對于上面所提出的data arrival path和data required path,我們做了一些細化,將實際的各個路徑示意了出來。(特權同學,版權所有) ● Tc2t表示時鐘源到源寄存器reg1所經過的時鐘網絡延時。(特權同學,版權所有) ● Tc2r表示時鐘源到目的寄存器reg2所經過的時鐘網絡延時。(特權同學,版權所有) ● Tco表示數據在被鎖存后在寄存器內所經過的延時。(特權同學,版權所有) ● Tr2r表示數據從上一級寄存器(源寄存器)的輸出端到下一級寄存器(目的寄存器)的輸入端所經過的延時。(特權同學,版權所有) ● Tsu表示目的寄存器的建立時間。(特權同學,版權所有) ● Th表示目的寄存器的保持時間。(特權同學,版權所有)
在開始這些路徑公式的分析前,我們還需要了解Setup relationship和Hold relationship及其與launch edge和latch edge之間的關系。如圖8.21所示,對于一個寄存器到寄存器的傳輸來說,正常情況下,各個寄存器都是在時鐘的控制下,每個上升沿鎖存一次數據,那么也就意味著,兩個相鄰的寄存器,后一級寄存器每次鎖存的數據應該是前一級寄存器上一個時鐘周期鎖存過的數據。基于此,我們來討論建立時間,即setup relationship時,源寄存器為lauch clock,目的寄存器為latch clock,而lauch edge從時間上看就要比latch edge早一個時鐘周期,即他們之間通常是相差一個時鐘周期的關系。反觀保持時間則不然,即hold relationship實際上是同一個edge,也就是說后一級寄存器的保持時間很可能遭到上一級寄存器同一個時鐘周期所傳輸數據的“侵犯”。我們的hold relationship分析就是為了防備這種情況的,因此這里的launch edge和latch edge實際上是同一個時鐘沿,那么他們的關系通常只是Tc2t(源時鐘傳輸到源寄存器的時間)和Tc2r(源時鐘傳輸的目的寄存器的時間)的時間差。(特權同學,版權所有)
因此,對照上面給出的8.20的示意圖,理想情況下,拋開什么時鐘的抖動以及其他不確定時間,我們可以得到比較理想的reg2reg傳輸的建立時間和保持時間余量(slack)計算公式: 建立時間余量的計算公式: Setup time slack = Data Required Time– Data Arrival Time Data Arrival Time = Launch Edge +Tc2t + Tco + Tr2r Data Required Time = Latch Edge +Tc2r - Tsu 保持時間余量的計算公式: Hold time slack = Data Arrival Time –Data Required Time Data Arrival Time = Launch Edge +Tc2t + Tco + Tr2r Data Required Time = Latch Edge +Tc2r + Th reg2reg路徑約束的實例大家可以參考第六章的第1節內容。(特權同學,版權所有) |