3.2 讀懂 PDK:LEF、DEF 與 Liberty#
實體設計的一切語言,都寫在三種格式裡:LEF、DEF 與 Liberty。三十年來,無論工具換了多少代、製程從微米走到奈米,這三種格式始終是流程的通用語。它們分別回答三個問題:晶圓與單元「長什麼樣」(LEF)、這顆晶片的設計「擺了什麼」(DEF)、每個單元「跑多快」(Liberty)。OpenROAD 讀懂世界的方式,就是讀懂這三種檔案。
LEF:製程與單元的物理身分證#
LEF(Library Exchange Format)誕生於 Cadence,1990 年代 Cadence 做出關鍵決定:公開其規格,使其成為業界交換標準。LEF 分兩類。tech LEF 描述製程本身:金屬層與 via 的幾何、每層的方向與最小線寬、間距(pitch)、設計規則、單元列(site)的定義。cell LEF 則描述每個標準單元或 macro 的抽象視圖:邊界尺寸、pin 所在層與位置、obstruction(遮擋區域)。注意 LEF 不是完整的版圖——它只有 pin 的位置與遮擋輪廓,沒有 transistor 的內部細節;這是刻意的抽象,讓佈局佈線工具不必理解電晶體也能工作。
在 ORFS 的 platform 目錄裡,這些檔案一目瞭然:
flow/platforms/sky130hd/
├── sky130hd.tlef # tech LEF
├── lef/sky130_fd_sc_hd_merged.lef # 標準單元 LEF
├── liberty/sky130_fd_sc_hd__tt_025C_1v80.lib # Liberty(typical corner)
└── *.rcx_rules.json 等
OpenROAD 讀入它們的方式:
read_lef flow/platforms/sky130hd/sky130hd.tlef
read_lef flow/platforms/sky130hd/lef/sky130_fd_sc_hd_merged.lef
DEF:設計的快照#
DEF(Design Exchange Format)同樣源自 Cadence 的開放規格,描述「某一顆設計在某一時刻」的完整狀態:die 的邊界、row 的排列、每個 instance 擺在哪裡、每條 net 怎麼繞線、電源網、特殊走線。DEF 是流程各階段的交接語言——floorplan 完成後是「只有 die/row/pin 的 DEF」,placement 完成後是「有座標的 DEF」,routing 完成後是「有繞線的 DEF」。OpenROAD 用 OpenDB 直接讀寫 DEF,各引擎之間不需要任何轉換;跨工具交接時(例如把 veryl2chip 產出的 DEF 交給 OpenROAD),DEF 就是那道橋。
一個 DEF 檔案的開頭通常長這樣:
VERSION 5.8 ;
DIVIDERCHAR "/" ;
BUSBITCHARS "[]" ;
DESIGN gcd ;
UNITS DISTANCE MICRONS 1000 ;
DIEAREA ( 0 0 ) ( 100000 100000 ) ;
單位是 DEF 的經典陷阱:資料以整數資料庫單位(DBU)表示,UNITS 行宣告多少 DBU 等於 1 微米。座標系原點在左下角,這與一般數學座標系相反,初學者常在此跌跤。
Liberty:時間的物理學#
前兩種格式描述空間,Liberty(.lib)描述時間。它是 Synopsys 制定的 cell 時序模型標準,記錄每個 cell 在各種輸入轉換時間(input transition)與輸出負載(output load)組合下的延遲。主流模型有兩代:NLDM(Nonlinear Delay Model)用二維查找表,輸入是 slew 與 load,輸出是延遲;CCS(Composite Current Source Model)則存放電流波形,對先進節點的奈米級效應更精確。除了延遲,Liberty 還含功耗、pin 的 direction 與 capacitance、timing arc 的類型(組合、setup/hold 約束等)。
關鍵在於 corner:製程變異、溫度、電壓都會改變 cell 行為,所以一個 cell library 會有多份 Liberty 檔,例如 sky130hd 的 tt_025C_1v80(typical 製程、25°C、1.8V)與 ss_100C_1v60(slow、100°C、1.6V)——後者正是簽核 setup 時序時用的 worst-case corner。ORFS 在 platform 設定中宣告這些 corner,OpenSTA 據此做多 corner 時序分析。時序基本公式也值得記住:一級邏輯的延遲是查表所得,而 setup 檢查要求資料到達時間不超過
簽核工具的工作,就是把這個不等式在整個晶片的每條路徑上驗證。
PDK 的開放:一段制度史#
三種格式都齊了,還缺一樣:真實的製程資料。過去 PDK 是晶圓廠與 EDA 廠的商業機密,學界只能用虛構的模型(如 Nangate45)。2019 年前後,兩個里程碑改變了局面:SkyWater Technology 與 Google 合作開源了 SKY130 PDK——一份真實、可流片(透過 efabless 的 shuttle)的 130nm 製程,配套的標準單元 library(sky130_fd_sc_hd)以 LEF、Liberty、GDS 完整公開;更早之前,亞利桑那州立大學的 ASAP7 則提供了 7nm 學術 PDK,讓研究者能在近先進節點的設計規則下做實驗。ORFS 的 platforms/ 目錄把這些平台整理成隨裝即用的形式,這正是本章所有檔案範例的出處。
理解了 LEF、DEF 與 Liberty,你就掌握了實體設計的「文法」。下一章開始,我們用這些文法寫第一句話:把 die 與 core 畫在矽上——floorplanning。