靜態時序分析(Static Timing Analysis)基礎及應用(上)<?XML:NAMESPACE PREFIX = O />
◎陳麒旭
前言
在製程進入深次微米世代之後,晶片(IC)設計的高複雜度及系統單晶片(SOC)設計方式興起。此一趨勢使得如何確保IC品質成為今日所有設計從業人員不得不面臨之重大課題。靜態時序分析(Static Timing Analysis簡稱STA)經由完整的分析方式判斷IC是否能夠在使用者的時序環境下正常工作,對確保IC品質之課題,提供一個不錯的解決方案。然而,對於許多IC設計者而言,STA是個既熟悉卻又陌生的名詞。本文將力求以簡單敘述及圖例說明的方式,對STA的基礎概念及其在IC設計流程中的應用做詳盡的介紹。
什麼是STA?
STA的簡單定義如下:套用特定的時序模型(Timing Model),針對特定電路分析其是否違反設計者給定的時序限制(Timing Constraint)。以分析的方式區分,可分為Path-Based及Block-Based兩種。
先來看看Path-Based這種分析方式。如圖一所示,訊號從A點及B點輸入,經由4個邏輯閘組成的電路到達輸出Y點。套用的Timing Model標示在各邏輯閘上,對於所有輸入端到輸出端都可以找到相對應的延遲時間。而使用者給定的Timing Constraint為:
1. 訊號A到達電路輸入端的時間點為2(AT=2,AT為Arrival Time)。
2. 訊號B到達電路輸入端的時間點為5(AT=5)。
3. 訊號必須在時間點10之前到達輸出端Y(RT=10,RT為Required Time)。
現在我們針對P1及P2兩條路徑(Path)來做分析。P1的起始點為A,訊號到達時間點為2。經過第1個邏輯閘之後,由於此閘有2單位的延遲時間,所以訊號到達此閘輸出的時間點為4(2+2)。依此類推,訊號經由P1到達輸出Y的時間點為7(2+2+3)。在和上述第三項Timing Constraint比對之後,我們可以得知對P1這個路徑而言,時序(Timing)是滿足使用者要求的。
按照同樣的方式可以得到訊號經由路徑B到達輸出Y的時間點為11(5+1+3+2),照樣和上述第三項Timing Constraint比對,我們可以得知對P2這個路徑而言,Timing是不滿足使用者要求的。
對圖一的設計而言,總共有6個訊號路徑。對於採用Path-Based分析方式的STA軟體來說,它會對這6個訊號路徑作逐一的分析,然後記錄下結果。IC設計者藉由檢視其分析報告的方式來判斷所設計的電路是否符合給定的Timing Constraint。由於最常用來做靜態時序分析驗證核可(STA Signoff)的EDA軟體PrimeTime?採用Path-Based的分析方式,所以本文將以Path-Based的分析方式介紹為主。
再來看看Block-Based的分析方式。此時時序資訊(Timing Information)的儲存不再是以路徑為單位,而是以電路節點(Node)為單位。由Timing Constraint我們僅能得知A節點的AT為2,B節點的AT為5以及Y節點的RT為10。Block-Based的分析方式會找出每個節點的AT和RT,然後比對這兩個數值。當RT的值大於AT時表示訊號比Timing Constrain中要求的時間還早到達,如此則Timing是滿足的,反之則不滿足。
STA資料準備
在做STA之前,我們必須對其準備工作有充分的瞭解。STA所需的資料如圖三所示,以下我們分項說明。其中Design Data部分,由於Block Model和STA軟體相關性太高,我們不在此加以說明,請直接參閱您STA軟體的使用手冊。
<?XML:NAMESPACE PREFIX = V />
圖三
n Library Data:
STA所需要的Timing Model就存放在標準元件庫(Cell Library)中。這些必要的時序資訊是以Timing Arc的方式呈現在標準元件庫中。Timing Arc定義邏輯閘任兩個端點之間的時序關係,其種類有Combinational Timing Arc、Setup Timing Arc、Hold Timing Arc、Edge Timing Arc、Preset and Clear Timing Arc、Recovery Timing Arc、Removal Timing Arc、Three State Enable & Disable Timing Arc、Width Timing Arc。其中第1、4、5、8項定義時序延遲,其他各項則是定義時序檢查。
圖四
Combinational Timing Arc是最基本的Timing Arc。Timing Arc如果不特別宣告的話,就是屬於此類。如圖四所示,他定義了從特定輸入到特定輸出(A到Z)的延遲時間。Combinational Timing Arc的Sense有三種,分別是inverting(或 negative unate),non-inverting(或 positive unate)以及non-unate。當Timing Arc相關之特定輸出(圖四Z)訊號變化方向和特定輸入(圖四A)訊號變化方向相反(如輸入由0變1,輸出由1變0),則此Timing Arc為inverting sense。反之,輸出輸入訊號變化方向一致的話,則此Timing Arc為non-inverting sense。當特定輸出無法由特定輸入單獨決定時,此Timing Arc為non-unate。
圖五
圖六
圖七
圖八
<?XML:NAMESPACE PREFIX = W />
圖九
圖十
圖十一
圖十二
其他的Timing Arc說明如下。
l Setup Timing Arc:定義序向元件(Sequential Cell,如Flip-Flop、Latch等)所需的Setup Time,依據Clock上升或下降分為2類(圖五)。
l Hold Timing Arc:定義序向元件所需的Hold Time,依據Clock上升或下降分為2類(圖六)。
l Edge Timing Arc:定義序向元件Clock Active Edge到資料輸出的延遲時間,依據Clock上升或下降分為2類(圖七)。
l Preset and Clear Timing Arc:定義序向元件清除訊號(Preset或Clear)發生後,資料被清除的速度,依據清除訊號上升或下降及是Preset或Clear分為4類(圖八)。這個Timing Arc通常會被取消掉,因為它會造成訊號路徑產生迴路,這對STA而言是不允許的。
l Recovery Timing Arc:定義序向元件Clock Active Edge之前,清除訊號不准啟動的時間,依據Clock上升或下降分為2類(圖九)。
l Removal Timing Arc:定義序向元件Clock Active Edge之後,清除訊號不准啟動的時間,依據Clock上升或下降分為2類(圖十)。
l Three State Enable & Disable Timing Arc:定義Tri-State元件致能訊號(Enable)到輸出的延遲時間,依據Enable或Disable分為2類。(圖十一)
l Width Timing Arc:定義訊號需維持穩定的最短時間,依據訊號維持在0或1的位準分為2類。(圖十二)
上文列出了標準元件庫內時序模型的項目,但對其量化的數據卻沒有加以說明。接下來,我們就來看看到底這些時序資訊的確實數值是如何定義在標準元件庫中的。
以Combinational Timing Arc為例,訊號從輸入到輸出的延遲時間可以描述成以輸入的轉換時間(Transition Time)和輸出的負載為變數的函數。描述的方式可以是線性的方式,如圖十三所示。也可以將這2個變數當成指標,建立時序表格(Timing Table),讓STA軟體可以查詢出正確的延遲時間。這種以表格描述的方式會比上述線性描述的方式準確許多,因此現今市面上大部分的標準元件庫皆採用產生時序表格的方式來建立Timing Model。
圖十三
我們舉個簡單的例子來說明STA軟體如何從時序表格計算出元件延遲時間。(圖十四)
圖十四
l 元件延遲時間(Ddelay):輸入達邏輯1位準50%到輸出達邏輯1位準50%的時間。
l 元件轉換時間(Dtransition):輸出達邏輯1位準20%(80%)到80%(20%)的時間。
當輸入的轉換時間為0.5,輸出負載為0.2時,可由圖十四的時序表格查得元件I2的延遲時間為0.432。而由於表格的大小有限,對於無法直接由表格查詢到的延遲時間(如輸入轉換時間0.25,輸出負載0.15),STA軟體會利用線性內插或外插的方式計算延遲時間。
對於其他的Timing Arc,不管是時序延遲或時序檢查,其相對應的時序數值計算和上例的計算方式是一樣的。
接下來我們說明操作環境(Operating Condition)對時序的影響。操作環境指的是製程(Process)、電壓(Voltage)、溫度(Temperature)三項因子。這三項因子通常會被簡稱為PVT,其對時序的影響可用下方線性方程式來描述。其中nom_process、nom_voltage及nom_temperature會定義在標準元件庫中,代表建立時序表格時的操作環境。
n Interconnect Data:
在「什麼是STA」段落的例子中,為了方便說明,我們並沒有把邏輯閘和邏輯閘間的連線延遲(Interconnect Delay)考慮在內。事實上,許多DSM IC設計之時序表現是由連線延遲主導的,其重要性不容我們忽視。
連線延遲依照佈局與繞線(P&R)前後有不同的考量。在佈局與繞線前,元件在晶片中擺放的位置尚未確定,所以連線延遲是一個預估值。而在佈局與繞線之後,連線延遲則是根據實際繞線計算出來的。對佈局與繞線之前的連線延遲,通常是用Wireload Model來預估。Wireload Model根據晶片面積的預估大小及連線驅動元件數目(Fan-out)的多寡來決定連線的電阻和電容值,STA軟體則利用這些電阻電容值計算出連線延遲。在佈局與繞線之後,可以利用電阻電容萃取(RC Extraction)軟體將繞線圖形轉換成實際的電阻電容電路,然後貼回(Back-annotate)STA軟體計算連線延遲。
n Timing Constraints:
Timing Constraint為使用者所給定,用來檢驗設計電路時序的準則。其中最重要的一項就是時脈(Clock)的描述。對於一個同步電路而言,暫存器和暫存器之間的路徑延遲時間必須小於一個Clock週期(Period),也就是說,當我們確認了Clock規格,所有暫存器間的路徑的Timing Constraint就會自動給定了。
圖十五
Clock規格包含波形、Latency及Uncertainty的定義。波形定義一個Clock的週期及訊號上升緣及下降緣的時間點。Latency定義從Clock來源到序向元件Clock輸入端的延遲時間。Uncertainty則定義Clock訊號到序向元件Clock輸入端可能早到或晚到的時間。
如果上面的文字讓你有不知所云的感覺,那底下看圖說故事的解說也許會讓你有比較清晰的概念。在圖十五的電路中,左邊的正反器(Flip-Flop)在第一個Clock上升緣時會丟出資料,此資料會在第二個Clock上升緣讓右邊的Flip-Flop擷取。要分析右邊的Flip-Flop能否正確擷取資料就必須知道第一個Clock上升緣到達節點C1的時間點和第二個上升緣到達節點C2的時間點。假設在時間點為0的時候,Clock訊號由S點出發,經過一段時間(source latency,1個時間單位,模擬晶片外的Clock延遲時間,例如板子上的繞線產生的訊號延遲時間)到達電路的Clock輸入端點P,接下來再經過一段時間(晶片內Clock繞線造成的訊號延遲時間),Clock訊號分別到達C1和C2節點。如果電路已經進行佈局與繞線,輸入端點P到C1和C2的訊號延遲時間可由連線上的寄生電阻電容計算得來。比方說,經過計算發現訊號由P傳遞到C1需要1個時間單位,由P傳遞到C2需2個時間單位,則Clock訊號第一個上升緣到達C1和第二個上升緣到達C2的時間點就會如圖十六下方兩列所示,分別為時間點2和13(因為加上了1個時間單位的source latency)。
圖十六
在佈局與繞線之前,我們無法準確得知P到C1和C2的訊號延遲時間,僅能先做個預估。圖十五的network latency及上文提到的Uncertainty就是用來做此種預估的。先假設我們擁有某種完美的佈局與繞線軟體可以讓Clock輸入端點P到所有Flip-Flop的Clock輸入端的訊號延遲時間一模一樣,那麼我們只要知道這個訊號延遲時間就可以得到Clock訊號到達C1和C2的時間點了。這個訊號延遲時間可以藉由電路特性(如預估面積大小,Flip-Flop數目等)來做預估,而這個預估值就是所謂的network latency。如果這種完美的軟體存在的話,那Clock的上升緣到達C1和C2的時間點就可以由Latency(source latency + network latency)計算出來。
很不幸的,世界上沒有這麼完美的軟體,在佈局與繞線後Clock輸入端點P到所有Flip-Flop的Clock輸入端的訊號延遲時間不會完全一樣。也就是說Clock的某個上升緣不會同時到達C1和C2。因此我們要對上述的預估值做些修正,加入Uncertainty的描述來定義Clock上升緣左右移動的可能範圍。在圖十六中,Uncertainty為1個時間單位,所以Clock第一個上升緣會在時間點3(因為Latency為3)左右1時間單位範圍內(也就是時間點2到時間點4)到達C1,。第二個上升緣則會在時間點12到14的範圍內到達C2。
除了Clock之外,對於電路其他輸出輸入端點及其周邊的環境(Boundary Condition)也要加以描述。在說明Boundary Condition之前,我們得對路徑(Path)有更進一步的瞭解。上文曾提及STA會將電路中所有的Path找出來加以分析,但Path的定義是什麼呢?
Path根據起點及終點可以分為4種:
1. 由Flip-Flop Clock輸入到Flip-Flop資料輸入(圖十七左上)。
2. 由主要輸入(Primary Input,簡稱PI)到Flip-Flop資料輸入(圖十七右上)。
3. 由Flip-Flop Clock輸入到主要輸出(Primary Output,簡稱PO)(圖十七左下)。
4. 由主要輸入到主要輸出(圖十七右下)。
當Clock規格確定了之後,第1種Path的時序限制(Timing Constraint)就自動的給定了。為了給定其他3種Path的時序限制,我們必須定義Boundary Condition。
圖十七
一般來說,我們會定義下列的Boundary Condition:
1. Driving Cell:定義輸入端點的推動能力(圖十八)。
2. Input Transition Time:定義輸入端點的轉換時間(圖十八)。
3. Output Capacitance Load:定義輸出負載(圖十八)。
4. Input Delay:輸入端點相對於某個Clock領域的延遲時間。(圖十九,Delayclk-Q + a)
5. Output Delay:自輸出端點往外看相對於某個Clock領域的延遲時間。(圖十九,c)
在這些Boundary Condition定義之後,上述4種Path事實上都可看成是第1種Path(Flip-Flop到Flip-Flop)。也就是說,加上Boundary Condition後,只要Clock給定,所有Path的Timing Constraint就會自動給定。。
圖十八
圖十九
由於每個Path都有Timing Constraint,所以時序分析都能夠進行。但在某些情況下,有些Path的分析可能沒有意義,因此妳會想忽略這些Path的分析。或是有些Path分析的方式不一樣,妳會想指定這些Path的分析方式。此時就要設定一些Timing Exception,如False Path和Multi-cycle Path等等來處理非一般性的時序分析。
STA流程及分析方式
STA的流程如圖二十所示,而其分析驗證的項目就是我們前文提及之時序檢查相關的Timing Arc,如Setup Time、Hold Time等等。以下我們針對Setup Time舉1實際範例來說明STA的分析方式。
圖二十
n Setup Time
設計電路如圖二十一所示,時序模型(Timing Model)及時序限制(Timing Constraint)如下:
圖二十一
l 所有邏輯閘在輸出訊號上升時最長的延遲時間為3ns,最短為2ns。
l 所有邏輯閘在輸出訊號上升時最長的延遲時間為2ns,最短為1ns。
l 所有連線(Net)最長的延遲時間為2ns,最短為1ns。
l 所有Flip-Flop Clock到Q的延遲時間為3ns。
l 所有Flip-Flop的Setup Time為1ns(Ts)。
l 所有Flip-Flop的Hold Time為1ns(Th)。
l Clock週期為14ns(Dclkp)。
l Clock source latency為2ns(Dclks)。
l Clock network latency為3ns(Dclkn)。
l Clock uncertainty為1ns(Dclku)。
l B及C的input delay皆為1ns(Da、Db、Dc)。
l Y的output delay為3ns(DY)。
接下來,我們以Step-By-Step的方式說明時序分析的方式。
1. 首先找出所有Timing Path,我們只列出具代表性的3條Timing Path來加以說明。
圖二十二
2. 假設輸入A訊號由0變1,計算第1條Path終點訊號到達的時間(Arrival Time簡稱AT)。
圖二十三
3. 假設輸入A訊號由1變0,計算第1條Path終點AT。
圖二十四
4. 計算第1條Path終點的需求時間(Required Time,簡稱RT)。
圖二十五
5. 假設輸入A訊號由0變1,計算第1條Path終點的Slack。Slack等於RT和AT的差值,對於Setup Time驗證來說等於RT - AT,對於Hold Time驗證來說等於AT - RT。在此Setup Time範例中,Slack為正,表示訊號實際到達Path終點時間比必須到達的時間還早,因此Timing是滿足的。
圖二十六
6. 假設輸入A訊號由1變0,計算第1條Path終點的Slack。Slack為正,因此Timing是滿足的。
綜合5和6,第1條Path的Timing是符合規格的,其Slack為4ns(取較差狀況)。
圖二十七
7. 假設前級Flip-Flop的訊號由0變1,計算第2條Path終點的AT。
圖二十八
8. 假設前級Flip-Flop的訊號由1變0,計算第2條Path終點的AT。
圖二十九
9. 計算第2條Path終點的RT。
圖三十
10. 假設前級Flip-Flop的訊號由0變1,計算第2條Path終點的Slack。Slack為負,因此Timing不滿足。
圖三十一
11. 假設前級Flip-Flop的訊號由1變0,計算第2條Path終點的Slack。Slack為負,因此Timing不滿足。
綜合10和11,第2條Path的Timing不滿足,其Slack為-3。
圖三十二
12. 假設前級Flip-Flop的訊號由0變1,計算第3條Path終點的AT。
圖三十三
13. 假設前級Flip-Flop的訊號由1變0,計算第3條Path終點的AT。
圖三十四
14. 計算第3條Path終點的RT。
圖三十五
15. 假設前級Flip-Flop的訊號由0變1,計算第3條Path終點的Slack。Slack為負,因此Timing不滿足。
圖三十六
16. 假設前級Flip-Flop的訊號由1變0,計算第3條Path終點的Slack。Slack為負,因此Timing不滿足。
綜合15和16,第3條Path Timing不符合規格,其Slack為-4。
圖三十七
綜合上述分析結果,此電路的時序不符合規格,其Critical Path是Path3,Slack為-4。
總結
本文先對STA的概念做概念性的介紹,在下集的文章中,將對STA在實際IC設計流程中的應用舉一範例說明,請各位拭目以待。
文章评论(0条评论)
登录后参与讨论