時序簽核(timing signoff)
回到第一週期,當你在合成後的網表(netlist)上跑靜態時序分析(static timing analysis)時,你是在紙面上給晶片掐錶。那時時脈樹(clock tree)還只是一個理想假設,導線只是粗略估計,整座工廠也只用一組「典型」條件來代表。這就像用一張直線地圖、再假設天氣晴好,來估算一趟公路旅行能不能一天跑完:拿來做規劃很有用,卻算不上承諾。時序簽核,就是你在真實、完整搭好的佈局(layout)上重做同一套分析的那一刻——用實際佈好的導線、真實的時脈樹,以及這顆晶片此生會遇到的每一種工作條件——直到這時才敢宣布「它在矽片上能行」。它是投片(tapeout)前的最後一道關卡,回答的是「它真的能跑嗎?」而不是「它應該能跑吧?」。
讓它值得信賴的,是你餵給它的東西。繞線(routing)完成後,一個寄生萃取(extraction)工具會讀取最終的幾何形狀,算出每根導線的寄生電阻和電容——每段金屬有多長、多寬、在哪一層,以及哪些鄰線貼著它走、隔著縫隙耦合(coupling)電荷過來——然後把結果寫出來,通常是一個 SPEF 檔案。時序工具(timer)把這些真實的 RC 延遲,和來自標準單元庫(standard-cell library)的單元延遲合在一起,對每一條路徑重新算出建立(setup)和保持(hold)裕量。關鍵在於,它是把所有製程角(corner)和所有模式(mode)一次性全部一起算的:製程角是物理上的極端情形(慢矽/快矽、低壓/高壓、低溫/高溫——低壓下的慢-慢角傷建立,快-快角傷保持),模式則是功能狀態(任務模式、測試/掃描、低功耗)。製程角與模式的笛卡兒積就是多模式多製程角(MMMC)視圖,一條路徑必須在這張網格的每一格裡都通過,因為晶片在每一種情形下都得正常工作。
在製程角之上,簽核還要為那些理想化分析忽略掉的效應加上餘量:晶片上變異降額(OCV,以及更銳利的後繼者 AOCV 與 POCV),這樣並排的兩個閘就不會被當成快慢完全一致;再加上來自翻轉鄰線的串擾(crosstalk)延遲、來自電壓塌陷的電源網格的 IR-drop 相關延遲,以及時脈抖動(jitter)。到這一步還出現負裕量的任何一條路徑,都是實打實的矽片風險,要靠一次時序 ECO 來修——一次外科手術式的尺寸調整、插緩衝器或重新繞線,且絕不能把原本已經通過的製程角弄壞。只有當最差負裕量在整個 MMMC 空間裡都達到零或更好,簽核才算過關;這一點,連同乾淨的 DRC 與 LVS,才是讓設計得以進到 GDSII 的前提。
時序簽核只有在最差裕量於整張「製程角 × 模式」網格上、基於真實萃取出的 RC 都保持非負時才算通過,而不是只在某一個典型製程角上達標。
佈局前的 STA 告訴你的是架構和合成是否站得住腳;簽核 STA 告訴你的則是這一套確切的光罩組(mask set)是否可以安全製造——前者通過,從來都不保證後者也過,因為真實的寄生參數和製程角散佈,常常會把你以為還在的餘量一點點抹掉。