時序分析中的一些基本概念
時序分析時FPGA設計中永恒的話題,也是FPGA開發(fā)人員設計進階的必由之路。慢慢來,先介紹時序分析中的一些基本概念。
本文引用地址:http://butianyuan.cn/article/201710/365595.htm1. 時鐘相關
時鐘的時序特性主要分為抖動(Jitter)、偏移(Skew)、占空比失真(Duty Cycle DistorTIon)3點。對于低速設計,基本不用考慮這些特征;對于高速設計,由于時鐘本身的原因造成的時序問題很普遍,因此必須關注。
1. 時鐘抖動 (clock jitter)
理想的時鐘信號應該是理想的方波,但是現(xiàn)實中的時鐘的邊沿變化不可能是瞬變的,它有個 從低到高 / 從高到低 的變化過程,如圖1所示。
常見的抖動參數(shù)有3種:
周期抖動(Period Jitter):
周期抖動率(Period Jitter)測量時鐘輸出傳輸偏離其理想位置的最大偏離。Period Jitter代表周期差抖動的上下邊界。
周期差抖動(cycle-to-cycle Jitter):
周期差抖動率(cycle-to-cycle jitter)是兩個相鄰周期的時間偏差。它總是小于周期抖動(period jitter)
長期抖動(Long-term Jitter):
長期抖動率如下圖(Long-Term Jitter)定義為一個時鐘沿相對于基準周期時鐘沿經(jīng)過一段時間的延時之后,與其理想位置的偏離。此測量可以捕獲鎖相環(huán)低頻周期變化(緩慢的,頻率很低的)。長期抖動對圖形、串行連接通訊系統(tǒng)、打印機和任何光柵掃描操作非常重要。
時鐘抖動的原因就是噪聲。時鐘抖動是永遠存在的,當其大到可以和時鐘周期相比擬的時候,會影響到設計,這樣的抖動是不可接受的。
2. 時鐘偏斜 (clock skew)
時鐘信號要提供給整個電路的時序單元,所以時鐘信號線非常長,并構成分布式的RC網(wǎng)路。它的延時與時鐘線的長度、時序單元的負載電容、個數(shù)有關,所以產(chǎn)生所謂的時鐘偏移。時鐘偏移是指同一個時鐘信號到達兩個不同的寄存器之間的時間差值,根據(jù)差值可以分為正偏移和負偏移。
時鐘偏移的計算公式: Tskew = Tclk2 - Tclk1
時鐘偏移是永遠存在的,當其大到一定程度會影響電路的時序。解決方法就是在FPGA的設計中讓主要的時鐘信號走全局時鐘網(wǎng)絡。該網(wǎng)絡采用全銅工藝和樹狀結(jié)構,并設計了專用時鐘緩沖和驅(qū)動網(wǎng)絡,到所有的IO單元、CLB和塊RAM的偏移非常小,可以忽略不計。
3. 占空比失真DCD (Duty Cycle DistorTIon)
即時鐘不對稱,時鐘的脈沖寬度發(fā)生了變化。DCD會吞噬大量的時序裕量,造成數(shù)字信號的失真,使過零區(qū)間偏離理想的位置。DCD通常是由信號的上升沿和下降沿之間時序不同而造成的。
2. 信號扇入/扇出 (fan-in/fan-out)
The number of circuits that can be fed input signals from an output device. 扇出,輸出可從輸出設備輸入信號的電路的數(shù)量。
扇出(fan-out)是定義單個邏輯門能夠驅(qū)動的數(shù)字信號輸入最大量的術語。大多數(shù)TTL邏輯門能夠為10個其他數(shù)字門或驅(qū)動器提供信號。因而,一個典型的TTL邏輯門有10個扇出信號。
在一些數(shù)字系統(tǒng)中,必須有一個單一的TTL邏輯門來驅(qū)動10個以上的其他門或驅(qū)動器。這種情況下,被稱為緩沖器(buf)的驅(qū)動器可以用在TTL邏輯門與它必須驅(qū)動的多重驅(qū)動器之間。這種類型的緩沖器有25至30個扇出信號。邏輯反向器(也被稱為非門)在大多數(shù)數(shù)字電路中能夠輔助這一功能。
模塊的扇出是指模塊的直屬下層模塊的個數(shù)。一般認為,設計得好的系統(tǒng)平均扇出是3或4。一個模塊的扇出數(shù)過大或過小都不理想,過大比過小更嚴重。一般認為扇出的上限不超過7。扇出過大意味著管理模塊過于復雜,需要控制和協(xié)調(diào)過多的下級。解決的辦法是適當增加中間層次。一個模塊的扇入是指有多少個上級模塊調(diào)用它。扇人越大,表示該模塊被更多的上級模塊共享。這當然是我們所希望的。但是不能為了獲得高扇人而不惜代價,例如把彼此無關的功能湊在一起構成一個模塊,雖然扇人數(shù)高了,但這樣的模塊內(nèi)聚程度必然低。這是我們應避免的。
設計得好的系統(tǒng),上層模塊有較高的扇出,下層模塊有較高的扇人。其結(jié)構圖像清真寺的塔,上面尖,中間寬,下面小。
3. launch edge
時序分析起點(launch edge):第一級寄存器數(shù)據(jù)變化的時鐘邊沿,也是靜態(tài)時序分析的起點。
4. latch edge
時序分析終點(latch edge):數(shù)據(jù)鎖存的時鐘邊沿,也是靜態(tài)時序分析的終點。
5. Clock-to-Output Delay
數(shù)據(jù)輸出延時(Tco):這個時間指的是當時鐘有效沿變化后,數(shù)據(jù)從輸入端到輸出端的最小時間間隔。
6. 寄存器建立/保持時間 Setup/Hold TIme
建立時間(setup TIme)是指觸發(fā)器的時鐘信號上升沿到來以前,數(shù)據(jù)穩(wěn)定不變的時間。輸入信號應提前時鐘上升沿(如上升沿有效)T 時間到達芯片,這個T 就是建立時間Setup time。簡而言之,時鐘邊沿觸發(fā)前,要求數(shù)據(jù)必須存在一段時間,這就是器件需要的建立時間。如不滿足setup time,這個數(shù)據(jù)就不能被這一時鐘打入觸發(fā)器,只有在下一個時鐘上升沿,數(shù)據(jù)才能被打入觸發(fā)器。
保持時間(hold time)是指觸發(fā)器的時鐘信號上升沿到來以后,數(shù)據(jù)穩(wěn)定不變的時間。簡而言之,時鐘邊沿觸發(fā)后,數(shù)據(jù)也必須保持一段時間,以便能夠穩(wěn)定讀取,這就是器件需要的保持時間。如果hold time 不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。
如果不滿足建立和保持時間的話,那么DFF(D type flip-flop/D類型觸發(fā)器) 將不能正確地采樣到數(shù)據(jù),將會出現(xiàn)亞穩(wěn)態(tài)(metastability )的情況。如果數(shù)據(jù)信號在時鐘沿觸發(fā)前后持續(xù)的時間均超過建立和保持時間,那么超過量就分別被稱為建立時間裕量和保持時間裕量。
7. Data Arrival Time
輸入數(shù)據(jù)在有效時鐘沿后到達所需要的時間。主要分為三部分:時鐘到達寄存器時間(Tclk1),寄存器輸出延時(Tco)和數(shù)據(jù)傳輸延時(Tdata)
Data Arrival Time = Launch edge + Tclk1 +Tco + Tdata
8. Clock Arrival Time
時鐘從latch邊沿到達鎖存寄存器時鐘輸入端所消耗的時間為時鐘到達時間。
Clock Arrival Time = Lacth edge + Tclk2
9. 建立裕量 Setup Slack
當數(shù)據(jù)需求時間大于數(shù)據(jù)到達時間時,就說時間有余量,Slack是表示設計是否滿足時序的一個稱謂。
Setup slack = Data Required Time - Data Arrival Time
正的slack表示數(shù)據(jù)需求時間大于數(shù)據(jù)到達時間,滿足時序(時序的余量),負的slack表示數(shù)據(jù)需求時間小于數(shù)據(jù)到達時間,不滿足時序(時序的欠缺量)。
10. Recovery/Removal Time
Recovery time is the minimum length of time an asynchronous control signal, for example, and preset, must be stable before the next active clock edge. The recovery slack time calculation is similar to the clock setup slack time calculation, but it applies asynchronous control signals.
Removal time is the minimum length of time an asynchronous control signal must be stable after the active clock edge. The TimeQuest analyzer removal time slack calculation is similar to the clock hold slack calculation, but it applies asynchronous control signals.
recovery time specifies the time the inactive edge of the asynchronous signal has to arrive before the closing edge of the clock.
Removal time specifies the length of time the active phase of the asynchronous signal has to be held after the closing edge of the clock.
也就是說Recovery / Removal time類似于Setup / Hold Time,不過是用于異步信號,比如set,reset信號。他們檢查異步型號的邊沿,釋放沿必須在時鐘沿前面提前recovery time釋放,或者在時鐘沿后removal time之后釋放。注意異步復位亞穩(wěn)態(tài)問題!
11. 最大時鐘頻率
時鐘最小周期:系統(tǒng)時鐘能運行的最高頻率。
1. 當數(shù)據(jù)需求時間大于數(shù)據(jù)到達時間時,時鐘具有余量;
2. 當數(shù)據(jù)需求時間小于數(shù)據(jù)到達時間時,不滿足時序要求,寄存器經(jīng)歷亞穩(wěn)態(tài)或者不能正確獲得數(shù)據(jù);
3. 當數(shù)據(jù)需求時間等于數(shù)據(jù)到達時間時,這是最小時鐘運行頻率,剛好滿足時序。
最小時鐘周期為數(shù)據(jù)到達時間等于數(shù)據(jù)需求時間。
12. 時序分析
分析第9節(jié)的圖,數(shù)據(jù)傳播的路徑從上一級觸發(fā)器到下一級觸發(fā)器建立經(jīng)過的數(shù)據(jù)時延總和為:Tclk1 + Tco + Tdata + Tsetup-slack + Tsu
在兩級寄存器之間,時鐘間隔為:Tclk + Tclk2
根據(jù)建立時間要求(在下一個時鐘上升沿到來的時候,數(shù)據(jù)必須穩(wěn)定,且保持一定的時間Tsu)可以列一個不等式:數(shù)據(jù)時延 時鐘間隔,即
Tclk1 + Tco + Tdata + Tsetup-slack + Tsu = Tclk + Tclk2
同理,根據(jù)保持時間要求(時鐘上升沿到來后,寄存器鎖存數(shù)據(jù)的時候,數(shù)據(jù)要保持一定的穩(wěn)定時間Th)可以列一個不等式:
Tco + Tdata = Th
隨著系統(tǒng)時鐘 fclk 變大時,Tclk變小,則要求 Tco + Tdata 也變小,當 Tco + Tdata 不滿足第一個不等式時,不滿足建立時間要求;但是,Tco + Tdata 也不是越小越好,當其太小時,不滿足第二個不等式時,觸發(fā)器不能正常鎖存數(shù)據(jù),即不滿足保持時間要求。從某種意義上說,Th限制了數(shù)據(jù)傳輸速率。
對于設計者來說最大的目的是提高時序的裕量,這樣即使信號完整性上出現(xiàn)一點問題,或者外界環(huán)境發(fā)生一定的變化,系統(tǒng)仍然能正常工作,這就是一個設計優(yōu)良的系統(tǒng)應該體現(xiàn)出的超強的穩(wěn)定性。
評論