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