Verilog 1995 VS Verilog 2001

Verilog-1995 VS Verilog-2001

20013IEEE正式批准了Verilog2001標準(IEEE13642001),與Verilog1995相比主要有如下提升。 編程

1、模塊聲明的擴展

(1)       Verilog2001容許將端口聲明和數據類型聲明放在同一條語句中,例子以下: 數組

2Verilog2001中增長了ANSIC風格的輸入輸出端口聲明,能夠用於moduletaskfunction。例子以下: 併發

3)對於含有parametermodule,例子以下: 編程語言

2、帶有初始化的寄存器類型變量聲明

Verilog2001中容許在聲明變量的同時對其進行初始化賦值,他是在initial語句中的0時刻開始執行。例子以下: 函數

3、敏感表的改進

1)逗號分開敏感列表 工具

在敏感表中的變量能夠用逗號「,」分開,固然,固然or也是能夠的。例子以下: spa

always@(posedge clk,negedge rst)也是能夠的。 命令行

2)組合邏輯的電平敏感@*           //@(*) is also ok 設計

*」表明了邏輯塊中每一個被賦值的變量,例子以下: 3d

4、有符號算數運算的擴展

1net型和reg型能夠聲明爲帶符號的變量

2)函數的返回值能夠是有符號數

3Literal integer numbers能夠定義爲有符號的

 

4)增長算數右移左移(>>>,<<<

操做符「>>>」「<<<」。對於有符號數,執行算術移位操做時,將符號位填補移出的位。例子以下:

5)增長系統函數$signed$unsigned

用於在無符號和有符號數之間的轉換

5、可變向量域的選擇

[<starting_bit>+」:width]從起始位開始遞增,位寬爲width

[<starting_bit>」:width]從起始位開始遞減,位寬爲width

其中,起始位能夠是變量,但位寬必須是整數。所以能夠用可變域選擇,用循環語句選取一個很長的向量全部位。

6、多維數組的創建

Verilog1995中只容許對regintegertime創建一維的數組,經常使用於RAM,ROM的建模。Verilog2001中能夠對netvariable創建多維數組。

7、多維數組的賦值

Verilog1995不容許直接訪問矩陣字的某一位或某幾位,必須將整個矩陣字複製到另外一個暫存變量中,從暫存中訪問。

Verilog2001能夠直接訪問矩陣的某一維或某幾位。

8、乘方運算符

增長乘方運算(power operate),運算符是**,若是其中有一個操做數是real類型的,返回值將是real類型。兩個操做數都是integer類型,返回纔是integer類型。

9、自動(可重入)任務和自動(遞歸)函數

1)可重入任務

任務本質上是靜態的,同時併發執行的多個任務共享存儲區。當某個任務在模塊中的多個地方被同時調用,則這兩個任務對同一塊地址空間進行操做,結果多是錯誤的。Verilog2001中增長了關鍵字automatic,內存空間是動態分配的,使任務成爲可重入的。

 

2)遞歸函數

10、自動寬度擴展

Verilog1995中對於不指定位數的位寬超過32爲的總線賦高阻時,只會對低32位賦值爲高阻,高位將爲0

Verilog2001將高阻或不定態賦值給未指定位寬的信號時,能夠自動擴展到整個位寬範圍。

11、常數函數

Verilog語法規定必須使用數值或常數表達式來定義向量的位寬和陣列的規模。

Verilog1995中要求上述表達式必須爲算數操做。

Verilog2001中可使用函數,成爲常數函數。他的數值在編譯或詳細描述中被肯定。

12、增長了文件輸入輸出操做

Verilog1995中在文件的輸入/輸出操做方面功能很是有限,文件操做常常藉助於Verilog PLI(編程語言接口),經過與C語言的文件輸入/輸出庫的訪問來處理。而且規定同時打開的I/O文件數不能多於31個。

Verilog2001增長了新的系統任務和函數,而且規定同時打開的文件數目爲230個。

13、顯式的參數重載

