SystemVerilog学习笔记(四):用户自定义类型
Typedef
Typedef 用于根据较长的数据类型规范创建新的标识符。它类似于alias命令。
Typedef 主要用于 System Verilog 中的复杂测试平台,因为它用代码中的标识符替换了较长的数据类型,如 int(unsigned longint,signed Shortint)、byte、bit[7:0]、logic[7:0]。
Typedef 在类、结构和枚举中使用,使数据类型声明更容易。
语法:
typedef <base_type> <size> <type_name>;
在类中的 Typedef
Typedef 在类中的主要用途:有时我们在声明类本身之前使用类变量。这时候就会导致代码出现一些编译错误。因此,为了避免编译错误,我们可以在类本身的声明之前使用“typedef 类变量”。
语法:
typedef class class_name;
示例
typedef class fruit2;
class fruit1;
fruit2 f;
endclass
class fruit2
fruit1 f;
endclass
在结构体中的 Typedef
如果没有 Typedef,Structure 在大型复杂测试平台中可能会出现一些编译错误。 Typedef 还提供了使声明变得更加容易的功能。
语法:
typedef struct {
datatype name;
datatype name;
}structure_name;
示例
typedef struct{
string name;
byte id;
longint age;
} personal_ details_s;
在枚举中的 Typedef
Typedef 用于当我们需要多个变量共享相同的枚举值时。如果没有 Typedef,我们将得到语法错误。枚举数据类型为所有值创建新变量。
语法:
typedef enum {
values
} <type_ name>;
示例
typedef enum {
RORITO,
FLAIRFX,
REYNOLDS
}pen_e;