談到package,用過VHDL的工程師并不陌生。實(shí)際上,SystemVerilog中的package正是從VHDL引入的,以進(jìn)一步增強(qiáng)其在系統(tǒng)級的描述能力。我們來看一下SystemVerilog中package的使用方法與注意事項(xiàng)。 SystemVerilog中的package需要在關(guān)鍵字package和endpackage之間進(jìn)行定義,其包含的內(nèi)容可以是parameter,localparam,const,typedef,task,function,import,export和time unit。當(dāng)然,package中也可以包含一些不可綜合的用于驗(yàn)證的內(nèi)容如class。
我們來看一個具體的例子,如下圖所示代碼片段。代碼第2行通過關(guān)鍵字package表明其描述類別,package之后的top_pkg是package的名字。代碼第5行至第11行以條件編譯的方式結(jié)合typedef定義了數(shù)據(jù)類型。代碼第13行通過typedef enum定義了枚舉類型。代碼第15行到第18行通過typedefstruct定義了結(jié)構(gòu)體。代碼第20行至第22行定義了function。代碼第23行以endpackage確定package結(jié)束。
從可綜合的SystemVerilog代碼風(fēng)格角度而言,需要注意:對于需要定義在package中的常數(shù),應(yīng)采用localparam或const定義,而不要使用parameter定義。此外,結(jié)構(gòu)體應(yīng)定義在package中,而不是以獨(dú)立的.sv文件存在。
當(dāng)需要使用package中的對象時,就需要導(dǎo)入package,如下圖所示代碼片段。代碼第2行通過import導(dǎo)入package。“*”表示導(dǎo)入top_pkg中的所有內(nèi)容。也可以只導(dǎo)入需要使用的package中的某個具體內(nèi)容,例如
import top_pkg::word_t;
如果使用此方法導(dǎo)入用戶定義的枚舉類型時,需要明確導(dǎo)入使用到的枚舉標(biāo)簽,如下所示:
import top_pkg::ADD;
import top_pkg::SUB;
import top_pkg::ABS;
import top_pkg::DIV2;
import package可以放在module聲明之前,如上圖所示代碼第2行的位置,也可以放在端口聲明之前,如下圖所示代碼片段的第4行。兩者的效果是一樣的,即:端口聲明部分和module內(nèi)的語句均可使用導(dǎo)入的package內(nèi)容。
盡管可以使用如下圖所示代碼片段第6行所示方式,但實(shí)際工程中并不建議這么使用,這會導(dǎo)致代碼變得冗長。工程實(shí)踐表明,采用類似于“importtop_pkg::*;”的方式更為方便,也更為明了。
Vivado是支持package的。只需將package單獨(dú)定義在一個后綴為.sv的文件中即可。Vivado會自動將package放在首位進(jìn)行編譯,如下圖所示。
審核編輯:劉清
-
Vivado
+關(guān)注
關(guān)注
19文章
815瀏覽量
66887 -
Verilog語言
+關(guān)注
關(guān)注
0文章
113瀏覽量
8309 -
sub
+關(guān)注
關(guān)注
0文章
13瀏覽量
2274
原文標(biāo)題:說說SystemVerilog的Package
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
防雷元器件的使用方法及使用注意事項(xiàng)
信號發(fā)生器的使用方法及注意事項(xiàng)
大電流發(fā)生器使用方法和注意事項(xiàng)
視頻展臺的典型使用方法/注意事項(xiàng)
額溫計(jì)的使用方法圖解及使用注意事項(xiàng)
PCB承載大電流的操作方法和注意事項(xiàng)
![PCB承載大電流的操作<b class='flag-5'>方法</b>和<b class='flag-5'>注意事項(xiàng)</b>](https://file1.elecfans.com/web2/M00/8D/DE/wKgZomTA5CWAKudhAAE4mfpVa4E580.png)
java中equals()方法的注意事項(xiàng)
射頻電纜組件的使用方法和注意事項(xiàng)
錫膏的使用方法及注意事項(xiàng)
![錫膏的<b class='flag-5'>使用方法</b>及<b class='flag-5'>注意事項(xiàng)</b>](https://file1.elecfans.com/web2/M00/8C/0D/wKgZomSlFJ-AD7O7AACGSoqFaWs471.png)
評論