靜態時序分析的三種分析模式(簡述)


  經過跟行業前輩的探討和參考一些書籍,本文中的“個人理解”部分有誤,即:

  (個人理解:)在一個庫中,盡管電路器件單元已經被綜合映射,但是工具可以通過改變周圍的環境來得到不同的單元延時,所以即使是同一個庫,調用工藝參數不一樣的情況下,其單元延時是不同的,因此就有了最快路徑和最慢路徑。 (這里有誤)。

  對於一個綜合好的電路網表,在一個確定的pvt環境下(即只讀入一個庫的情況下)、約束好了端口的transition和load,那么電路網表中的某個器件的延時是唯一確定的(從庫查表得到)。ovc模式下一個器件才有兩個延時值。

  因此下面的庫分析(延時分析)過程中,存在認識錯誤,請讀者們注意!!!以后我會專門寫一篇文章來更正的。

  學習數字設計(數字IC設計、FPGA設計)都必須學習靜態時序分析(Static Timing Analysis ,STA)。然而靜態時序時序分析是一個比較大的方向,涉及到的內容也比較多,如果要系統得學習,那得花費不少的心思。這里來記錄一下關於靜態時序分析的三種分析模式,這里的記錄只是記錄一下學習筆記,或者說是隨筆,而不是系統地學習STA。本文是來自於前天遇到了一道靜態時序分析的題目,感覺有點疑惑,於是發到群里請求解答。經過一番討論、查找資料之后,真相漸漸露出水面。

  先看一下題目:

           

 

 

一、時序路徑分析模式及相關概念

  1.最快路徑和最慢路徑

  在求解這道題目之前,先來介紹一下時序路徑分析模式及相關概念。

①最快路徑(early- path):指在信號傳播延時計算中調用最快工藝參數的路徑;根據信號的分類可以分為最快時鍾路徑和最快數據路徑。

②最慢路徑(late path):指在信號傳播延附計算中調用最慢工藝參數的路徑;分為最慢時鍾路徑和最慢數據路徑。

  (個人理解:)在一個庫中,盡管電路器件單元已經被綜合映射,但是工具可以通過改變周圍的環境來得到不同的單元延時,所以即使是同一個庫,調用工藝參數不一樣的情況下,其單元延時是不同的,因此就有了最快路徑和最慢路徑。(這里理解有誤)

注意:

    與數據路徑不同,最快時鍾路徑、最慢時鍾路徑的選擇在建立時間分析和保持時間分析中是不同的。

1)建立時間分析最快時鍾路徑和最慢時鍾路徑如下圖所示:

           

在建立時間分析中,最快時鍾路徑是指時序路徑中時鍾信號從時鍾源點到達終止點時序單元時鍾端口的延時最短捕獲時鍾路徑,而最慢時鍾路徑是指時序路徑中時鍾信號從時鍾源點到達始發點時序單元時鍾端口的延時最長發射時鍾路徑

 

2)保持時間分析最快時鍾路徑和最慢時鍾路徑如下圖所示:

           

在保持時間分析中,最快時鍾路徑是指時序路徑中時鍾信號從時鍾源點到達達始發點時序單元時鍾端口的延時最短發射時鍾路徑,而最慢時鍾路徑是指時序路徑中時鍾信號從時鍾源點到終止點時序單元時鍾端口的延時最長捕獲時鍾路徑

 

  2.分析模式

  靜態時序分析工具提供3種分析模式進行靜態時序分析,不同的設計需求通過選擇對應的時序分析模式從而可以在合理的時序計算負荷范圍內得到接近於實際工作的時序分析結果。這三種模式是:單一分析模式(single mode)、最好-最壞分析模式(BC-WC mode)、全芯片變化分析模式(OCV模式)

  我查閱了一些資料,在Synopsys公司的靜態時序分析工具PrimeTime在早期的userguide中是有說明的,例如2010.06版本中:

           

但是在最近兩三年的版本中,卻忽略了BC_WC模式,變成了其他三種模式,比如2015.12版本中:

           

雖然在user  guide中沒有明確寫出BC_WC模式,但是這種模式還是存在的,也就是還是可以使用這種模式的。

 

  在Cadence的時序分析分析工具Encounter Timing System的2013.01的版本中,也是支持這三種分析模式的:

            

             

  上面的工具默認的都是單一模式。回到題目中,查了一下,這道題目是5、6年前(甚至更早)的了,算是很經典的一道題目。很顯然,題目要求的是在BC_WC模式先分析建立時間和保持時間。在求解題目之前,先來看一下這三種模式是如何分析建立時間和保持時間的。

  對於PT的2010.06版本:

            

             

              

