跳轉到

8.1 Ibex 與 Rocket:開源處理器的流程實測#

流程的好壞,最終要靠真正的設計來檢驗。對 OpenROAD Flow Scripts(ORFS)而言,最有說服力的測試對象,莫過於兩款在開源硬體世界中最具代表性的 RISC-V 處理器:Ibex 與 Rocket。這兩個設計不僅在 ORFS 中都有現成的 design config,可以從 RTL 一路跑到 SkyWater 130nm 的 GDS,更象徵著開源硬體運動的兩條不同路線——一條強調可讀、可教學的最小核心,另一條則是參數化生成式的架構實驗場。

Ibex 的前身是 zero-riscy,由 ETH Zurich 的 PULP 平台團隊與 lowRISC 合作發展,目標是做一個精簡、適合嵌入式應用的二階管線 RISC-V RV32 核心。它的程式碼規模不大,結構清楚,成為學術研究與教學上最受歡迎的處理器核心之一。ORFS 中只要在 designs/sky130hd/ 下選定 Ibex 的 config,執行 make 就能完成從 synthesis、floorplanning、placement、CTS、routing 到 GDS 的全流程。由於核心面積不大,整個流程在一般筆電上數十分鐘內即可收斂,是入門者第一次看到「自己的晶片長什麼樣子」的最佳範例。

Rocket 則是完全不同的故事。它出自 UC Berkeley,是 RISC-V 指令集誕生的原點設計,以 Chisel 語言撰寫——這是一種建立在 Scala 之上的硬體描述語言,用參數化的 generator 方式產生 Verilog。Rocket 的出現代表一種思想上的轉變:硬體不再只是手寫的 RTL,而可以像軟體一樣被「生成」。ORFS 中 Rocket 的 design config 使用的正是 Chisel 產生的 Verilog 輸出,這也順帶示範了 ORFS 對各種 RTL 來源的相容性——只要最終是可合成的 Verilog,無論手寫、生成或由高階合成產生,流程一視同仁。

這兩個案例的歷史脈絡值得細看。2010 年前後,BERKely 的 Krste Asanović 與 David Patterson 推動 RISC-V 開放指令集,其動機之一正是當時商業 ISA 授權費用高漲、學術研究受制於無法公開的專有核心。RISC-V 以 BSD 授權釋出,配合 Rocket 這個開源實作,讓任何人都能自由研究、修改、商用處理器。同一時期,ETH Zurich 的 Luca Benini 團隊發展 PULP(Parallel Ultra-Low Power Processing)平台,zero-riscy 正是其中面向物聯網端點的最小核心,後來交由 lowRISC 維護並更名為 Ibex。再往後,2019 年 SkyWater Technology 與 Google 合作將 SkyWater 130nm PDK 開源,2020 年 DARPA 資助的 OpenROAD 專案將 RTL-to-GDS 自動化流程開源,三條線索在此匯流:開放指令集、開源處理器、開放 EDA 與 PDK,第一次讓「從零到一顆真正的晶片」完全不依賴任何封閉工具。

用 Ibex 在 sky130hd target 上實測,可以看到典型的小核心特徵:面積大約落在 0.03 到 0.05 mm² 量級,幾萬個 standard cell,clock period 設定在數十 ns 時時序輕鬆收斂;若刻意壓到更緊的 clock,ORFS 的 DSE 機制(見下一節)就能顯示 TNS 與 WNS 如何隨之惡化。Rocket 的規模則明顯較大,其五級管線加上 FPU 選項使其 cell 數達到數萬到十萬量級,對 placement 與 routing 的壓力更接近真實 SoC 中的模組層級設計。兩者的對比恰好覆盖了數位後段設計的主要挑戰光譜:前者考驗流程能否乾淨地跑完,後者考驗 congestion 與 timing closure 的能力。

從教育與產業的角度看,這些實測案例的意義遠超技術本身。過去要教導學生「晶片是怎麼做出來的」,必須倚賴校園授權的商業工具,學生畢業後若進入使用不同工具的公司,經驗難以直接轉移;更重要的是,流程的內部細節是黑箱,無法深入理解演算法。OpenROAD 改變了這個局面:學生可以用 Ibex 當教材,把 floorplanning、global placement、routing 的每一個中間結果都打開來看,甚至修改工具原始碼觀察效果。台灣、美國、歐洲已有多所大學將 ORFS 與開源 PDK 納入 VLSI 課程,學生第一次修課就能真的把 RISC-V 核心送到 SkyWater 的 shuttle 流片,拿回實體晶片。這種「課堂上流片」的經驗,在十年前是不可想像的。

Ibex 與 Rocket 在 ORFS 中的存在,也因此不只是兩個 test case,而是一座橋:連接了開源指令集的倡議者、開源核心的維護者、開源 EDA 的開發者,以及渴望真正動手的學習者。當這四個社群都能在同一份 design config 上對話時,開源晶片生態才真正開始自我滋養。