PACKAGE mos_utilities IS
TYPE seven_value IS ('U', 'Z', 'L', 'H', '0', '1', 'X');
TYPE seven_vector IS ARRAY ( INTEGER RANGE <> ) OF seven_value;
TYPE four_value IS ('Z', '0', '1', 'X');
TYPE real_vector IS ARRAY ( INTEGER RANGE <> ) OF REAL;
TYPE integer_vector IS ARRAY ( INTEGER RANGE <> ) OF INTEGER;
TYPE pr IS RANGE 0.0 TO REAL'HIGH;
TYPE pr_vector IS ARRAY (INTEGER RANGE <> ) OF pr;
TYPE delay_data IS ARRAY (1 to 3) OF REAL;
TYPE data_table IS ARRAY (INTEGER RANGE <>,INTEGER RANGE <>) OF REAL;
TYPE seven_value_table IS ARRAY (seven_value,seven_value) OF seven_value;
TYPE seven_to_four_table IS ARRAY (seven_value) OF four_value;
TYPE four_to_seven_table IS ARRAY (four_value) OF seven_value;
FUNCTION wiring (drivers : seven_vector ) RETURN seven_value;
FUNCTION loading (caps : pr_vector) RETURN pr;
FUNCTION quickest (edgespeeds : real_vector) RETURN REAL;
FUNCTION get_delay_data(table : data_table;
inESratio: REAL) RETURN delay_data;
SUBTYPE wired_seven IS wiring seven_value;
SUBTYPE loading_effect IS loading pr;
SUBTYPE quickest_transition IS quickest REAL;
TYPE line IS RECORD
logic : wired_seven;
load : loading_effect;
transition : quickest_transition;
END RECORD;
FUNCTION line_to_fv (in_logic : line) RETURN four_value;
FUNCTION fv_to_line (in_logic : four_value) RETURN line;
CONSTANT n_drive_table : seven_value_table :=
(('U','U','U','U','U','U','U'),
('U','Z','Z','Z','Z','Z','X'),
('U','L','Z','L','Z','L','X'),
('U','H','Z','H','Z','H','X'),
('U','0','Z','0','Z','0','X'),
('U','H','Z','H','Z','H','X'),
('U','X','Z','X','Z','X','X'));
CONSTANT p_drive_table : seven_value_table :=
(('U','U','U','U','U','U','U'),
('U','Z','Z','Z','Z','Z','X'),
('U','Z','L','Z','L','Z','X'),
('U','Z','H','Z','H','Z','X'),
('U','Z','L','Z','L','Z','X'),
('U','Z','1','Z','1','Z','X'),
('U','Z','X','Z','X','Z','X'));
END mos_utilities;
USE utilities.mos_utilities.ALL;
ENTITY n_switch IS
GENERIC (length,width : pr);
PORT (gate,source,drain : INOUT line);
END n_switch;
|