Verilog1995中參數重載有兩種方法。一種是defparam語句顯式的從新定義。第二種是在模塊實體調用時使用#符號隱式的從新定義參數。

Verilog2001中增長了一種新的方法,成爲顯式參數重載。

14generate語句

Verilog2001新增了語句「generate」,經過generate循環,能夠產生一個對象(好比一個元件或一個模塊等)的多個例化,爲可變尺度的設計提供了方便。

generate語句通常在循環和條件語句中使用。Verilog2001增長了四個關鍵字generateendgenerategenvarlocalparam,其中genvar是一個新的數據類型,用在generate循環中的標尺變量必須定義爲genvar型數據。

15register變爲variable

1998年的Verilog一來,register一直用來描述一種變量的類型,這經常給初學者帶來困擾,誤認爲register和硬件中的寄存器一致。在Verilog2001參考手冊中將register變爲variable

16、對條件編譯的改進

Verilog1995中支持`ifdef`else`endif`undef進行條件編譯,Verilog2001中增長了`ifndef`elseif

17、文件和行編譯顯示

Verilog須要不斷的跟蹤源代碼的行號和文件名,可編程語言接口(PLII)能夠取得並利用行號和源文件的信息,以標記運行是的錯誤。但若是Verilog代碼通過其餘工具的處理,源碼的行號和文件名可能丟失。故在Verilog2001中增長了`line,用來標定源碼的行號和文件名。

18、屬

隨着仿真器以外的其餘工具把Verilog做爲設計輸入,這些工具須要Verilog語言可以加入跟指定工具備關的信息和命令。

Verilog沒有定義標準的屬性,屬性的名字和數值由工具廠商或其餘標準來定義。目前尚無指定的標準。

19、設計管理——Verilog配置

Verilog1995標準將設計管理工做交給軟件來承擔,但各仿真工具的設計管理方法各不相同,不利於設計的共享。爲了更好地在設計人員之間共享Verilog設計,而且提升某個特定仿真的可重用性,Verilog‐‐2001標準增長了對設計內容的配置這部份內容。

增長關鍵字configendconfigdesigninstancecelluseliblist

配置塊位於模塊定義以外,能夠指定每個Verilog模塊的版本及其源代碼的位置。Verilog程序設計從頂層模塊開始執行,找到在頂層模塊中實例化的模塊,進而肯定其源代碼的位置,照此順序,直到肯定整個設計的源程序。

configcfg4                                                ///給配置塊命名

designrtlLib.top                                  ///指定從哪裏找到頂層模塊

defaultliblistrtlLibgateLib;                   ///設置查找實例模塊的默認順序

instancetest.dut.a2liblistggateLib;         //明確指定模塊實例使用哪個庫

endconfig

20、系統任務和系統函數的擴展

Verilog2001增長了17個文件輸入/輸出任務:$fgetc$ungetc$fflush$ferror$fgets$rewind$swrite$swriteb$swriteo$swriteh$sformat$sdf_annotate$ffscanf$sscanf$fread$ftell$fseek

增長了兩個轉換函數:$signed$unsigned

增長了命令行輸入任務:$test$plusargs$value$plusargs

21VCD文件的擴展

VCD文件用於存儲選定的變量數值變化的信息,信息的記錄由VCD系統任務來完成。

Verilog1995標準中只有一種類型的VCD文件,即四狀態類型,這種類型的VCD文件只記錄變量在01xz狀態之間的變化,並且不記錄信號強度信息。而在Verilog2001標準中增長了一種擴展類型的VCD文件,可以記錄變量在全部狀態之間的轉換,同時記錄信號強度信息。

擴展型VCD系統任務$dumpports$dumpportsoff$dumpportson$dumpportsall$dumpportslimit$dumpportsflush$vcdclose

22、其餘

1)提升了ASIC/FPGA應用的正確性

檢測脈衝的傳播錯誤

負脈衝檢測

新的時序約束檢查

負時序約束

提升了對SDF(標準延時文件)的支持

2)編程語言接口PLI方面有所改進



相關文章
相關標籤/搜索