簡介
硬體驗證語言通常具有類似C++或Java這樣高級語言的特點,同時又提供硬體描述語言那樣的位運算功能。許多硬體驗證語言能夠生成帶約束的隨機激勵,並提供了功能覆蓋結構,來輔助設計人員進行複雜的硬體驗證。
SystemVerilog、OpenVera和SystemC是最常用的硬體驗證語言。其中,SystemVerilog更是將硬體描述語言與硬體驗證語言合併到單一標準。
硬體描述語言
在電子學中, 硬體描述語言(英語: hardware description language, HDL)是用來描述電子電路(特別是數字電路)功能、行為的語言,可以在暫存器傳輸級、行為級、邏輯門級等對數字電路系統進行描述。隨著自動化邏輯綜合工具的發展,硬體描述語言可以被這些工具識別,並自動轉換到邏輯門級網表,使得硬體描述語言可以被用來進行電路系統設計,並能通過邏輯仿真的形式驗證電路功能。設計完成後,可以使用邏輯綜合工具生成低抽象級別(門級)的網表(即連線表)。
硬體描述語言在很多地方可能和傳統的軟體程式語言類似,但是最大的區別是,前者能夠對於硬體電路的時序特性進行描述。硬體描述語言是構成電子設計自動化體系的重要部分。小到簡單的觸發器,大到複雜的超大規模積體電路(如微處理器),都可以利用硬體描述語言來描述。常見的硬體描述語言包括Verilog、VHDL等。
SystemVerilog
代的積體電路(尤其是超大規模積體電路)的設計和驗證流程中, SystemVerilog是一種由Verilog發展而來的硬體描述、硬體驗證統一語言,前一部分基本上是2005年版Verilog的擴展,而後一部分功能驗證特性則是一門面向對象程式設計語言。面向對象特性很好地彌補了傳統Verilog在晶片驗證領域的缺陷,改善了代碼可重用性,同時可以讓驗證工程師在比暫存器傳輸級更高的抽象級別,以事務而非單個信號作為監測對象,這些都大大提高了驗證平台搭建的效率。
SystemVerilog已經被採納為電氣電子工程師學會1800-2009標準,並獲得了主流電子設計自動化工具供應商的支持。雖然沒有哪一個仿真系統能夠聲稱自己完全支持SystemVerilog語言參考手冊(Language Reference Manual, LRM)里介紹的所有語言結構,要改善測試平台的互操作性相當困難,但是推進跨平台兼容性的研究開發工作已經在進行。若干種驗證方法學相繼出現,以預定義類的形式對測試平台模組進行標準化,如今最新的基於SystemVerilog的驗證方法學為通用驗證方法學。這一方法學主要包括開放原始碼的類庫以及支持可重用測試平台、開發驗證IP核的預置格式。許多第三方提供商則開始推出基於SystemVerilog的驗證IP核。
OpenVera
OpenVera是一種硬體驗證語言,它由新思科技研發和運營。該語言主要用於創建硬體系統的測試平台。OpenVera是作為IEEE1800標準的SystemVerilog的一個基礎部分,許多從事半導體積體電路設計、系統級設計、IP核設計以及電子設計自動化的人員都受益於此。
SystemC
SystemC是一種基於C++語言的用於系統設計的計算機語言,是用C++編寫的一組庫和宏。它是為了提高電子系統設計效率而逐漸發展起來的產物。IEEE於2005年12月批准了IEEE1666-2005標準。
通常,系統由軟體部分和硬體部分組成,系統的一部分功能由軟體實現,而另一部分功能則由硬體實現。早期的系統比較簡單,系統工程師將準備設計的系統劃分為軟體部分和硬體部分,分別由軟體工程師和硬體工程師進行設計、仿真、實現和改進,最後再將軟體部分和硬體部分結合起來形成系統。軟體工程師使用C和C++等程式設計語言,因為這些語言專長於描述串列執行的程式,用來仿真軟體部分;而硬體工程師則使用VHDL和Verilog等硬體描述語言,因為這些語言專長於描述並行運行的硬體,用來仿真硬體部分。但是,隨著電子系統的不斷發展,系統結構越來越複雜,系統組件也越來越多,這就要求系統工程師在先期劃分軟體和硬體時,就對整個系統性能有很好的了解和掌握,以便更好地劃分軟體和硬體,減小設計中不必要的失誤所帶來的損失和風險。SystemC也就由此孕育而生,因為它能夠滿足對軟體和硬體協同仿真的需求。
SystemC的名稱來自“系統”一詞的英語 System和“C/C++語言”中的 C,以表示它是一種基於C/C++語言的系統設計語言。
許多科學研究團隊和計算機輔助設計軟體公司一同為SystemC的發展做出了貢獻,1999年成立了開源SystemC的開發團隊“Open SystemC Initiative(OSCI)”。
2011年11月10,IEEE通過了新SystemC 2011標準:IEEE1666-2011。