用户自定义类型

1. 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>;

1.1 在类中的 Typedef#

Typedef 在类中的主要用途是有时我们在声明类本身之前使用类变量。这时候就会导致代码出现一些编译错误。因此,为了避免编译错误,我们可以在类本身的声明之前使用“typedef 类变量”。

语法:

typedef class class_name;

示例

typedef class fruit2;
class fruit1;
fruit2 f;
endclass

class fruit2
fruit1 f;
endclass

1.2 在结构体中的 Typedef#

如果没有 Typedef,Structure 在大型复杂测试平台中可能会出现一些编译错误。 Typedef 还提供了使声明变得更加容易的功能。

语法:

typedef struct {
datatype name;
datatype name;
}structure_name;

示例

typedef struct{
string name;
byte id;
longint age;
} personal_ details_s;

1.3 在枚举中的 Typedef#

Typedef 用于当我们需要多个变量共享相同的枚举值时。如果没有 Typedef,我们将得到语法错误。枚举数据类型为所有值创建新变量。

语法:

typedef enum {
values
} <type_ name>;

示例

typedef enum {
RORITO,
FLAIRFX,
REYNOLDS
}pen_e;