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 編譯器效能與模擬器效能的壓力測試。
目錄#
- 導言-硬體描述語言的困境與Veryl的出現
- 第1章-硬體描述語言的歷史與複雜度危機(1984-2026)
- 第2章-Veryl的設計哲學與語言定位(2022-2026)
- 第3章-模組、介面與專案組織
- 第4章-時序邏輯與時鐘重置抽象
- 第5章-資料型別、泛型與表達式
- 第6章-時鐘域與跨時鐘域安全(2024-2026)
- 第7章-工具鏈、專案管理與持續整合
- 第8章-驗證流程:原生測試與內建模擬器
- 第9章-與SystemVerilog的互操作與遷移
- 第10章-生態、實戰與未來方向
- 10.1-Heliodor:以Veryl實作的RISC-V多核處理器(2026)
- 10.2-周邊生態:RgGen、Rust元件與社群實踐
- 10.3-語言設計的未解問題與演進方向(2026-)