typedef

发布时间 2023-07-18 11:26:25作者: 老头去打猎

typedef: 用户自定义类型
通常与 struct 或 enum 联用

  1. 与 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 节省空间。

  2. 与 enum 联用
    typedef enum {
    RGB888,
    RGB101010,
    RGB565,
    YUV444,
    YUV420
    } cs_mode_e
    //枚举默认类型是 32bit int , 没有赋值的时候,将会是默认从0开始递增,即 RGB888 =0, RGB101010 =1,... YUV420 =4.

  3. 除此之外, typedef 可以定义任何类型,
    typedef class class_0;

    class class_1;
    class_0 cl_0;
    endclass

class class_0;
endclass
一个文件中多个类引用,一般是先定义被调用的类,如果不想先定义被调用的类,sv 又没有类似c 的.h 文件存储类声明,编译时从上到下解析,就会遇到类未定义,sv 就使用tydef 来做声明,先通过编译。