跳轉到

軟體工程的回頭浪潮:Cargo、LSP 與新一代 HDL#

在 SystemVerilog 讓工程界疲乏的同一時期,軟體工程世界悄悄完成了一場基礎建設革命。當硬體社群回頭望向軟體界時,看到的是一套截然不同的開發體驗——而這正是新一代 HDL 誕生的思想背景。

軟體界的黃金標準:Cargo 與 LSP#

2015 年前後,Rust 1.0 正式釋出,與語言一起定型的還有它的工具生態:cargo 做為統一的建置與套件管理工具,一條 cargo build 就能抓取依賴、編譯、測試;rustfmt 統一了格式化風格,終結了「我的縮排 vs 你的縮排」之爭;clippy 提供超越編譯器的靜態檢查。另一項更沉默但影響深遠的基礎建設是 Microsoft 於 2016 年提出的 Language Server Protocol(LSP):把「語言理解」與「編輯器」解耦,任何語言只要實作一個 language server,就能在任何支援 LSP 的編輯器裡獲得跳轉定義、自動補全、即時錯誤提示。這兩件事合起來,把軟體開發的入門體驗提升到一個新層次:新手第一天就能在編輯器裡看到即時的型別錯誤,cargo test 跑起來就有報告,格式永遠一致。

硬體界的響應#

硬體工程師當然注意到了這個落差。使用 SystemVerilog 的日常是:沒有統一的專案管理(每家公司的 script 各不相同)、沒有標準的格式化工具(各種 coding style 手冊)、編輯器支援靠商業工具的高價 license、依賴管理靠版本控制系統裡的 submodule 與土法煉鋼的 script。對照 cargo 與 LSP 的世界,落差刺眼。

於是 2010 年代出現了一批受軟體工程啟發的新語言。Chisel 由 UC Berkeley 在 2012 年前後開發,用 Scala 做為宿主語言,以嵌入式 DSL 的方式產生硬體描述,最著名的成果是 RISC-V 的 Rocket 處理器;SpinalHDL 從 Chisel 的路線衍生,同樣以 Scala 為宿主;Amaranth(前身為 nMigen)用 Python 做同樣的事;Bluespec 則源自 MIT 的研究,以 Haskell 風格的規則式語意描述硬體。這些語言共同解答了一個問題:如何用現代語言的表達能力取代 Verilog 的樣板?但它們也共享同一個架構決策——宿主語言路線:硬體描述只是宿主語言裡的程式,經過 elaborate 之後才輸出成 Verilog。

宿主語言路線的得與失#

宿主語言路線的好處是表達能力強大:你可以在 Scala 裡寫參數化的 meta-programming,用整個語言的威力產生電路結構,Chisel 的 FIFO generator 一行就能例化出任意寬度深度的模組。代價同樣明顯。第一,除錯斷層:你寫的是 Chisel,編譯器報錯與模擬波形看到的卻是產出來的 Verilog,兩者之間的映射不透明,出問題時要自己心裡反推。第二,入門門檻疊加:要學硬體、還要先學 Scala/Python 的進階特性,對硬體工程師是雙重負擔。第三,輸出的 Verilog 是機器產生的中間碼,人類不會去讀,於是與既有的 Verilog 資產、團隊流程、審查文化之間出現一道牆。

另一條路線因此浮現:不去借用別的語言,而是直接改良 HDL 本身——保留「描述的就是最終電路」的直接性,但把三十年的語言設計教訓與現代工程體驗放進去。這條路線的代表就是 Veryl:它不是宿主語言,而是一種真正的 HDL,語法吸收 Rust 的清爽,編譯器輸出的是人類可讀、可審查的 SystemVerilog,刻意維持與既有工具鏈的零縫隙相容。

Moore's Law 放緩與生產力壓力#

這場回頭浪潮的時間點並非偶然。2010 年代中期,摩爾定律的性價比曲線明顯放緩,晶片設計成本(尤其是驗證與軟體)成為主要瓶頸,業界開始認真討論「設計生產力鴻溝」:製程能做的電路規模,遠超過團隊能可靠設計與驗證的規模。當製程紅利不再自動到帳,工程生產力就成為競爭的核心變數——而軟體界早已示範了生產力可以靠工具鏈制度性提升。Cargo、LSP、fmt、test 這些「軟體工程的常識」,在硬體界反而成了激進的新想法。Veryl 內建 veryl fmt、veryl check、veryl doc、veryl test,提供 LSP 與版本管理器 verylup,正是把軟體界的回頭浪潮完整搬進 HDL 世界的實踐。

本章小結#

  • Rust 的 cargo(2015 前後定型)與 Microsoft 的 LSP(2016)重新定義了開發體驗的黃金標準。
  • Chisel(UC Berkeley,2012 前後)、SpinalHDL、Amaranth(前身 nMigen)、Bluespec 各自以宿主語言路線革新硬體描述。
  • 宿主語言路線表達力強,但有除錯斷層、入門門檻高、輸出不可讀的代價。
  • Moore's Law 放緩使設計生產力成為核心問題,工具鏈現代化成為顯學。
  • Veryl 選擇改良 HDL 本身的另一條路:直接性保留、工程體驗現代化。