-- -- -- DISCLAIMER -- -- This code is the sole property of the Institute for Technology -- Development (ITD), Jackson, Mississippi, and is distributed for -- the purpose of providing examples of VHDL models written to -- modeling standards. This code may not be used for commercial -- purposes, and may not be redistributed without permission from -- the Institute for Technology Development. ITD assumes no -- responsibility for errors, omissions, uses made, or decisions -- based on its use. No warranties, expressed or implied, are given. -- -- ------------------------------------------------------------------ package BASICDEFS is ----------------------------------------------------------------------- -- -- The following is a preliminary definition of the basic logic system -- and associated operators/functions used for the EIA VHDL Model -- Commercial Component Specification. -- -- Created by Dave Cantwell/Hughes (714-670-4677) -- & Len Finegold/General Dynamics -- -- COPYRIGHT C Hughes Aircraft Co. 1989 -- Created 1/25/90 -- Version 0.1 ----------------------------------------------------------------------- --- TYPE logic_mv_base is ('U', 'X', '0', '1', 'Z', 'L', 'H', 'W'); TYPE logic_vector is array (natural range <>) of logic_mv_base ; SUBTYPE logic_mv is logic_mv_base ; TYPE logic_mv_vector is array (natural range <>) of logic_mv ; TYPE logic_mv_table is array (logic_mv, logic_mv) of logic_mv; -- Logic conversion functions --- ------------------------------------------------------------------------ -- SCALAR FUNCTIONS ------------------------------------------------------------------------ -- OVERLOADED OPERATORS -- FUNCTION "and" ( i1,i2 : logic_mv ) RETURN logic_mv ; FUNCTION "nand" ( i1,i2 : logic_mv ) RETURN logic_mv ; FUNCTION "or" ( i1,i2 : logic_mv ) RETURN logic_mv ; FUNCTION "nor" ( i1,i2 : logic_mv ) RETURN logic_mv ; FUNCTION "xor" ( i1,i2 : logic_mv ) RETURN logic_mv ; FUNCTION "not" ( i1 : logic_mv ) RETURN logic_mv ; -- NOT A PREDEFINED OPERATOR, THUS IS NOT OVERLOADED. FUNCTION xnor ( i1,i2 : logic_mv ) RETURN logic_mv ; -- ------------------------------------------------------------------------ -- VECTORIZED FUNCTIONS ------------------------------------------------------------------------ -- FUNCTION "and" ( i1,i2 : logic_mv_vector ) RETURN logic_mv_vector ; FUNCTION "nand" ( i1,i2 : logic_mv_vector ) RETURN logic_mv_vector ; FUNCTION "or" ( i1,i2 : logic_mv_vector ) RETURN logic_mv_vector ; FUNCTION "nor" ( i1,i2 : logic_mv_vector ) RETURN logic_mv_vector ; FUNCTION "xor" ( i1,i2 : logic_mv_vector ) RETURN logic_mv_vector ; FUNCTION "not" ( i1 : logic_mv_vector ) RETURN logic_mv_vector ; -- NOT A PREDEFINED OPERATOR, THUS IS NOT OVERLOADED. FUNCTION xnor ( i1,i2 : logic_mv_vector ) RETURN logic_mv_vector ; -- ------------------------------------------------------------------------ -- Comparison Operators ------------------------------------------------------------------------ FUNCTION "=" (i1, i2: logic_mv) RETURN logic_mv ; FUNCTION "/=" (i1, i2: logic_mv) RETURN logic_mv ; FUNCTION "=" (i1,i2 : logic_mv_vector ) RETURN logic_mv ; FUNCTION "/=" (i1,i2 : logic_mv_vector ) RETURN logic_mv ; -- ------------------------------------------------------------------------ --- Bus Resolution Functions ------------------------------------------------------------------------ -- The following function shall be used for standard components FUNCTION Wired_Outputs (signals : logic_mv_vector) RETURN logic_mv_base ; -- The following functions shall be used for on chip development ONLY ----------------------------------------------------------------------- -- Miscellaneous Function(s) ----------------------------------------------------------------------- -- Function to translate H, L, or Z on inputs to 1, 0 or X respectively. -- Example usage: In a RAM model, without this function, a HIGH or LOW -- state would be stored internally from the bus and subsequently be -- erroneously driven onto the bus during a read operation. -- FUNCTION Filter (input : logic_mv) RETURN logic_mv ; -- ----------------------------------------------------------------------- -- Function to translate H or L on inputs to 1 or 0 respectively. -- Example usage: In a flip-flop model, this function can be used to treat -- H and L on the input as 1 and 0. -- FUNCTION Filter2 (input : logic_mv) RETURN logic_mv ; -- FUNCTION MaxTime (a, b: time) RETURN time; FUNCTION MinTime (a, b: time) RETURN time; ----------------------------------------------------------------------- -- Signal transitions and relationships ----------------------------------------------------------------------- -- ---------------------------------------------------------------- -- SIGNAL DETECTION FUNCTIONS ---------------------------------------------------------------- FUNCTION negedge (signal ck :logic_mv) RETURN boolean ; FUNCTION posedge (signal ck :logic_mv) RETURN boolean ; FUNCTION edge (signal ck :logic_mv) RETURN boolean ; FUNCTION bit_unknown (v1 : logic_mv) RETURN boolean ; ---------------------------------------------------------------- -- TYPE CONVERSION FUNCTIONS ---------------------------------------------------------------- FUNCTION int_to_bitvector (int, length:natural) RETURN logic_mv_vector ; FUNCTION bitvector_to_int (bits: logic_mv_vector) RETURN natural ; FUNCTION unknown_on_bus (bus_vector : logic_mv_vector) RETURN boolean ; ---------------------------------------------------------------- -- -- function name: F_delay -- parameters: -- in newlv -- new logic value -- in delay01 -- time -- 0->1 delay value -- in delay10 -- time -- 1->0 delay value -- -- returns: The appropriate delay to be used, given the new value -- and the 0-1 and 1-0 delays. -- -- purpose: Compute the appropriate delay to be used for a transition -- on an output port. -- ------------------------------------------------------------------------------ FUNCTION F_delay(newlv : IN logic_mv; delay01 : IN time; delay10 : IN time) RETURN time; FUNCTION tp_delay( newlv : in logic_mv; delay01 : in time; delay10 : in time) RETURN time; ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- type declarations for resolved signals SUBTYPE logic_mv_resolve is Wired_Outputs logic_mv ; TYPE logic_mv_vector_resolve is array (natural range <>) of logic_mv_resolve ; ------------------------------------------------------------------------------ FUNCTION enum_to_char (enumval : in logic_mv ) return character; end BASICDEFS; ------------------------------------------------------------------------------ ------------------------------------------------------------------------------