我們再從對可綜合代碼的支持角度看看SystemVerilog相比于Verilog的優(yōu)勢。針對硬件設(shè)計,SystemVerilog引入了三種進程always_ff,always_comb和always_latch。always_ff用于描述時序邏輯,對應(yīng)FPGA中的觸發(fā)器,其內(nèi)部應(yīng)使用非阻塞(<=)賦值方式,因為它模擬的正是觸發(fā)器傳輸數(shù)據(jù)的方式。always_comb用于描述純組合邏輯,其內(nèi)部使用阻塞賦值方式,采用了隱式的全變量敏感列表。always_latch用于描述鎖存器。FPGA設(shè)計中一般不建議使用鎖存器。這樣,三種進程對應(yīng)三種場景,無論是設(shè)計者還是工具本身對電路意圖都非常清晰。在Verilog中,只有always,換言之,這三種進程都能通過always實現(xiàn)。例如:
always @(posedge clk) 對應(yīng) always_ff@(posedge clk)
always @* 對應(yīng)always_comb或always_latch
SystemVerilog引入了轉(zhuǎn)換操作符,支持類型轉(zhuǎn)換、位寬轉(zhuǎn)換和符號轉(zhuǎn)換。
類型轉(zhuǎn)換:casting_type’(expression)
位寬轉(zhuǎn)換:size’(expression)
符號轉(zhuǎn)換:signed’(expression) 和unsigned’(expression)
再從端口映射看,SystemVerilog支持Verilog傳統(tǒng)的一一映射方式,如下圖所示代碼第3行。同時也支持自動匹配,如代碼第5行,.clk和.rst會自動與名為clk和rst的信號相連。而更為簡潔的是代碼第7行所示的.*連接方式,這表明所有端口將自動與其名字相同的信號相連。盡管這三種方式都是可綜合的,但從代碼風(fēng)格角度而言,仍然建議采用第3行所示方式。在描述測試文件時,可采用第7行所示方式。
在Verilog中,給一個信號所有位賦值為1,需要采用如下圖所示方式,而SystemVerilog可直接采用下圖代碼第12行所示方式。同時此方式還適用于賦值全0、全X和全Z。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1624文章
21538瀏覽量
600454 -
Verilog
+關(guān)注
關(guān)注
28文章
1335瀏覽量
109844 -
System
+關(guān)注
關(guān)注
0文章
164瀏覽量
36801 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
1992瀏覽量
60976
原文標(biāo)題:SystemVerilog不只是用于驗證(2)
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論