對於PT的2015.12版本:

              

可以看到,2015.12並沒有給出WC-BC模式的描述,但是是支持的。

 

  對於ETS:沒有給出表格,但是和PT的差不多。

 

下面就來介紹這三種模式下是如何分析路徑延時的,這里只進行介紹建立時間的分析,看情況介紹保持時間。

 

二、單一分析模式(工具默認的模式)

  1.模式介紹

在該模式下,工具只會在指定的一種工作條件下檢查建立時間和保持時間,該工作條件可能是最好的、典型的、最壞的中的一種,但只能是單一的一種,

 

而這里不進行配置:

 

(1)建立時間分析

對於觸發器到觸發器時序路徑的建立時間的要求,轉換成單一分析模式下建立時間的基本計算公式如下:

        發送時鍾最慢路徑延時+最慢數據路徑延時≤捕獲時鍾最快路徑延時+時鍾周期-終止點時序單元建立時間

  進行建立時間檢查時,始發點觸發器的發射時鍾路徑延時、終止點觸發器捕獲時鍾路徑沿和從始發點到終止點的數據路徑延時都是基於單一工作條件下所計算的路徑延時。這是工作單一的一個庫中,也就是工具在同一工藝進程、溫度、電源下,調用其他不同的工藝參數,得到最快、最慢的時鍾路徑和數據路徑。這是路徑值是確定的。例如下面例子中(時間單位為ns):

             

假設上述電路是在典型庫中進行綜合的,那么在分析建立時間的時候,工具通過調用不同的工藝參數,得到最慢的發射時鍾路徑、最慢的數據路徑和最快的捕獲時鍾路徑:

  時鍾周期=4

  發射時鍾最慢延時 = U1+U2 = 0.8+0.6 = 1.4

  最慢數據路徑延時 =3.6

  最快捕獲時鍾延時 = U1+U3 = 1.3

  時序單元FF2的建立時間要求查庫得到0.2

因此 :建立時間的slack為:

          1.3 + 4-0.2 - 1.4 - 3.6 = 0.1

 

(2)保持時間分析

保持時間的計算思路是一樣的,這里只給出保持時間需要滿足的公式,不再舉具體例子。單一模式下要滿足的保持時間要求如下所示:

        發射時鍾最快路徑延時 + 最快數據路徑延時≥捕獲時鍾最慢路徑延時 + 終止點時序單元保持時間

 

  2.題目計算

  對於前面的題目,由於題目的要求是在WC-BC模式下,但是假如是在單一模式,我們來看看該如何分析:

單一庫下工具提取到延時信息的理解如下:

             

下面分析題目中的路徑:

              

對於F1和F2之間的建立時間分析如下所示:

  時鍾周期 = 2*4 = 8

  最慢發射時鍾路徑(延時) = C1max + C2max = 1

  最慢數據路徑 = F1cqmax+L1max = 0.7+7 = 7.7

  最快捕獲時鍾路徑 = C1min + C2min + C3min = 0.6

  F2的D端口建立時間 = 0.3

因此建立時間slack 為 :

    8 +0.6 - 0.3 -  1 - 7.7 = -0.4 (建立時間違規)

 

對於F1和F2之間的保持時間分析如下所示(題目沒有要分析這條路徑的保持時間):

  最快發射時鍾路徑:C1min + C2min = 0.4

  最快數據路徑:F1cqmin+L1min = 3.2

  最慢捕獲時鍾:C1max + C2max + C3max = 1.5

  F2保持時間 = 0.1

因此保持時間slack為:

    0.4+3.2 - 1.5 - 0.1 = 2

 

同理可以分析單一模式下F3-F4路徑的保持時間:

  最快發射時鍾路徑:C1min + C2min = 0.4

  最快數據路徑:F3cqmin + L2min = 0.4

  最慢捕獲時鍾:C1max + C2max + C4max+C5max = 2

  F2保持時間 = 0.1

  因此保持時間slack為:

    0.4 + 0.4 - 2 - 0.1 = -1.3(保持時間違規)

 

 

三、最好-最壞分析模式(BC-WC)

  1.模式介紹 

  對於最好-最壞分析模式,靜態時序分析工具會同時在PVT環境中的最好的和最壞的工作環境下檢查建立時間和保持時間。也就是說,使用這個方式的時候,至少需要讀入兩個庫(環境),一個用來設置最好的工作環境(或者說延時最小),一個用來設置最壞的工作環境(或者說延時最大)。

