跳轉到

8.2 PPA 與 Design Space Exploration#

如果要用一個詞概括晶片設計的終極追求,那就是 PPA:Power、Performance、Area。每一代製程的升級、每一次工具的改版、每一位工程師的日夜奮鬥,歸根結柢都是為了在這三個維度上再擠出一點改善。而在 PPA 背後,藏著一個更根本的問題:晶片設計空間實在太大了,没有任何人有能力窮舉它。

以 ORFS 跑一個 Ibex 核心為例,設計者面對的選擇包括:clock period 設多少、core utilization 給 40% 還是 60%、placement density 要不要設區域性約束、CTS 的 buffer 用哪一類、global placement 的 effort 要開多高、routing 要不要允許更寬鬆的 wire spacing……這些參數彼此耦合,影響非線性。clock 壓得越緊,performance 越好,但 power 與 area 往往隨之上升,且可能讓 routing 掉線;utilization 提高可以縮面積,卻可能讓 congestion 爆炸,導致 DRC violation 堆積。組合起來的設計空間輕易超過數千個點,每一個點又需要數十分鐘到數小時的流程時間來評估。傳統作法是資深工程師憑經驗「調參」,但經驗無法覆盖組合爆炸。

ORFS 對這個問題給出了一個務實的答案:Design Space Exploration(DSE)。ORFS 內建 DSE 機制,可以系統性地掃描指定的參數組合,對每個點記錄完整流程後的指標——TNS(Total Negative Slack)、WNS(Worst Negative Slack)、面積、power、wire length、DRC 數量等——最後產生一張跨越設計空間的地圖。工程師看著這張地圖,就能回答過去只能靠直覺回答的問題:這顆設計在 25ns 的 clock 下最少要多少面積?如果放寬到 30ns,area 能省多少、power 能降多少?Pareto front 上有哪些點值得選?

這種「把流程當成可測量的函數」的思想,其實有著深遠的學術淵源。1970 至 80 年代,Design Space Exploration 就已是 VLSI CAD 研究的核心課題,Berkeley 的 SIS 與 MIT 的擺置研究都試圖把最佳化形式化。當時受限於算力,探索範圍極小。到了 2000 年代,隨著多核心與 SoC 興起,DSE 與 Statistical Static Timing Analysis(SSTA)結合,開始處理製程變異帶來的不確定性——同一個 design point 在不同 corner 下的表現不同,DSE 從「找一個最好的點」演變成「找一組在所有 corner 下都穩健的點」。ORFS 的多 corner 支援正是這一脈絡的延續。

值得注意的是,DSE 的價值隨流程速度而放大。在商業工具時代,一次 full flow 要數小時甚至一天,掃十個點就是一週,DSE 因此只存在於大公司的專屬腳本中。OpenROAD 的出現改變了這個經濟學:流程完全自動化、可在普通機器上執行、且免授權費用,於是「掃一百個點」從奢侈變成例行公事。這也是開源 EDA 一個常被忽略的優勢——它不只是省錢,它改變了工程方法的可行性邊界。當評估成本趨近於零,探索式的方法論才真正可行。

從制度面看,DSE 也改變了設計團隊的協作方式。過去 timing closure 的知識存在於資深工程師的腦中與 email 往返裡,無法累積;有了 DSE,探索結果以數據與圖表的形式固定下來,可以 review、可以複現、可以交給下一個人。這種從「工匠經驗」到「可重現實驗」的轉變,正是科學方法在工程實務中的體現,也呼應了近年開源軟體界「everything as code」的文化——設計決策寫進 config、結果寫進 log、一切納入版本控制。

當然,DSE 有其極限。暴力掃描在參數維度增加時依然會爆掉:五個參數、每個十個值,就是十萬次流程。這正是下一節的主題——當探索成本仍然太高時,機器學習可以教會我們「哪些點值得先看」。DSE 提供了地圖,而 ML 提供了更聰明的搜尋策略,兩者合起來,才是應對指數級設計空間的完整答案。

對學習者而言,ORFS 的 DSE 也是最好的教材:用 Ibex 這樣的小設計,親手掃一輪 clock period 與 utilization,把 TNS/WNS/面積的 trade-off 曲線畫出來,那種「原來 PPA 是這樣被製造出來」的體悟,比任何課本都深刻。