第三章: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

原文地址:https://www.cnblogs.com/chip/p/4392074.html