SystemVerilog расширяет существующие типы данных языка Verilog и добавляет новые, что улучшает инкапсуляцию данных и делает код более компактным. Прежде всего, добавлены типы данных языка C. Также добавлены типы данных с 2-мя состояниями (2-state), которые могут принимать значения 0 и 1. Напомню, что до этого в Verilog были только типы данных с 4-мя состояниями (4-state - 0, 1, X и Z). Плюс ко всему, добавлена возможность создания своих типов данных.

Некоторые типы данных языка SystemVerilog представляют собой некий гибрид Verilog и C типов. Использование типов данных с 2-мя состояниями позволяет ускорить симуляцию, занимает меньше памяти, а во многих случаях даже удобнее. Когда переменная с 4-мя состояниями автоматически преобразуется в переменную с 2-мя, значения X и Z будут преобразованы в 0.

Тип Кол-во состояний Знаковый / Беззнаковый Кол-во бит SystemVerilog / Verilog
shortint 2 signed 16 SystemVerilog
int 2 signed 32 SystemVerilog
longint 2 signed 64 SystemVerilog
byte 2 signed 8 SystemVerilog
bit 2 unsigned SystemVerilog
logic 4 unsigned SystemVerilog
reg 4 unsigned Verilog
integer 4 signed >=32 Verilog
real Verilog
shortreal SystemVerilog
realtime Verilog
time 4 unsigned 64 Verilog
Если значения X и Z учитывать не нужно, то для ускорения работы используйте типы int и bit.

Знаковые и беззнаковые типы данных

Целочисленные типы (integer) могут быть знаковыми и беззнаковыми. Типы данных byte, shortint, int, integer и longint по умолчанию являются знаковыми. Типы данных bit, reg и logic - беззнаковые, как и массивы из элементов этих типов. Чтобы использовать знаковые типы, как беззнаковые, необходимо добавить спецификатор unsigned.

int unsigned uvar;
int signed svar;
byte unsigned ubyte;

Можно также привести знаковый тип к беззнаковому, и наоборот.

if (signed'(ubyte)< 150) // ubyte объявлен, как беззнаковый.

Тип данных VOID

Тип данных void, как правило, применяется в функциях, не возвращающих никакого значения. Функция типа void - это аналог Verilog task'a.