跳轉到

第 5 章 佈局繞線、靜態時序分析與物理設計演算法#

5.2 靜態時序分析(STA)與 PrimeTime:告別動態模擬、用時序路徑覆蓋率確保晶片不「掉拍」#

5.2.1 動態模擬的絕望:覆蓋率的天花板#

1990 年代,一顆 SoC 的網表包含數百萬個 cell。要確證「每條時序路徑都趕上鐘拍」,如果靠動態模擬(gate-level simulation 以向量輸入),將面臨一個數學上可怕的事實:

設一個電路有 \(10^5\) 條觸發器組合的狀態與 \(10^6\) 個輸入組合,遇上的「有意義向量」就算是 \(10^{12}\) 也遠遠不足覆蓋所有路徑。以每秒 10 萬個模擬週期計算(當時已非常快),全部跑完要 \(10^6\) 年以上。

因此動態模擬在本質上永遠只能證明「抽樣的正確性」,不可能窮舉時序熔斷(timing violation)。

5.2.2 STA 的數學直白:把時序變成圖#

靜態時序分析(Static Timing Analysis, STA)的洞見在於:時序的正確性根本不需要模擬狀態變化,只需要一張加權有向圖(DAG):

  • 節點=電路中的網點(net)與 cell 引腳;
  • 邊權=delay(cell delay 與互連 delay);
  • 目標:找出所有起點(暫存器輸出/輸入端)到終點(暫存器輸入端)的路徑上 \(D_{\text{path}} \le T_{\mathrm{clk}} - t_{\mathrm{setup}}\)。

任何一個路徑違反,就會被報告為 slack < 0:

\[ \mathrm{slack} = \left(T_{\mathrm{clk}} - t_{\mathrm{setup}}\right) - D_{\mathrm{path}} \]

算法只需一次圖上的最長路徑(longest path)遍歷——複雜度是線性/近線性的,在數分鐘內就可以完成全晶片時序檢查,且完全不漏一條路徑。這是一個完美的 EDA 案例:用更聰明的數學,把不可用的暴力法變成單機必修課。

5.2.3 PrimeTime:標準化與 STA 的工業勝利#

STA 概念源於 1980 年代的多家公司內部工具(例如 Toshiba 在 1980 年代推出其內部 STA),1990 年代逐漸商品化。

  • Synopsys 隨綜合(4.3)的成功,於 1995 年推出 PrimeTime,並把人們熟悉的 SDC 約束語言(4.3)直接搬到 STA 中,成為從綜合到簽核(sign-off)同一種語法的整條生態;
  • 其與自家綜合的同源 delay 計算(NLDM/lib 資料結構)構成一個無縫的「設計—查核—簽核」閉環,使競品即使 STA 算法相當,也難整體取代 Synopsys;
  • 2000s,PrimeTime 與 PrimeTime SI 支援了雜訊與耦合效應,深亞微米時代(第 7 章)接踵而至。

5.2.4 STA 的制度效應:時間成為「合約」#

STA 被接受後發生了一個看不見的制度變化:晶片的「時序鐘頻」不再是單位內某個天才的承諾,而是一份由 STA 報告(timing report)機器證明的文件。這種「演算法作為公證」的信任制度:

  • 使 客戶與晶圓廠之間的合約條款能引用 STA 統計(corner、temperature、voltage 的 timing setup/hold);
  • 使工程師的內部審核 從「感覺準時了」變成「slack ≥ 0」的工作文化,直至今日。

5.2.5 前因後果#

  • 前因:動態模擬覆蓋率天花板、時序失敗成本大增(深亞微米互連延遲急升)、SDC 語言生態的建立。
  • 事件:STA 工業化、PrimeTime 的主導(1995→)。
  • 後果:時序簽核成為自動化儀式;EDA 工具進一步從「畫圖」轉向「形的證明」;「覆蓋率不足」的問題轉移到功能驗證戰場(5.3),那裡的漏洞才是下一個產業殺手。

下一節:5.3 驗證(Verification)與 SystemVerilog