数字验证学习笔记——SystemVerilog芯片验证2 ——数据类型

1.数据类型

SV中引入一种新的数据类型logic,sv作为侧重于硬件的语言,并不是关心logic对应的逻辑被综合出来是reg还是wire。四值逻辑是属于硬件世界,二值逻辑是属于软件的世界即验证环境。

  1. Logic为四值逻辑:0、1、X(不确定态,不知道是1还是0)、Z(高阻态,没有被驱动)
  2. bit为二值逻辑:0、1

按照4值逻辑和2值逻辑分类

  1. 四值逻辑类型:integer(32)、logic、reg、net-type(wire)
  2. 二值逻辑类型:byte(8)、shortint(16)、int(32)、longint(64)、bit

按照有符号和无符号的分类

1.有符号:byte、shortint、int、longint、integer
2.无符号:bit、logic、reg、net-type(wire)

问题1?
logic [7:0] logic_a=8’b1000_0000; //128
bit [7:0] bit_a=8’b1000_0000; //128
byte byte_a=8’b1000_0000; //-128
问题2?
byte byte_a=8’b1000_0000;
bit [8:0] bit_a;
initial begin
bit_a= byte_a; // 9’b1_1000_0000
bit_a=unsigned’(byte_a); //9’b0_1000_0000
end

2.转化

2.1静态转换

unsigned’(byte_a)
该转化不会对转换值做检查

2.2动态转换

$cast(tgt,src)
该转换会对转换值做检查

静态转换和动态转换都需要操作符和系统函数介入,被称为显式转换
不需要进行一些转换的操作,隐式转换
问题3?
logic [3:0] logic_a = 4’b111x;
bit [2:0] bite_a;
initial begin
bite_a=logic_a; // bite_a=3’b110; 四值逻辑的x、z 转换成二值逻辑只会转换成0
end

你可能感兴趣的:(验证学习,学习)