------------------------------------------------------------------------------ -- -- This package was developed by CAD Language Systems, Inc. as part of an -- effort to define a basis for portable VHDL models. It has been submitted -- to the VHDL Design Exchange Group (VDEG) to be considered as the basis for -- a set of industry-wide, portable modeling conventions. -- -- This package defines a four-valued logic type that can be supported on -- many subset simulators. -- -- HISTORY: -- 11-MAY-89 PJM Updated to reflect May 9-10 VDEG consensus. -- 15-APR-89 WAG Created. -- ------------------------------------------------------------------------------ library VDEG_Portable; -- This library is where the package goes package Types is -- Portable multi-valued logic bit: type Logic4 is ('X', '0', '1', 'Z'); subtype LX01 is Logic4 range 'X' to '1'; -- Portable multi-valued logic bit vector: type Vector4 is array (Natural range <>) of Logic4; -- Logical operations: function "and" (L, R: Logic4) return Logic4; function "nand" (L, R: Logic4) return Logic4; function "or" (L, R: Logic4) return Logic4; function "nor" (L, R: Logic4) return Logic4; function "xor" (L, R: Logic4) return Logic4; function "not" (Value: Logic4) return Logic4; function "and" (L, R: Vector4) return Vector4; function "nand" (L, R: Vector4) return Vector4; function "or" (L, R: Vector4) return Vector4; function "nor" (L, R: Vector4) return Vector4; function "xor" (L, R: Vector4) return Vector4; function "not" (Value: Vector4) return Vector4; -- Comparison operations returning Logic4: function "=" (L, R: Logic4) return Logic4; function "/=" (L, R: Logic4) return Logic4; function "=" (L, R: Vector4) return Logic4; function "/=" (L, R: Vector4) return Logic4; -- Resolution functions for wired signals: function WiredX (V: Vector4) return Logic4; function WiredAnd (V: Vector4) return Logic4; function WiredOr (V: Vector4) return Logic4; -- Definitions for wired scalar signals: subtype DotX is WiredX Logic4; subtype DotAnd is WiredAnd Logic4; subtype DotOr is WiredOr Logic4; -- Definitions for wired vector signals: type BusX is array (Natural range <>) of DotX; type BusAnd is array (Natural range <>) of DotAnd; type BusOr is array (Natural range <>) of DotOr; -- Definitions for driving various types: function Drive (V: Logic4) return Logic4; function Drive (V: Vector4) return Vector4; function Drive (V: Vector4) return BusX; function Drive (V: Vector4) return BusAnd; function Drive (V: Vector4) return BusOr; -- Functions for sensing various types: function Sense (V: Logic4; vZ: LX01) return Logic4; function Sense (V: Vector4; vZ: LX01) return Vector4; function Sense (V: BusX; vZ: LX01) return Vector4; function Sense (V: BusAnd; vZ: LX01) return Vector4; function Sense (V: BusOr; vZ: LX01) return Vector4; -- Portable matrix type for memory: type Matrix4 is array (Natural range <>, Natural range <>) of Logic4; end Types;