1. 程式人生 > >靜態時序分析的三種分析模式(簡述)

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

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

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

  對於一個綜合好的電路網表,在一個確定的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.1(保持時間違規)

  對於上面的題目,在基本的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

相關推薦

Java的代理模式轉載

Java的三種代理模式 1.代理模式 代理(Proxy)是一種設計模式,提供了對目標物件另外的訪問方式;即通過代理物件訪問目標物件.這樣做的好處是:可以在目標物件實現的基礎上,增強額外的功能操作,即擴充套件目標物件的功能. 這裡使用到程式設計中的一個思想:不要隨意去修改別人已經寫好的程式碼或

ADF VO排序及VO的查詢模式

常規應用中,當需要使用Table向終端使用者展示資料時,Table中資料的顯示排序一致性極大程度的影響到了客戶體驗。通常希望諸如多次查詢結果顯示順序相同、插入資料在原資料上方等的實現。ADF為開發人員提供了兩種級別的排序,即資料庫級別的排序及記憶體級別(In-Memory

靜態時序分析分析模式簡述

  經過跟行業前輩的探討和參考一些書籍,本文中的“個人理解”部分有誤,即:   (個人理解:)在一個庫中,儘管電路器件單元已經被綜合對映,但是工具可以通過改變周圍的環境來得到不同的單元延時,所以即使是同一個庫,呼叫工藝引數不一樣的情況下,其單元延時是不同的,因此就有了最快路徑和最慢路徑。 (這裡有誤)。

關於負載均衡的傳輸模式反向代理,透傳,三角

什麼是負載均衡(SLB) SLB(伺服器負載均衡):在多個提供相同服務的伺服器的情況下,負載均衡裝置存在虛擬服務地址,當大量客戶端從外部訪問虛擬服務IP地址時,負載均衡裝置將這些報文請求根據負載均衡演算法,將流量均衡的分配給後臺伺服器以平衡各個伺服器的負載壓力,避免在還有伺服器

Tomcat Connector執行模式BIO, NIO, APR的比較和優化

                  Java Blocking Connector   Java Nio Blocking Connector   APR/native Connector                              BIO                         NIO

計算機網路的通訊模式單播,廣播,組播小結

1.單播(Unicast) 單播在傳送者和每一接收者之間實現點對點網路連線。 如果一臺傳送者同時給多個的接收者傳輸相同 的資料,也必須相應的複製多份的相同資料包。如果有大量主機希望獲得資料包的同一份拷貝時, 將 導致傳送者負擔沉重、延遲長、網路擁塞;為保證一定

hadoop初識之:搭建hadoop環境配置HDFS,Yarn及mapreduce 執行在yarn上及執行模式本地模式,偽分散式和分散式介

--===============安裝jdk(解壓版)================== --root 使用者登入 --建立檔案層級目錄    /opt下分別 建 modules/softwares/datas/tools 資料夾 --檢視是否安裝jdk    rpm -

快取模式Cache Pattern

(這是一個MIT同學整理的6.004 Computation Structure的課程的筆記,內容清晰易懂,看一遍可以簡單瞭解計算機組成的基本內容,一共55頁,計劃全部譯成中文。轉載請註明出處。) (筆記原文: https://app.box.com/s/hj73i5cne

計算機網路通訊模式單播、廣播、組播小結

1、單播定義:單播在傳送者和每一接收者之間實現點對點網路連線。如果一臺傳送者同時給多個接收者傳輸相同的資料,也必須相應的複製多份的相同資料包。如果有大量主機希望獲得資料包的同一份拷貝時,將導致傳送者負擔沉重、延遲長、網路擁塞,為保證一定的服務質量需增加硬體和頻寬。單播優點:1

設計模式-工廠模式-附Java原始碼

建議結合示例原始碼理解 1 簡單工廠模式 簡單工廠模式(Simple Factory Pattern):定義一個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。因為在簡單工廠模式中用於建立例項的方法是靜態(

VMWARE虛擬機器網路模式BRIDGED,NAT,HOST-ONLY)區別詳解

原文:http://hao.jser.com/archive/7954/ VMware三種網路模式根本區別 提到VMware大家就想起了虛擬機器技術,虛擬機器技術在最近的幾年中得到了廣泛的發展,一些大型網路服務商都開始採用虛擬機器技術,不僅節省了投資成本,更節約了能源的消耗

Android實現日夜間模式常用方法

 1、使用 setTheme 的方法讓 Activity 重新設定主題;  2、設定 Android Support Library 中的 UiMode 來支援日間/夜間模式的切換;  3、通過資源 id 對映,回撥自定義 ThemeChangeListener 介

AOP的程式設計模式

 註解完成AOP程式設計applicationContext.xml檔案<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/be

23設計模式9:訪問者模式

類方法 打印 interface 增加 http col visitor 設計模式的 接口 定義:封裝某些作用於某種數據結構中各元素的操作,它可以在不改變數據結構的前提下定義作用於這些元素的新的操作。 類型:行為類模式 類圖: 訪問者模式可能是行為類模式中最

23設計模式1-單例模式

如果 static 拓展 銷毀 jvm垃圾收集器 單例類 不為 全局 返回值 定義: 單例模式,是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中一個類只有一個實例。即一個類只有一個對象實例。 特點:

23設計模式5-適配器模式

一起 繼承關系 成了 string ica clas 23種設計模式 原本 class 定義: 將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。 角色: 目標(Target)角色:這就是所期待得到的接口,也

spring boot-mybatis動態sql5

內部 轉換成 ava .get bat class ide div upd 腳本sql XML配置方式的動態SQL我就不講了,有興趣可以自己了解,下面是用<script>的方式把它照搬過來,用註解來實現。適用於xml配置轉換到註解配置 @Select("&l

JAVA21設計模式面試

適配器 良好的 att 橋接模式 存在 工程化 監聽 狀態改變 新的 設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式於己於

23設計模式16:狀態模式

ava 關系 subclass [] key 語句 多分支 分支 ctx 概述 定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。 類型:行為類模式。 類圖: 適用性: 1.一個對象的行為取決於它的狀態,並且它

23設計模式17:適配器模式

interface 進行 term tle pan keyword ng- 匹配 可能 概述: 將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。 類型:結構型模式。 類圖: 適用性: 1.你想