VHDL、Verilog和SystemVerilog的比較
簡介
各種硬件描述語言 (HDL) 在過去幾年中不斷增強,確定哪種語言適合哪種設(shè)計的復(fù)雜性也隨之增加。許多設(shè)計人員和組織正在考慮是否應(yīng)該從一種 HDL 切換到另一種HDL。
本文比較了三種通用 HDL 的技術(shù)特性:
VHDL (IEEE-Std 1076):一種由多種驗證和綜合(實現(xiàn))工具支持的通用數(shù)字設(shè)計語言。
Verilog (IEEE-Std 1364):一種通用數(shù)字設(shè)計語言,支持多種驗證和綜合工具。
SystemVerilog:Verilog 的增強版本。
語言的“感覺”
每個 HDL 都有自己的風(fēng)格和特點。以下描述提供了每種語言的整體“感覺”。文章末尾的表格提供了更詳細的功能比較。
VHDL
VHDL 是一種強類型且類型豐富的語言。源自 Ada 編程語言,其語言要求比 Verilog 更冗長。額外的冗長旨在使設(shè)計自我記錄(所謂的更嚴(yán)謹(jǐn))。此外,強類型需要額外的編碼才能從一種數(shù)據(jù)類型顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型。
VHDL 的創(chuàng)建者強調(diào)明確的語義和易于從一種工具移植到另一種工具的設(shè)計。因此,作為語言和工具實現(xiàn)的產(chǎn)物,競爭條件不是 VHDL 用戶關(guān)心的問題。
已經(jīng)開發(fā)了幾個相關(guān)的標(biāo)準(zhǔn)來增加語言的實用性。今天的 VHDL 設(shè)計都依賴于 IEEE-Std 1164(std_logic 類型),并且許多還依賴于標(biāo)準(zhǔn)的 Numeric 和 Math 包。相關(guān)標(biāo)準(zhǔn)的開發(fā)是 VHDL 作者的另一個目標(biāo):即產(chǎn)生一種通用語言并允許開發(fā)可重用的包以涵蓋語言中未內(nèi)置的功能。
VHDL 沒有在語言中定義任何仿真控制或監(jiān)視功能。這些功能取決于工具。
由于缺乏語言定義的仿真控制命令以及 VHDL 的用戶定義類型功能,VHDL 社區(qū)通常依賴交互式 GUI 環(huán)境來調(diào)試設(shè)計問題。
Verilog
Verilog 是一種弱類型和有限類型的語言。它的傳統(tǒng)可以追溯到 C 編程語言和稱為 Hilo 的舊 HDL。
Verilog 中的所有數(shù)據(jù)類型都在語言中預(yù)定義。Verilog 承認所有數(shù)據(jù)類型都有位級表示。支持的數(shù)據(jù)可以在 Verilog 中自由混合。
Verilog 中的仿真語義比 VHDL 中的更加模糊。這種模糊性為設(shè)計人員在應(yīng)用優(yōu)化方面提供了更大的靈活性, 但如果不遵循編碼準(zhǔn)則,它也可能(并且經(jīng)常會)導(dǎo)致競爭條件 。有可能在不同供應(yīng)商的工具上甚至在同一供應(yīng)商工具的不同版本上產(chǎn)生不同結(jié)果的設(shè)計。
與 VHDL 的創(chuàng)建者不同,Verilog 的作者認為他們?yōu)樵O(shè)計人員提供了語言所需的一切。語言的范圍更有限,加上缺乏打包能力,即使不是不可能,也很難開發(fā)語言中尚未包含的可重用功能。
Verilog 在語言中定義了一組基本的仿真控制能力(系統(tǒng)任務(wù))。
由于這些預(yù)定義的系統(tǒng)任務(wù)和缺乏復(fù)雜的數(shù)據(jù)類型,Verilog 用戶經(jīng)常運行批處理或命令行仿真,并通過查看仿真結(jié)果數(shù)據(jù)庫中的波形來調(diào)試設(shè)計問題。
SystemVerilog
SystemVerilog 的父級顯然是 Verilog,但該語言還受益于稱為 Superlog 的專有 Verilog 擴展以及 C 和 C++ 編程語言的特點。
SystemVerilog 通過添加豐富的用戶定義類型系統(tǒng)來擴展 Verilog。它還添加了強類型功能,特別是在用戶定義類型領(lǐng)域。但是,VHDL 中類型檢查的強度仍然超過了 SystemVerilog。而且,為了保持向后兼容性,SystemVerilog 為內(nèi)置的 Verilog 類型保留了弱類型。
由于 SystemVerilog 是一種比 Verilog 更通用的語言,它提供了定義和打包該語言中尚未包含的可重用功能的能力。
SystemVerilog 還增加了針對測試臺開發(fā)、基于斷言的驗證以及接口抽象和封裝的功能。
強類型的優(yōu)點和缺點
強類型的好處是在驗證過程中盡早發(fā)現(xiàn)設(shè)計中的錯誤。在分析/編譯源代碼的過程中有很多都是強類型發(fā)現(xiàn)的問題,在仿真過程中可能會發(fā)現(xiàn)更多問題。
強類型的缺點是性能成本。由于工具必須對源代碼進行檢查,因此編譯速度往往較慢。
當(dāng)啟用運行時檢查時,仿真也會由于檢查開銷而變慢。此外,由于設(shè)計人員在編寫代碼時必須編寫類型轉(zhuǎn)換函數(shù)并插入類型轉(zhuǎn)換或顯式聲明的轉(zhuǎn)換函數(shù),因此設(shè)計人員的工作效率在編寫代碼階段可能會降低。
1,000,000 元的問題是:強類型的好處是否超過成本?
這個問題沒有一個正確答案。一般來說,VHDL 語言設(shè)計者想要一種安全的語言,能夠在流程的早期捕獲盡可能多的錯誤。Verilog 語言設(shè)計者想要一種設(shè)計者可以使用的語言——用來快速編寫模型。SystemVerilog 的設(shè)計者正試圖通過在增強領(lǐng)域提供強類型來提供兩全其美,同時不會顯著影響代碼編寫和建模效率。
語言特征比較
下表顯示了三種 HDL 的逐個特性比較。請注意,紅色字體將 Verilog 2001 功能與 Verilog 1995 功能區(qū)分開來。
總結(jié)
除了上面的語言特性比較之外,這里還有一些需要考慮的最后幾點:
SystemVerilog 是一個新興的標(biāo)準(zhǔn),仍在不斷發(fā)展。SystemVerilog 擁有一系列引人注目的功能,是當(dāng)前 Verilog 用戶可能的遷移路徑。但是目前一些綜合工具支持的還不是支持的特別好~
對于VHDL 用戶,許多SystemVerilog 和Verilog 2001 增強功能已經(jīng)以VHDL 語言提供。還有一項新的 VHDL 增強工作正在進行中,它將為該語言添加測試平臺和擴展的斷言功能(SystemVerilog 將在這兩個領(lǐng)域提供超過 VHDL 2002 的價值)??紤]到更改流程和工具的成本以及培訓(xùn)所需的投資,必須非常慎重地考慮是否放棄 VHDL(應(yīng)該都不會)。
-
硬件
+關(guān)注
關(guān)注
11文章
3357瀏覽量
66353 -
HDL
+關(guān)注
關(guān)注
8文章
327瀏覽量
47418 -
仿真控制
+關(guān)注
關(guān)注
0文章
4瀏覽量
6581
原文標(biāo)題:VHDL、Verilog和SystemVerilog的比較
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論