(1)建立時間分析

  最好-最壞分析模式中建立時間的基本計算公式與單一分析模式下建立時間的基本計算公式一致,不同點在於計算建立時間所使用的工作環境不同,在計算建立時間過程中靜態時序分析工具調用邏輯單元的最大(max)延時時序庫,並用來檢查時序路徑最大延時是否滿足觸發器建立時間。

例如對下面電路進行建立時間分析:

             

  時鍾周期 = 4

  發射時鍾最慢路徑延時(max庫)=U1單元延時(max庫)+U2單元延時(max庫)=0.7+0.6=1.3

  最慢數據路徑延時(max庫)=3.5

  最快數據路徑延時(max庫) =1.9

  捕獲時鍾最快路徑延時值(max庫) = U1單元延時(max庫)+ U3單元延時(max庫)=0.7+0.5=1.2

  建立時間要求(max庫) = 0.2

因此觸發器之間路徑的建立時間slack為:

      1.2 + 4 - 0.2 -1.3 - 3.5 = 0.2

 

(2)保持時間分析

  同樣,最好-最壞路徑分析模式中保持時間的基本計算公式與單一分析模式下保持時間的基本計算公式一致。不同點在於計算保持時間所使用的工作環境不同。在計算保持時間過程中,靜態時序分析工具調用邏輯單元的最小(min)延時時序庫,並用來檢查時序路徑最小延時是否滿足觸發器保持時間的約束。 即進行保持時間檢查時,始發點觸發器的發射時鍾延時、終止點觸發器捕獲時鍾延時和從始發點到終止點的數據路徑延時都是基於最好工作條件下所計算的路徑延延時

例如對下面電路進行保持時間分析:

             

  時鍾周期 = 4

  發射時鍾最快路徑延時(min庫)=U1單元延時(min庫)+U2單元延時(min庫)=0.5+0.4=0.9

  最快數據路徑延時(min庫)=1

  最慢數據路徑延時(min庫) =2.3

  捕獲時鍾最慢路徑延時值(min庫) = U1單元延時(min庫)+ U3單元延時(min庫)=0.5+0.3=0.8

  保持時間要求(min庫) = 0.1

因此觸發器之間路徑的保持時間slack為:

    0.9+1-0.8-0.1 = 1 (保持時間不違規)

 

  2.題目計算

  對於我們的題目,就是要求我們在BC-WC模式下進行分析建立時間和保持時間。現在就來分析一下。

首先我們分析工具提取到延時信息:

           

 這里我們需要注意,本來我在讀入max庫的時候,應該有會得到max庫下的單元延時的最大最小值;在讀入min庫的時候后,會得到min庫下單元的最大最小值。題目中相當於只有一個庫下單元延時的最大最小值,這個庫取了max庫的最大延時,同時取min庫的最小延時。因此在進行WC分析的時候,我們就將max庫中的單元延時最大和最小值看做相等進行處理,即max庫中單元只有一個固定延時值(即上面的max列表里面)。同理BC分析的時候,min庫中的單元也只有一個延時值(即上面的min列表里面)。

下面就對時序路徑進行分析:

               

對於F1-F2路徑的建立時間分析如下所示:

  時鍾周期 = 2*4 = 8

  最慢發射時鍾路徑(max庫) = C1max + C2max = 1

  最慢數據路徑(max庫) = L1max = 7

  最快捕獲時鍾路徑(max庫) = C1maxmin + C2maxmin + C3maxmin=C1max + C2max + C3max = 1.5   (maxmin表示max庫下的最快路徑)

  F2的D端口建立時間 (max庫)= 0.3

因此建立時間slack 為 :

    8 +1.5 - 0.3 -  1 -0.7- 7 = 0.5

 

對F3-F4路徑的保持時間分析如下所示:

  最快發射時鍾路徑(min庫):C1min + C2min = 0.4

  最快數據路徑(min庫):F3cqmin + L2min = 0.4

  最慢捕獲時鍾(min庫):C1minmax + C2minmax + C4minmax+C5minmax =C1min + C2min + C4min+C5min=0.8   (minmax表示min庫下的最慢路徑)

  F2保持時間 = 0.1

因此保持時間slack為:

    0.4 + 0.4 - 0.8 - 0.1 = -0.1(保持時間違規)

 

 

