SystemVerilog 的膨脹與工程界的疲乏#
當 VHDL 與 Verilog 的雙雄格局無法應付驗證複雜度的爆炸時,業界選擇的路不是發明新語言,而是把 Verilog 養成一頭巨獸。SystemVerilog 的故事,是一則關於「往舊語言裡不斷堆功能」會走到什麼地步的警示錄。
從 Superlog 到 IEEE 1800#
SystemVerilog 的前身是一家名為 Co-Design Automation 的小公司的 Superlog 語言。Superlog 的構想在 2000 年代初相當前衛:以 Verilog 為基礎,加入 Verilog 2001 之後欠缺的軟體級抽象——資料結構、物件導向、動態型別——讓驗證工程師能在同一種語言裡完成所有工作。這個資產隨後被 Synopsys 收購,Superlog 的想法演化為 SystemVerilog,並交由 Accellera 標準組織推動,於 2002 年與 2005 年先後推出 Accellera 版本,最終在 2005 年成為 IEEE 1800-2005 標準。四年後的 2009 年,IEEE 把 SystemVerilog(1800)與傳統 Verilog(1364)合併為單一標準 IEEE 1800-2009,Verilog 從此正式成為 SystemVerilog 的一個子集。這條演化路徑值得注意:它從頭到尾都被大型 EDA 廠商主導,標準化是商業策略的一部分。
功能爆炸:一種語言扛所有工作#
SystemVerilog 的野心是把設計與驗證的全部需求塞進同一種語法。它新增的能力大致可以分成幾大類:
- 物件導向驗證:
class、繼承、虛擬方法、隨機物件,讓 testbench 可以像軟體專案一樣組織。 - 約束隨機驗證(constrained random):
rand欄位加上constraint區塊,讓模擬器自動產生測試激勵。 - 功能覆蓋(covergroup):定義覆蓋率量測點,配合收斂工具判斷驗證完成度。
- interface 與 modport:把一組匯流排訊號打包成可連接的單位,減少 port list 的重複。
- program 區塊:為 testbench 提供與設計不同的排程語意,緩解 race condition。
- 斷言(SVA)、mailboxes、semaphores、DPI 介面……族繁不及備載。
單看每一項都有道理,合起來卻是一種體量驚人的語言。SystemVerilog 的標準文件厚度遠超 Verilog-2001 數倍,即使是資深工程師也常只精通其中一小部分。
方法學的重磅化:VMM、OVM、UVM#
語言膨脹之外,驗證方法學框架又疊加了一層重量。Synopsys 的 VMM、由 OVM(本身源自 OpenCerts/Qualcomm 系的成果與 Cadence 的 e 方法學經驗融合)到最終由 Accellera 整合推出的 UVM(Universal Verification Methodology),提供了一整套 class library:元件階層、factory、config database、sequence/sequencer、phase 機制、reg model。UVM 確實成為大公司驗證團隊的通用語言,但它的代價是驚人的樣板程式碼與概念負擔——一個最小的 UVM 環境動輒數十個檔案,新手要花數月才能讀懂既有環境。許多工程師的日常體感是:寫一個小模組的測試,用 SystemVerilog + UVM 比寫模組本身還費力。
痛點的總結#
SystemVerilog 時代累積的疲乏可以歸納為四點。第一,編譯器實作困難:語言太大、語意角落太多,連商業巨頭的工具都各有實作差異,開源工具(如 Icarus、之後的 Verilator 對 SystemVerilog 子集的支援)長期只能覆蓋部分功能。第二,工具碎片化:模擬器、綜合器、lint 工具對同一份程式碼的接受度不同,工程師被迫寫「所有工具都能吃」的最大公約數子集,語言的先進功能反而少用。第三,學習成本:新進工程師要同時學語言與方法學框架,入門門檻年年升高。第四,供應商鎖定:關鍵的驗證功能(覆蓋率收斂、formal、debug 環境)深度綁定商業工具,離開特定工具鏈的代價極高。
對新世代的啟示#
SystemVerilog 的教訓成為下一代 HDL 的重要參照:語言設計者開始警惕「無限堆功能」的路線,轉而追求小而一致的核心、開源工具鏈、以及現代軟體工程的使用體驗。Veryl 正是在這個教訓上做出明確取捨——它刻意不做物件導向、不做約束隨機,只專注把 RTL 設計這一件事做到乾淨可讀,並以「轉譯成任何人都能用的 SystemVerilog」確保與既有生態相容。要理解 Veryl 的減法,必須先理解 SystemVerilog 加法的後果。
本章小結#
- Superlog(Co-Design Automation)被 Synopsys 收購演化為 SystemVerilog,經 Accellera 標準化為 IEEE 1800-2005,2009 年與 1364 合併。
- 功能爆炸:class、constraint random、covergroup、interface、program、SVA 全部塞進一種語言。
- VMM/OVM/UVM 方法學框架帶來重量級樣板與學習曲線。
- 痛點:編譯器實作困難、工具碎片化、學習成本高、供應商鎖定。
- 這些教訓直接塑造了新一代 HDL 的減法哲學,包括 Veryl。