В SystemVerilog можно создавать свои типы данных:

  1. Typedef
  2. Enum
  3. Union
  4. Struct
  5. Class

Типы данных typedef

Новый тип данных можно создать с помощью typedef:

typedef int MyIntType;

Объявление переменных этого типа:

MyIntType a, b;

Пользовательский тип можно использовать до его определения:

typedef foo;
foo f = 1;
typedef int foo;
Переменные типа enum должны быть определены до использования

Для идентификаторов пользовательских типов данных справедливы те же правила, что и для обычных идентификаторов данных, за исключением иерархического обращения. Обращение к идентификатору типа, определенного в интерфейсе, возможно только после его локального переопределения:

interface intf_i;
    typedef int data_t;
endinterface
module sub(intf_i p)
    typedef p.data_t my_data_t;
     my_data_t data; // ’data’ будет типа int
endmodule

Примеры создания различных пользовательских типов данных:

typedef enum type_declaration_identifier;
typedef struct type_declaration_identifier;
typedef union type_declaration_identifier;
typedef class type_declaration_identifier;
typedef type_declaration_identifier;