天天看點

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

作者:科普魅影

引言

傳統的ASIC靜态時序設計流程,包括帶掃描插入的邏輯綜合、靜态時序分析、用于執行門級功能仿真的SDF生成以及最終的RTL源碼與綜合後網表之間形式驗證的全過程。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

布圖前邏輯綜合包括對最大的建立時間優化設計、采用統計的線載模型及工藝庫中的最差情況工作條件。

為了最大化建立時間,通過定義建立時間的時鐘不确定性來限制設計。一般說來,為了最小化綜合與布圖之間的疊代次數,10%過度限制通常是足夠的。

邏輯綜合

在最初的綜合後,如果檢測到保持時間違例,它們應該在布圖前加以改正,這也有助于減少綜合與布圖之間的反複。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

然而,可取的方法是在布圖後用反标注的真實延遲來修正次要的保持時間違例,假定存在次要的保持時間違例,因而這些違例可在布圖後優化中加以改正。

修正保持時間違例涉及将從版圖提取的延遲反标注到DC中。此外,保持時間修正需要利用庫中的最佳情況工作條件的用法。

對要綜合的子產品進行命名。這一變量應用于整個腳本,進而使得腳本的其餘部分通用。通過将active design重新定義到其他子子產品,可使同樣的腳本用于綜合這些子子產品。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

假設己經成功綜合了三個子子產品,命名為Sp_bypass,、 tapjnstruction和tapjstate9這一綜合過程沒有将掃描鍊串起來,隻是将觸發器直接映射到掃描觸發器。

除了在讀取tap_controller.v檔案之前必須包括子子產品的己映射的“db”檔案,我們可以将相同的綜合腳本應用于頂層綜合。

此外,還需要進行掃描插入來把掃描鍊串起來。包括dontjouch屬性,頂層綜合不會跨越層次邊界進行優化,并可能會違反設計規則限制。

為了去除這些違例,必須删除子子產品的頂層DFT掃描插入是從子子產品中除去dontjouch屬性的另一個原因。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

這是因為如果子子產品包含dontjouch屬性,就不能在頂層進行DFT掃描插入,腳本通過執行帶有掃描使能的初始綜合來說明此過程。

在再次編譯設計前,去除了所有子子產品的dontjouch屬性。

使用PrimeTime進行靜态時序分析

在綜合成功後,對得到的網表必須進行分析以檢查時序違例。設計在綜合過程中以最大化建立時間為重點,因而即使存在建立時間違例,也很少遇到,然而,保持時間違例通常會出現在這一階段。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

這是由于資料到達時序單元輸入的速度太快,進而違反了保持時間的要求,如果設計不滿足建立時間要求。

别無選擇,隻能重新綜合設計, 并以違例路徑為目标進行進一步地優化,這涉及到組合違例路徑或對具有違例的整個子子產品加緊限制。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

因為布圖前綜合和時序分析采用的是統計線載模型,并且在布内前修正保持時間違例可導緻同一路徑在布圖後建立時間違例。

必須注意的是,總的保持時間違例應在布圖前階段加以修正,以減少布圖後的保持時間修正的數目。

對PT腳本對tapcontroller設計進行靜态時序分析。注意到,如果在布圖前階段未插入時鐘樹,時鐘延遲時間和反轉時間是固定的。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

因而有必要設定某一數量的延遲,用于近似與時鐘樹相關的最終延遲。因為時鐘網絡具有高扇出,是以還要指定時鐘反轉時間。

高扇出意味着時鐘網絡驅動許多觸發器,每個都有某一數量的引腳電容,這使時鐘的輸入上升時間更加緩慢。

為避免PT基于觸發器的緩慢輸入上升值而産生延遲計算錯誤,應固定時鐘的反轉時間。

為了進行時序仿真,需要将SDF檔案進行反标注,靜态時序分析使用的是PT,因而如前一腳本所示,用PT生成SDF檔案是穩妥的。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

而一些設計人員感到用DC生成SDF檔案比較友善,是以采用DC來生成SDF時最為穩妥的,

此外,在用于進行設計的時序仿真前,根據設計所得的SDF檔案需要進行一些調整。

假設腳本用于生成tap _controller設計的布圖前SDF,該SDF檔案用于設計的動态時序仿真,此外,這個腳本也生成時序限制檔案。

雖然該檔案也是SDF格式,但它主要是為了使用傳統方式進行時序驅動布圖,而向布圖工具中前向标注時序資訊。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

布圖規劃和布線

布圖規劃包括單元的布局和時鐘樹綜合,這兩步都在布圖工具中完成。布局可包括單元的時序驅動布局,通過向布圖工具标注 constraints.sdf檔案完成的。

該檔案由包含單元到單元時序資訊的路徑延遲組成。布圖工具使用這一資訊以時序為主要準則來放置單元,也就是說,布圖工具将時序關鍵單元彼此靠近放置以最小化路徑延遲。

假定設計己經進行了布圖規劃,布圖工具也己将時鐘樹插入到設計中。時鐘樹插入修改了現有的設計結構。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

換言之,布圖工具中的網表與DC中的初始網表不同,這是因為布圖工具中的設計包含時鐘樹, 而DC中的初始設計不包含該資訊。

