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

  通過跟行業前輩的探討和參考一些書籍,本文中的「我的理解」部分有誤,即:ide

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

  對於一個綜合好的電路網表,在一個肯定的pvt環境下(即只讀入一個庫的狀況下)、約束好了端口的transition和load,那麼電路網表中的某個器件的延時是惟一肯定的(從庫查表獲得)。ovc模式下一個器件纔有兩個延時值。學習

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

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

  先看一下題目:設計

           

 

 

1、時序路徑分析模式及相關概念3d

  1.最快路徑和最慢路徑blog

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

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

②最慢路徑(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的版本中,也是支持這三種分析模式的:

            

             

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

  對於PT的2010.06版本:

            

             

              

對於PT的2015.12版本:

              

能夠看到,2015.12並無給出WC-BC模式的描述,可是是支持的。

 

  對於ETS:沒有給出表格,可是和PT的差很少。

 

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

 

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

  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(保持時間違規)

 

 

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(保持時間違規)

 

 

4、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模式中計算分析創建時間時,公共路徑C一、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

 

 

 

相關文章
相關標籤/搜索