IEEE Standard 1164 was released in the late 1980s, and helped to overcome an important limitation of VHDL and its various commercial implementations. These limitations were created by the fact that VHDL, while being rich in data types, did not include a standard type that would allow multiple values (high-impedance, unknown, etc.) to be represented for a wire. These metalogic values are important for accurate simulation, so VHDL simulation vendors were forced to invent their own proprietary data types using syntactically correct, but non-standard, enumerated types.

 

IEEE 1164 replaces these proprietary data types (which include systems having four, seven, or even thirteen unique values) with a standard data type having nine values, as shown below:

 

Value

Description

'U'

Uninitialized

'X'

Unknown

'0'

Logic 0 (driven)

'1'

Logic 1 (driven)

'Z'

High impedance

'W'

Weak 1

'L'

Logic 0 (read)

'H'

Logic 1 (read)

'-'

Don't-care

 

These nine values make it possible to accurately model the behavior of a digital circuit during simulation. For synthesis users, the standard has additional benefits for describing circuits that involve output enables, as well as for specifying don't-care logic that can be used to optimize the combinational logic requirements of a circuit.

 

Advantages of IEEE 1164

There are many compelling reasons to adopt IEEE Standard 1164 for all of your design efforts and to use it as a standard data type for all system interfaces. For simulation purposes, the standard logic data types allow you to apply values other than ‘0’ or ‘1’ as inputs and view the results. This capability could be used, for example, to verify that an input with an unknown (uninitialized or don’t-care) value does not cause the circuit to behave in an unexpected manner. The resolved standard logic data types can be used to model the behavior of multiple drivers in your circuit. You might use these types to model, for example, the behavior of a three-state bus driver.

 

The most important reason to use standard logic data types is portability: if you will be interfacing to other components during simulation (such as those obtained from third party simulation model providers) or moving your design description between different simulation environments, then IEEE 1164 gives you a standard, portable style with which to describe your circuit.