跳轉到

Veryl硬體描述語言:從SystemVerilog的困境到現代硬體描述語言#

《Veryl 硬體描述語言:從 SystemVerilog 的複雜度困境到可預測的現代硬體設計》 (Veryl: A Modern Hardware Description Language — Escaping the Complexity Trap of SystemVerilog)

本書是「計算機結構系列」的語言專卷。姊妹卷《用 Verilog 學計算機結構》講硬體本身如何運作,《計算機結構入門》與《高等計算機結構》講微架構如何組織;本書講描述硬體的語言——設計者用什麼樣的語言,把腦中的電路變成可合成、可驗證、可維護的原始碼。

全書主線:每一種語言特性的存在,都是為了解決上一代語言製造的問題;而每一代語言製造的新問題,又逼出了下一代語言。

  • Verilog(1984)用 C 式的語法降低了硬體描述的門檻,卻用「語法糖掩蓋語意」的方式留下了無數陷阱(阻塞賦值 vs 非阻塞賦值、四態邏輯、隱含網路),這些陷阱在 1995-2005 年間被無數專案重複踩到。
  • SystemVerilog(2005)企圖一次補齊所有缺口,結果語言複雜度爆炸:完整語言規格超過 1800 頁,各家 EDA 工具只支援互相不重疊的子集,UVM 更是把驗證方法學的複雜度再乘上一個數量級。
  • 硬體語言的複雜度有兩個致命後果:工具難以實作(工具商只做子集,工程師被迫在「工具支援的子集」裡寫程式),以及語意難以預測(工程師無法從程式碼推斷生成的硬體,無法做 ASIC 的 ECO 與時序微調)。
  • 2010 年代的 Alt-HDL(Chisel、Spiral、SpinalHDL)用「用 Scala 寫硬體」或「用另一種語言生成 Verilog」來解決,但它們產生的是可讀性差的巨量 Verilog,無法與既有的 SystemVerilog 生態(介面、struct、驗證環境)對接,因此在 ASIC 流程裡難以落地。
  • Veryl(2022)走的是第三條路:在語義上與 SystemVerilog 等價,在語法上全面簡化,並保證生成的 SystemVerilog 保持可讀性。它刻意不引入自動流水線等「會偷偷插入 FF」的功能,因為那會破壞「改 Veryl 程式碼 → 可預測地改變生成的硬體」這條最重要的因果鏈。
  • Veryl 的第一個真實規模設計是 Heliodor(2026)——一個可跑 Linux 7.1 的多核 out-of-order RISC-V 核心,完全以 Veryl 撰寫,並成為驅動 Veryl 編譯器效能與模擬器效能的壓力測試。

目錄#