談到SystemVerilog,很多工程師都認(rèn)為SystemVerilog僅僅是一門驗證語言,事實上不只如此。傳統(tǒng)的Verilog和VHDL被稱為HDL(Hardware Description Language,硬件描述語言),而SystemVerilog則是HDVL(Hardware Design and Verification Language,硬件設(shè)計與驗證語言)。由此可見,SystemVerilog也是可以用于硬件設(shè)計的,也是有可綜合部分的。SystemVerilog本身由3部分構(gòu)成:
SV-HDL:用于硬件設(shè)計,可綜合,是可綜合Verilog的加強版;
SV-Assertion:斷言;
SV-HVL:用于硬件驗證,UVM就是利用此發(fā)展而來的驗證方法學(xué)。
下圖顯示了SystemVerilog與Verilog可綜合的部分。
至此我們已經(jīng)澄清了一個事實:SystemVerilog是可以用于硬件設(shè)計的。那么相比于Verilog,SystemVerilog在硬件設(shè)計部分有哪些優(yōu)勢呢?
從數(shù)據(jù)類型的角度看,SystemVerilog引入了4值類型logic,這與VHDL的std_logic是相同的。盡管Verilog中的reg也是4值類型,但在端口聲明時,有的需要聲明為reg,有的需要聲明為wire,內(nèi)部變量定義亦是如此。同時,reg會讓很多初學(xué)者誤以為該變量對應(yīng)一個寄存器(register),而事實上,只要是always進(jìn)程或initial中用到的輸出變量都要定義為reg類型。使用logic則避免了這種歧義。如下圖所示代碼片段,輸入/輸出都定義為logic類型。
SystemVerilog引入了枚舉類型,通過enum定義,也支持用戶定義的枚舉類型,這使得在描述狀態(tài)機時更為方便,如下圖所示代碼片段。同時,SystemVerilog還允許對枚舉變量賦值,這樣就可以根據(jù)場景需要明確指定狀態(tài)機的編碼方式。
SystemVerilog支持結(jié)構(gòu)體,帶來的好處是可以把相關(guān)變量綁定在一起,這樣使用起來更為直觀方便,如下圖所示代碼片段??梢詫φ麄€結(jié)構(gòu)體賦值,如代碼第7行所示,也可以對結(jié)構(gòu)體內(nèi)某個指定變量賦值。struct允許綁定不同類型的數(shù)據(jù),而數(shù)組則要求數(shù)據(jù)類型一致,這是兩者的關(guān)鍵區(qū)別。
同樣地,SystemVerilog也支持用戶定義的結(jié)構(gòu)體,這便于代碼復(fù)用。從代碼風(fēng)格角度看,最好將用戶定義的結(jié)構(gòu)體在package中進(jìn)行聲明,避免因編譯順序而導(dǎo)致的錯誤。
SystemVerilog引入了package,這樣同一個聲明可以被不同模塊使用,避免了重復(fù)定義,如下圖所示代碼片段??梢栽趐ackage中聲明參數(shù)、結(jié)構(gòu)體、函數(shù)等。具體案例可閱讀這篇文章。
說說SystemVerilog的Package
SystemVerilog支持packed array,本質(zhì)上是對vector的增強。如下圖所示代碼片段。b1是位寬為32的向量,b2本質(zhì)上也是位寬為32的向量,只是將b2按位域進(jìn)行分割,如代碼第20行所示。這樣在引用時更為方便,比如獲取b2[1]其實就是獲取b1[15:8]。
對于常規(guī)數(shù)組,也就是unpacked array,SystemVerilog支持類似于C語言的聲明方式,如下圖所示代碼片段。這兩行代碼是等效的,顯然后者聲明更為簡潔。
另外,SystemVerilog還引入了interface,這對于描述互連較多的模塊時更為友好方便,具體案例可閱讀這篇文章。
說說SystemVerilog的Interface
審核編輯:湯梓紅
-
Verilog
+關(guān)注
關(guān)注
29文章
1367瀏覽量
112299 -
System
+關(guān)注
關(guān)注
0文章
166瀏覽量
37831 -
HDL
+關(guān)注
關(guān)注
8文章
330瀏覽量
48062 -
硬件設(shè)計
+關(guān)注
關(guān)注
18文章
433瀏覽量
45206 -
驗證語言
+關(guān)注
關(guān)注
0文章
3瀏覽量
6689
原文標(biāo)題:SystemVerilog不只是用于驗證(1)
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
做FPGA工程師需要掌握SystemVerilog嗎?
SystemC 和SystemVerilog的比較
SystemVerilog設(shè)計語言
基于SystemVerilog語言的驗證方法學(xué)介紹

SystemVerilog的正式驗證和混合驗證
SystemVerilog語言介紹匯總
SystemVerilog對硬件功能如何進(jìn)行建模
IEEE SystemVerilog標(biāo)準(zhǔn):統(tǒng)一的硬件設(shè)計規(guī)范和驗證語言
使用Verilog/SystemVerilog硬件描述語言練習(xí)數(shù)字硬件設(shè)計
FPGA學(xué)習(xí)-SystemVerilog語言簡介
systemverilog:logic比reg更有優(yōu)勢?

systemverilog:logic比reg更有優(yōu)勢

SystemVerilog相比于Verilog的優(yōu)勢

評論