数据类型
按照类型区分
- 分为2类,一类是变量(var),另一类是线网类型(nets)。
- 变量类型可以使用连续赋值语句,也可使用过程赋值语句。
- 线网类型仅能使用连续赋值语句(assign)。
- 必须使用wire类型的场景:遇到多于1个驱动源的时候,或者设计模块端口是双向(inout)时。
按照数据类型区分
- 分为2类,一类是四值逻辑(例如logic。0,1,X,Z),另一类是二值逻辑(0,1)。
- 四值逻辑变量,例如logic或integer等,在仿真开始时默认初值为X。
- 二值逻辑变量,例如bit等,在仿真开始时默认初值为0。
- 在SV中,可以直接使用logic达到通用的存储硬件数据的目的。
- 常见的二值逻辑数据类型包括:
- bit: 1-bit
- byte: 8-bit
- shortint: 16-bit
- int: 32-bit
- longint: 64-bit
- 常见的四值逻辑数据类型包括:
- integer
- logic
- reg
- net-type(e.g. wire和tri)
按照有符号和无符号类型区分
- 有符号类型包括:
integer、byte、shortint、int、longint - 无符号类型包括:
logic、bit、reg、net-type、time
枚举类型
- 枚举类型允许建立相关的但是独立的常量。
- 枚举值默认为从0开始递增的整数,默认是int类型,即32位的二值逻辑数据类型。
- SV不允许在没有进行显示类型转换的情况下把整型变量赋给枚举型变量。
- 赋值操作符"="的左右两侧应该尽量为相同的枚举类型。