第三章:systemverilog文本值和數據類型


1.增強的文本值

2.改進的`define文本替換

3.時間值

4.新的變量類型

5.有符號和無符號類型

6.靜態和動態變量(***)

7.類型轉換

8.常數

增強的文本值(文本賦值增強)


 

主要是:位擴展更加方便

verilog :

data = 64'hFFFF_FFFF;

data = 'bz;

data  = 'bx;

systemverilog:

data = '1;//無論data的size更改與否

data = 'z;

data = 'x;//可以不用寫明進制(d/b/h/o)

`define 增強


 

systemverilog 可以實現宏參數替換。

systemverilog允許字符串內的宏變量替換,但verilog不可以。

eg:

`define print(v) $display("variable v = %h",v)

verilog中預編譯后:

  `print(data) ;// $display("variable v = %h",data);

systemverilog中預編譯后:

   `print(data);//$display("variable data = %h",data);

systemverilog變量


1.對象類型和數據類型

2.四態變量(logic/reg)

3.兩態變量(bit/byte/int/shortint/longint)

4.顯示/隱示變量或線網類型

5.綜合指導

對象類型和數據類型

對象類型指明信號是var / wire

數據類型指明信號是四態/兩態

顯示/隱示var和wire

申明語句中,數據類型前沒有顯示指定對象類型(var/wire)就為隱示變量。

var logic[7:0] busA;

var bit[31:0] b;

注意四態變量轉為兩態變量x/z被認定為0;

靜態變量和動態變量


 

1.systemverilog 缺省存儲方式與verilog兼容,在module/begin..end/fork..join/非自動function和task中,默認存儲為static方式。如果task/fucntion被申明automaitc,則缺省存儲方式為自動的。

2.module級所有的變量都是靜態的,不可以顯示申明為static/automatic.

強制類型轉換


 

verilog 是弱語言,可以把一個數據類型值賦給另一個數據類型的var/wire.

強制類型轉換不同,可以發生在表達式中。

使用強制類型轉換操作符

1.數據類型轉換 <type>'(<expression>)

2.數據寬度轉換 <size>'(<expression>)

3.符號類型轉換 <sign>'(<expression>)

使用系統函數

$cast(dest_var,source_exp);  //可以作為函數/任務調用

常數


 

verilog 有 : parameter / specparam /localparam

systemverilog 增加了const

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM