typedef
typedef: 用户自定义类型
通常与 struct 或 enum 联用
-
与 struct 联用
typedef struct {
// 2D
bit[31:0] int_val[DIE_NUM][
INST_NUM];
str str_val[DIE_NUM][
INST_NUM];
// 3D
bit[31:0] int_val_3D[DIE_NUM][
INST_NUM][int];
str str_val_3D[DIE_NUM][
INST_NUM][int];
// 4D
bit[31:0] int_val_4D[DIE_NUM][
INST_NUM][int][int];
str str_val_4D[DIE_NUM][
INST_NUM][int][int];
} plusargs_t
plusargs_t plusargs_1 plusargs_2; //例化两个 plusargs
....
plusargs_1.int_val = plusargs_2.int_val + 1;
另外有 struct packed , 见 https://blog.csdn.net/qq_41337361/article/details/122779383 节省空间。 -
与 enum 联用
typedef enum {
RGB888,
RGB101010,
RGB565,
YUV444,
YUV420
} cs_mode_e
//枚举默认类型是 32bit int , 没有赋值的时候,将会是默认从0开始递增,即 RGB888 =0, RGB101010 =1,... YUV420 =4. -
除此之外, typedef 可以定义任何类型,
typedef class class_0;class class_1;
class_0 cl_0;
endclass
class class_0;
endclass
一个文件中多个类引用,一般是先定义被调用的类,如果不想先定义被调用的类,sv 又没有类似c 的.h 文件存储类声明,编译时从上到下解析,就会遇到类未定义,sv 就使用tydef 来做声明,先通过编译。