2-state (two-value) and 4-state (four-value) data types
Types that can have unknown and high-impedance values are called 4-state types. These are logic, reg, integer, and time. The other types do not have unknown values and are called 2-state types, for example, bit and int.
The difference between int and integer is that int is 2-state logic and integer is 4-state logic. 4-state values have additional bits that encode the X and Z states. 2-state data types can simulate faster, take less memory, and are preferred in some design styles.
Signed and unsigned data types
Integer types use integer arithmetic and can be signed or unsigned. This affects the meaning of certain operators such as ‘<’, etc.
int unsigned ui;
int signed si;
The data types byte, shortint, int, integer, and longint default to signed. The data types bit, reg and logic default to unsigned, as do arrays of these types.
Note that the signed keyword is part of Verilog-2001. The unsigned keyword is a reserved keyword in Verilog- 2001, but is not utilized.
Real and shortreal data types
The real data type is from Verilog-2001 and is the same as a C double. The shortreal data type is a SystemVerilog data type and is the same as a C float.
Void data type
The void data type represents non-existent data. This type can be specified as the return type of functions, indicating no return value. This type can also be used for members of tagged unions
Integer data types
SystemVerilog offers several integer data types, representing a hybrid of both Verilog and C data types:
shortint : 2-state SystemVerilog data type, 16 bit signed integer
int : 2-state SystemVerilog data type, 32 bit signed integer
longint : 2-state SystemVerilog data type, 64 bit signed integer
byte : 2-state SystemVerilog data type, 8 bit signed integer or ASCII character
bit : 2-state SystemVerilog data type, user-defined vector size
logic : 4-state SystemVerilog data type, user-defined vector size
reg : 4-state Verilog-2001 data type, user-defined vector size
integer : 4-state Verilog-2001 data type, 32 bit signed integer
time : 4-state Verilog-2001 data type, 64-bit unsigned integer