是以,應将時鐘樹資訊讀入DC 或PT中的設計。新的網表需要對照原來的網表進行形式驗證,以确定時鐘樹轉移沒有破壞原先邏輯的功能。

出于簡化的 原因,此處假定tap controller設計中有時鐘樹資訊,現在可以對設計進行布線了。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

泛泛地講,布線分兩步完成:全局布線和詳細布線。在全局布線中,布線器将版圖表面劃分為一些分開的區域并進行沒有實際放置幾何連線的點到點“松弛”布線。

最後的布線是由詳細布線器完成的,會放置幾何連線并在區域内布線,此處假設設計已經進行了全局布線。

下一步是從全局布線後的設計中提取估辻的寄生電容和RC延遲。這一步減少了綜合與布圖間的疊代時間。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

主要是因為單元布局和全局布線需要的時間比全晶片的詳細布線少得多,然而,如果以最小 的阻塞優化放置單元,詳細布線也很快。

在任一情況下,全局布線後提取的延遲提供一個更加接近實際延遲的更快的方法,該延遲值在詳細布線後從版圖中提取。

使用設定腳本,将估計值反标注到PT設計中以進行建立和保持時間的靜态時序分析,并反标注了 capacitance.pt和rc_delays.sdf檔案。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

capacitance.pt檔案包括了使用setjoad格式的每條連線的容性負載,而檔案rc_delays.sdf則包含了單個連線的點到點的互連RC延遲。

DC 根據設計中每個單元的輸出連線負載和輸入反轉來計算單元延遲,如果設計不滿足建立時間要求,可通過調整限制來重新進行綜合設計或布圖規劃設計。

如果設計不滿足保持時間的要求,根據違例的程度,可以決定繼續使用至最後一步設計的詳細布線或通過調整限制重新優化設計。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

如果想要重新綜合,那麼包含實際單元位置的布圖規劃資訊應反标注到DC中,需要這一步是因為到目前為止,DC都不了解單元的實體放置資訊。

通過将放置資訊标注到DC中,會極大地提高DC中設計的布圖後優化,布圖工具産生PDEF格式的實體資訊。

設定腳本中的create_wire_load指令為tap_controller設計生成 一個自定義的線載模型。最初綜合使用的是工藝庫中現有的不針對特定設計的線載模型。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

是以,為了下一次綜合疊代取得更高的精确度,應使用針對特定設計的自定義線載模型,指令用于更新DC記憶體中的工藝庫以反映新的自定義線載模型。

假設設計己被再次分析并且滿足建立和保持時間的要求,下一步就是對設計進行詳細布線。這是一個取決于布圖的特性,不做過多的延伸。

布圖後步驟

布圖後步驟包括驗證帶反标注實際延遲的設計時序、設計的功能仿真及最後LVS和DRC的執行。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

假設以最小的阻塞和面積,完成了設計的布線,應從已完成的版圖中提取維的寄生電容和RC連線延遲。

依據布圖工具和提取的類型,RC連線延遲用SDF格式寫出,而設計中的每一條連線的寄生信 息由一串setjoad指令産生。

此外,如果已經進行了階層化的布局和布線,則也應生成PDEF格式的單元的實際布局。布圖後的第一步就是用實際延遲對設計進行靜态時序分析。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

同布局後相似,布線後時序分析也使用同樣的指令,隻是這次向設計中反标注的是實際延遲,

設計的時序主要依賴于時間的延遲和扭斜。

是以一個明智的選擇是,在進行全設計分析前分析時鐘的扭斜。Synopsys通過網上線上支 持提供了一個有用的Tel腳本,可以下載下傳這一腳本并在執行前對其進行分析。

假設時鐘延遲和扭斜是受限的,下一步就是對設計進行靜态時序分析,通過下面的腳本檢查 建立和保持時間違例。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

布圖優化,對設計進行布圖後優化以改進或修正時序要求,DC通過原位優化特性提供了幾種修正時序違例的方法。

與以前一 樣,DC也利用實際布局資訊進行基于位置的優化在,将使用調整單元尺寸和插入緩沖器的IPO特性修正保持時間違例。

總結

綜合設計以滿足最大化建立時間的要求。每一步都要驗證時序,是以布線後的設計很可能滿足建立時間的要求。

什麼是“靜态時序分析”?如何通過靜态時序分析驗證設計的正确性

然而,設計的某些部分在各終點有可能不滿足保持時間的要求,如果設計不能達到保持時間要求,就應當通過增加緩沖器以延遲故障信号相對于時鐘的到達時間進而修正違例。

假定本設計在多個終 點都沒能達到保持時間的要求,有多種方法可以用來修正保持時間違例,一旦設計通過了所有的時序要求。

如果需要,可為仿真生成布圖後SDF 。可通過設定的腳本在DC中生成最壞情況下的布圖後SDF,可用相似的腳本生成最佳情況下的 SDF。

顯然,要從DC生成最佳情況下的SDF,需要反标注由布圖工具提取的最佳情況數值,最後,在定案下單前,設計需進行LVS和DRC檢査。

參考文獻

《IC晶片設計中的靜态時序分析實踐》

《內建電路靜态時序分析與模組化》

《constraining Designs for synthesis and timing analysis》

《Static timing analysis for nanometer designs》

繼續閱讀