四、OCV分析模式

  在芯片變化相關工作模式下,與最好-最壞分析模式一樣,靜態時序分析工具也會同時在PVT境中的最好的和最壞的工作環境下檢查建立時間和保持時間,也就是要讀入兩個庫。

  1.基本的OCV模式:

(1)建立時間的分析

  OCV分析模式中建立時間的基本計算公式與其他分析模式下建立時間的基本計算公式一致,不同點在於計算最快路徑和最慢路徑所使用的工作環境不同,在計算建立時聞過程中靜態時序分析工具調用時序單元的最大延時時序庫來計算最慢路徑的延時,同時調用邏輯單元的最小延時時序庫來計算最快路徑的延時,只檢查時序路徑的延時是否滿足觸發器建立時間的約束。

  進行建立時間檢查時。始發點觸發器的發射時鍾采用的是最壞條件下最慢時鍾路徑,終止點觸發器的捕獲時鍾采用的是最好條件下最快時鍾路徑,而從始發點到終止點的數據路徑的延時則是在最壞條件下最慢數據路徑延時。

例如:

             

  時鍾周期 = 4

  發射時鍾最慢路徑延時(max庫)=U1單元延時(max庫)+U2單元延時(max庫)=0.7+0.6=1.3

  最慢數據路徑延時(max庫)=3.5

  捕獲時鍾最快路徑延時值(min庫) = U1單元延時(min庫)+ U3單元延時(min庫)=0.5+0.3=0.8

  建立時間要求(max庫) = 0.2

因此觸發器之間路徑的建立時間slack為:

      0.8 + 4 - 0.2 -1.3 - 3.5 =- 0.2(時序違規)

 

·保持時間:類似,不進行詳細描述

 

(2)題目計算

  對於我們的題目,假設要在基本的OCV模式下進行計算,我們來看一下:

首先庫的分析WC-BC模式一樣,不重復說明:

       

然后對時序路徑進行分析:

           

對於F1-F2路徑的建立時間分析如下所示:

  時鍾周期 = 2*4 = 8

  最慢發射時鍾路徑(max庫) = C1max + C2max = 1

  最慢數據路徑(max庫) = F1cqmax+L1max = 0.7+7 = 7.7

  最快捕獲時鍾路徑(min庫) = C1min + C2min + C3min= 0.6

  F2的D端口建立時間 = 0.3

因此建立時間slack 為 :

    8 +0.6 - 0.3 -  1 -7.7= -0.4  (建立時間違例)

 

對F3-F4路徑的保持時間分析如下所示:

  最快發射時鍾路徑(min庫):C1min + C2min = 0.4

  最快數據路徑(min庫):F3cqmin + L2min = 0.4

  最慢捕獲時鍾(max庫):C1max + C2max + C4max+C5max =2

  F2保持時間 = 0.1

因此保持時間slack為:

    0.4 + 0.4 - 2 - 0.1 = -1.3(保持時間違規)

 

  對於上面的題目,在基本的OCV模式中計算分析建立時間時,公共路徑C1、C2在計算最慢發射時鍾路徑時,使用的是max庫的最慢延時;而在計算最快捕獲時鍾路徑的時候使用的是min庫的最快延時。也就是說,該分析把公共路徑的輸出,當做兩個不同傳播延時的信號進行延時計算。然而在芯片實際工作時,公共路徑的輸出是一個信號驅動后續的發射時鍾和捕獲時鍾,上面的檢查分析太過於悲觀,不太符合實際,因此延伸到下面兩種模式。

 

  2.考慮時序減免的OCV模式:

  時序減免〔timing derate)的作用是很據減免(derating)系數,靜態時序分析工具會在時序路徑的每級邏輯門、連線和端口上都加上或減去一個原來延時值乘以減免系數值的延時作為最終的延時結果。設置時序減免值的目的是使時序分析結果更加符合實際情況。

使用這種方式需要設置derating系數,系數值需要通過實際工程經驗總結出來,這里不進行深入探討,而且題目中沒有給出該系數,因此不進行深入介紹。

 

  3.考慮時鍾路徑悲觀移除(CPPR)的OCV模式:

  可以分為 不考慮時序減免和考慮時序減免情況,這里不進行介紹,感興趣可以參考有關資料。

 

其他先進的分析模式如AOVC、POCV等,涉及內容較多,就不寫了,感興趣可以參考有關資料。

 

 

參考資料:

《集成電路靜態時序分析與建模》,劉峰,2016

《PrimeTime  User Guide》,synopsys,2015

《PrimeTime  Fundamentals User Guide》,synopsys,2010

《Encounter Timing System User Guide》,cadence,2013

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM