VHDL 與 Verilog 的雙雄競爭與標準化政治#
Verilog 並不是在真空裡成長的。在它成為美國業界事實標準的同時,另一種血統完全不同的語言 VHDL 也在標準化機構的推動下崛起,兩者的競爭持續了超過三十年,塑造了整個 HDL 世界的基本格局。
VHDL:國家計畫生的孩子#
VHDL 的出身與 Verilog 的商業出身截然不同。1980 年前後,美國國防部推動 VHSIC(Very High Speed Integrated Circuit)計畫,面對軍用晶片供應商各自為政、文件格式互不相通的困境,國防部希望有一種統一的硬體描述語言,既用於設計、也作為採購合約中的規格文件語言。這個需求在 1981 年前後具體化為 VHDL(VHSIC Hardware Description Language)專案,語言風格刻意參考了當時美國官方推動的 Ada 程式語言:強型別、嚴格的語法結構、明確的實體(entity)與架構(architecture)分離。VHDL 於 1987 年搶先一步成為 IEEE 1076-1987 標準,而且因為國防部要求供應商支援,加上美軍相關計畫的帶動,VHDL 在一開始就有了官方背書的普及動能。
有趣的是,VHDL 誕生時甚至沒有一個高效能的商業模擬器可以搭配——它是先有標準、後有工具;Verilog 則是先有出色的模擬器、語言跟著工具一起賣。這個順序差異也決定了兩種語言的性格:VHDL 像一份嚴謹的規格文件,Verilog 像一套好用的工程工具。
強型別對上 C 風格:兩種工程文化#
把兩種語言放在一起,差異一目瞭然。VHDL 是強型別語言:一個 8 位元的 std_logic_vector 和另一個寬度的向量不能直接運算,位元型別與布林型別嚴格分離,寫錯了編譯期就攔下來。Verilog 則寬鬆得多:所有 wire/reg 幾乎可以隨意互相指定,位寬不符就靜默擴展或截斷,語法習慣接近 C。支持 VHDL 的人說強型別在大型團隊中能防止大量隱性錯誤;支持 Verilog 的人說鬆散的語法讓小設計寫起來快、學習曲線平緩。這個「嚴謹對便利」的張力,直到今天的 Rust 與 C 之爭、乃至 Veryl 對 SystemVerilog 的態度,都還在重演。
地理與制度的分界#
競爭的結果呈現出明顯的地緣分布。美國的商業 ASIC 與設計服務產業以 Verilog 為主流,因為 Verilog-XL 與隨後的第三方模擬器生態在美國扎根最深,C 風格語法也符合美國工程教育的主流習慣;歐洲則因官方與軍工採購、學術體系較早引入 IEEE 1076,偏好 VHDL;日本、台灣、以色列等地則視公司與客戶血統而混合使用。這不是純粹的技術優劣問題,而是制度路徑依賴:大學教哪種語言、公司既有 codebase 是哪種語言、客戶交付要求哪種語言,就決定了下一批工程師學哪種語言。EDA 三巨頭 Cadence、Synopsys、Mentor 在這段時期崛起,他們的工具鏈同時支援兩種語言,但各自旗艦模擬器的歷史淵源不同,也加深了陣營的分化。
互相吸收與標準的演化#
到了 1990 年代末期,兩種語言開始互相借用彼此的優點。Verilog 在 2001 年的標準(IEEE 1364-2001)加入了 generate 結構、敏感列表規範化、組合邏輯的 always @* 等過去欠缺的結構化能力;VHDL 則在 2002 與 2008 的修訂中簡化語法、增加類似 Verilog 的便利寫法。語言之間的牆逐漸變低,多數大型專案甚至 VHDL 與 Verilog 混用,靠共同的模擬器與綜合工具橋接。這段「雙標準共存、互相吸收」的歷史告訴我們:HDL 標準的演化很少由技術單獨決定,更多是標準組織、政府採購、商業工具與工程文化四股力量妥協的產物。
留給後世的課題#
VHDL 與 Verilog 的雙雄格局維持了穩定但緩慢的演化節奏:標準修訂以數年為週期,工具廠商在標準之外各自加料,形成「標準內可攜、標準外鎖定」的常態。當設計規模在 2000 年代衝向千萬閘、驗證複雜度爆炸時,這兩種 1980 年代設計的語言都開始顯得力不從心——它們都缺少物件、約束隨機、功能覆蓋這類現代驗證所需的抽象。下一章的 SystemVerilog,正是在這個壓力下誕生的膨脹版本。
本章小結#
- VHDL 源自美國國防部 VHSIC 計畫(1981 年前後),IEEE 1076-1987 標準化,Ada 風格、強型別。
- Verilog 商業出身、C 風格、語法寬鬆,靠模擬器效能與易用性在美國業界普及。
- 地理分布(美國偏 Verilog、歐洲偏 VHDL)反映制度與教育的路徑依賴,而非純技術優劣。
- Verilog-2001 與 VHDL-2002/2008 互相吸收,形成雙標準共存的格局。
- 兩者都無法滿足 2000 年代驗證複雜度爆炸的需求,催生了 SystemVerilog。