跳轉到

與其他現代 HDL 比較#

Veryl 不是唯一嘗試超越 SystemVerilog 的語言。2010 年代以來,一波「現代 HDL」各自從不同宿主語言出發。這一節做系統性比較,並論述各路線的取捨。

各家路線速覽#

  • Chisel:UC Berkeley 出身,宿主語言是 Scala,以嵌入式 DSL 形式存在;設計是 Scala 程式,執行後經 FIRRTL 中間表示編譯成 Verilog。Rocket Chip、BOOM 等著名 RISC-V 核心以此寫成,與 RISC-V 生態深度綁定。
  • SpinalHDL:同樣是 Scala DSL,語法與 Chisel 血緣相近但獨立發展,以強型別的硬體訊號與豐富的 stream/bus 抽象聞名,在歐洲業界有穩定採用。
  • Amaranth(原名 nMigen):Python 宿主的 DSL,前身為 migen;語意上以明确的 sync/comb 域組織,強調可讀性與 Python 生態的亲和。
  • Bluespec:源於 Haskell 學術研究(BSV 語言以 Haskell 語法為基底),以 rules(原子式狀態轉換規則)為核心抽象,編譯到 Verilog;其規則式模型在複雜控制邏輯上表達力強。
  • Silice:較新的獨立語言,語法受 C 與 Verilog 影響,目標是輕量與接近硬體,常被用於 FPGA 小專案與復古運算社群。
  • Veryl:獨立語言(非 DSL),語法刻意親近 SystemVerilog 與 Rust 的混合體,編譯目標是人類可讀的 SV,並附帶 verylup/fmt/LSP/registry 的完整工具鏈。

比較表#

語言 宿主/型態 中間表示 主要生態 強項 顧慮
Chisel Scala DSL FIRRTL Berkeley/RISC-V 參數化生成、學界傳統 Scala 學習曲線、輸出可讀性
SpinalHDL Scala DSL 直接產 Verilog 歐洲業界 stream/bus 抽象豐富 同 Scala 曲線
Amaranth Python DSL 自己的 IR 開源 FPGA 社群 Python 入門易 生態較小
Bluespec Haskell 源流語言 → Verilog 學術/工業小眾 rules 抽象、正確性 思維門檻高
Silice 獨立語言 → Verilog 復古/FPGA 社群 輕量直接 功能較精簡
Veryl 獨立語言 → SV(人類可讀) 新興開源 工具鏈完整、SV 相容 年輕、生態小

取捨的三個軸#

  • 工具鏈相容性 vs 抽象力:DSL 路線(Chisel/SpinalHDL/Amaranth)用宿主語言的完整表達力做「硬體生成程式」——迴圈、遞迴、型別系統都可以用來生成電路,抽象力上限高;代價是 debug 時要穿越兩層語意(生成程式的 bug vs 生成出的電路的 bug),且產出的 Verilog 往往難以人工 review。Veryl 選了另一極:語言本身表達力受限(沒有宿主語言的威力),但輸出 SV 幾乎一對一可讀,review、lint、與既有腳本的相容性最好。
  • 學習曲線:對會 Python 的學生,Amaranth 最平緩;對軟體工程師,Scala DSL 值得投資;對既有 Verilog 工程師,Veryl 幾乎無痛——語法映射直觀,舊知識全部生效。
  • 可讀輸出的制度意義:當你把 IP 交付給客戶、或送進只認 SV 的簽核流程,「產出是不是人寫的樣子」不只是美觀問題,而是商業問題。Veryl 把這點當第一原則,Chisel 社群近年也開始重視 FIRRTL 優化後輸出的可讀性——可見這是所有現代 HDL 遲早要面對的考題。

沒有贏家的競賽#

真實世界的答案往往是多語言並存:SoC 頂層與 DSP 用一種、暫存器與匯流接合用另一種、驗證用 Python(cocotb)。Veryl 的策略是「不取代任何人,先讓 SV 工程師的日常變好」,在生態光譜上佔據「保守務實」的位置。這個位置的風險是天花板——它不提供 Chisel 式的生成威力;機會是入口寬——它可能是最大族群的 SV 工程師第一次接觸現代 HDL 的那扇門。下一節,我們抬頭看下一個十年。