-- Copyright (C) 2001 Bill Billowitch. -- Some of the work to develop this test suite was done with Air Force -- support. The Air Force and Bill Billowitch assume no -- responsibilities for this software. -- This file is part of VESTs (Vhdl tESTs). -- VESTs is free software; you can redistribute it and/or modify it -- under the terms of the GNU General Public License as published by the -- Free Software Foundation; either version 2 of the License, or (at -- your option) any later version. -- VESTs is distributed in the hope that it will be useful, but WITHOUT -- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- for more details. -- You should have received a copy of the GNU General Public License -- along with VESTs; if not, write to the Free Software Foundation, -- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -- --------------------------------------------------------------------- -- -- $Id: tc744.vhd,v 1.2 2001-10-26 16:29:59 paw Exp $ -- $Revision: 1.2 $ -- -- --------------------------------------------------------------------- package c01s01b01x01p05n02i00744pkg is type boolean_vector is array (natural range <>) of boolean; type severity_level_vector is array (natural range <>) of severity_level; type integer_vector is array (natural range <>) of integer; type real_vector is array (natural range <>) of real; type time_vector is array (natural range <>) of time; type natural_vector is array (natural range <>) of natural; type positive_vector is array (natural range <>) of positive; type record_std_package is record a: boolean; b: bit; c: character; d: severity_level; e: integer; f: real; g: time; h: natural; i: positive; j: string(1 to 7); k: bit_vector(0 to 3); end record; type array_rec_std is array (integer range <>) of record_std_package; end c01s01b01x01p05n02i00744pkg; use work.c01s01b01x01p05n02i00744pkg.all; ENTITY c01s01b01x01p05n02i00744ent IS generic( zero : integer := 0; one : integer := 1; two : integer := 2; three: integer := 3; four : integer := 4; five : integer := 5; six : integer := 6; seven: integer := 7; eight: integer := 8; nine : integer := 9; fifteen:integer:= 15; C1 : boolean := true; C2 : bit := '1'; C3 : character := 's'; C4 : severity_level:= note; C5 : integer := 3; C6 : real := 3.0; C7 : time := 3 ns; C8 : natural := 1; C9 : positive := 1; C10 : string := "shishir"; C11 : bit_vector := B"0011" ); port( S1 : inout boolean_vector (zero to fifteen); S2 : inout severity_level_vector (zero to fifteen); S3 : inout integer_vector (zero to fifteen); S4 : inout real_vector (zero to fifteen); S5 : inout time_vector (zero to fifteen); S6 : inout natural_vector (zero to fifteen); S7 : inout positive_vector (zero to fifteen); S48: inout array_rec_std (zero to seven) ); END c01s01b01x01p05n02i00744ent; ARCHITECTURE c01s01b01x01p05n02i00744arch OF c01s01b01x01p05n02i00744ent IS BEGIN TESTING: PROCESS variable k : integer := 0; BEGIN for i in S1'range loop S1(i) <= C1; end loop; for i in S2'range loop S2(i) <= C4; end loop; for i in S3'range loop S3(i) <= C5; end loop; for i in S4'range loop S4(i) <= C6; end loop; for i in S5'range loop S5(i) <= C7; end loop; for i in S6'range loop S6(i) <= C8; end loop; for i in S7'range loop S7(i) <= C9; end loop; for i in S48'range loop S48(i) <= (C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11); end loop; wait for 10 ns; for i in zero to 7 loop if (S1(i) /= true) then k := 1; end if; assert S1(i) = true report " boolean_vector(zero to fifteen) error in the left generic value" severity error; if (S2(i) /= note) then k := 1; end if; assert S2(i) = note report " severity_level_vector(zero to fifteen) error in the left generic value" severity error; if (S3(i) /= 3) then k := 1; end if; assert S3(i) = 3 report " integer_vector(zero to fifteen) error in the left generic value" severity error; if (S4(i) /= 3.0) then k := 1; end if; assert S4(i) = 3.0 report " real_vector(zero to fifteen) error in the left generic value" severity error; if (S5(i) /= 3 ns) then k := 1; end if; assert S5(i) = 3 ns report " time_vector (zero to fifteen) error in the left generic value" severity error; if (S6(i) /= 1) then k := 1; end if; assert S6(i) = 1 report " natural_vector(zero to fifteen) error in the left generic value" severity error; if (S7(i) /= 1) then k := 1; end if; assert S7(i) = 1 report " positive_vector(zero to fifteen) error in the left generic value" severity error; if (S48(i) /= (true,'1','s',note,3,3.0,3 ns,1,1,"shishir","0011")) then k := 1; end if; assert S48(i) = (true,'1','s',note,3,3.0,3 ns,1,1,"shishir","0011") report " array_rec_std(zero to seven) error in the left generic value" severity error; end loop; assert NOT( k=0 ) report "***PASSED TEST: c01s01b01x01p05n02i00744" severity NOTE; assert ( k=0 ) report "***FAILED TEST: c01s01b01x01p05n02i00744 - Generic can be used to specify the size of ports." severity ERROR; wait; END PROCESS TESTING; END c01s01b01x01p05n02i00744arch;