The basic set of types (Chapter 4) and operators (Chapter 5) provided with VHDL are limited when using the language for synthesis. For example, the integer types are limited to 32 bits and they are incapable of bitwise operations such as indexing and logic operations. The basic logic type bit is incapable of modelling metalogical values, particularly the ‘Z’ value needed for modelling tristate buses.
For this reason a standard set of logical and numeric types have been added to the language that are particularly suited to RTL synthesis. They allow numbers of any size to be created (known as arbitrary-precision numeric types) and used to perform arithmetic operations. These types also provide a full set of logical, comparison, masking and other operations – they are intended to be used as universal types.
Initially, when work started on the synthesis types in the early 1990s, only basic logic types, arrays of those types for buses and arbitrary-precision numeric (integer) types were provided. However, the VHDL-2008 standard has extended this to arbitrary-precision fixed-point and floating-point types. Unfortunately, the new fixed- and floating-point types are provided in packages written in VHDL-2008 so are not compatible with most synthesis tools at the time of writing. Fortunately, a compatibility version of the packages are available, written in VHDL-1993 for use with tools that do not support the new standard yet.
These types together are referred ...