2.2 建置環境:原始碼編譯與 Docker#
開源 EDA 要能改變產業,前提是「能被裝起來」。這句話聽起來平常,卻是三十年來開源工具最常跌倒的地方:演算法再好,如果使用者花三天還編不出 binary,影響力就是零。OpenROAD 從 DARPA 資助之初就把「可安裝性」當成一級目標,因此提供了兩條清楚的安裝路徑——從原始碼編譯,以及使用官方 Docker 映像。這一章我們把兩條路都走一遍,並且談談這背後「 reproducible environment 」的思想脈絡。
兩條路徑的取捨#
從原始碼編譯的好處是你可以追蹤最新開發版、修改程式碼、做實驗;缺點是依賴較多。OpenROAD 的主要依賴包括 CMake(建置系統)、一個夠新的 C++ 編譯器(C++17 以上)、Boost、Eigen、以及 SWIG(用來產生 Python/Tcl 綁定)。Tcl 與 Python 的開發標頭檔也要在系統上備齊,否則綁定會編不出來。
典型的原始碼建置流程如下:
git clone --recursive https://github.com/The-OpenROAD-Project/OpenROAD.git
cd OpenROAD
sudo ./etc/DependencyInstaller.sh -base
sudo ./etc/DependencyInstaller.sh -common
./etc/Build.sh -cmake="-DCMAKE_BUILD_TYPE=Release" -threads=8
DependencyInstaller.sh 是 OpenROAD 團隊維護的依賴安裝腳本,支援 Ubuntu 與 RHEL 系列等主流發行版,會自動處理 Boost、SWIG、spdlog 等套件。Build.sh 則包裝了 CMake 的兩階段建置——先建置依賴的子模組,再建置 OpenROAD 本體。幾十分鐘後,你會得到 ./build/src/openroad 這個可執行檔。驗證方式:
./build/src/openroad -version
值得提醒的是編譯模式:務必使用 Release。和本書討論的 veryl2chip 工具鏈一樣,OpenROAD 的 placement 與 routing 引擎計算量極大,debug build 可能慢上十倍以上,用它跑流程會嚴重誤導你對效能的認知。
Docker 與可重現性#
第二條路徑是 Docker。OpenROAD 官方提供預建映像,把編譯環境、依賴函式庫與工具本體全部打包:
docker pull openroad/flow-ubuntu22.04-builder:latest
docker run -it -v $(pwd):/work openroad/flow-ubuntu22.04-builder:latest
如果你只是想「用」OpenROAD 而不想「改」它,Docker 是最省事的路;如果你要開發,也可以在容器內進行完整編譯,保證環境與 CI 一致。
Docker 路徑的意義遠不止「省去編譯」。晶片設計有個古老的要求叫 reproducibility:同一份設計、同一版工具、同一組選項,必須得到位元級一致的結果,否則 signoff 與量產都無從談起。傳統 EDA 靠版本鎖定與廠商認證來保證這件事;開源世界則靠容器映像。把工具版本、作業系統、函式庫全部凍結在同一個 image 裡,一年之後任何人重新執行,都得到同樣的 GDS。這是把「實驗科學的紀律」帶進 EDA 的方式,也是開源社群能互相信任彼此結果的基礎建設。
安裝 ORFS:流程層的環境#
OpenROAD 是引擎,ORFS(OpenROAD-Flow-Scripts)是駕馭引擎的完整流程。若你的目標是從 RTL 跑到 GDS,通常直接安裝 ORFS 更方便,因為它會把 Yosys、OpenROAD、klayout 等一併處理:
git clone --recursive https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts.git
cd OpenROAD-flow-scripts
sudo ./setup.sh
setup.sh 會偵測發行版並安裝依賴。ORFS 同樣提供 Docker 版本,官方教學的標準入口是:
cd OpenROAD-flow-scripts
./build_openroad.sh # 編譯 OpenROAD 並準備環境
source ./env.sh # 載入環境變數
之後就能用 make(下一節會詳談)跑設計。注意 --recursive 與子模組:ORFS 把 OpenROAD 作為子模組引用,忘了拉子模組是新手最常見的錯誤。
硬體需求與教育意義#
OpenROAD 與 ORFS 是重量級軟體:完整建置需要多核心 CPU(建議 8 核以上)、16 GB 以上 RAM,磁碟空間數十 GB。SkyWater 130nm 這類 platform 的 cell library 就有數千個檔案,routing 一個中型設計可能要數小時。好消息是這些需求在今日任何一台普通工作機上都能滿足——這正是開源革命的核心:1990 年代要跑實體設計,你需要價值數十萬美元的 license 與工作站;今天,一台筆電加上免費軟體,就能做出可流片的 130nm 晶片。
這個門檻的崩塌,改變的是「誰能學晶片設計」。過去 EDA 知識集中在少數大公司與頂尖大學的實驗室裡,因為工具即是知識的載體——沒有工具的人,連演算法長什麼樣都看不到。當 OpenROAD 可以被任何學生 git clone 下來編譯、修改、做實驗,EDA 教學就從「黑箱操作訓練」變成「白箱科學研究」。這也是為什麼 DARPA 願意出錢:他們要的不是一支免費工具,而是重建美國晶片人才的培養管線。環境建置,是這場教育實驗的第一步。