aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/vests/vhdl-93/billowitch/compliant/tc757.vhd
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2013-12-20 04:48:54 +0100
committerTristan Gingold <tgingold@free.fr>2013-12-20 04:48:54 +0100
commit6c3f709174e8e4d5411f851cedb7d84c38d3b04a (patch)
treebd12c79c71a2ee65899a9ade9919ec2045addef8 /testsuite/vests/vhdl-93/billowitch/compliant/tc757.vhd
parentbd4aff0f670351c0652cf24e9b04361dc0e3a01c (diff)
downloadghdl-6c3f709174e8e4d5411f851cedb7d84c38d3b04a.tar.gz
ghdl-6c3f709174e8e4d5411f851cedb7d84c38d3b04a.tar.bz2
ghdl-6c3f709174e8e4d5411f851cedb7d84c38d3b04a.zip
Import vests testsuite
Diffstat (limited to 'testsuite/vests/vhdl-93/billowitch/compliant/tc757.vhd')
-rw-r--r--testsuite/vests/vhdl-93/billowitch/compliant/tc757.vhd382
1 files changed, 382 insertions, 0 deletions
diff --git a/testsuite/vests/vhdl-93/billowitch/compliant/tc757.vhd b/testsuite/vests/vhdl-93/billowitch/compliant/tc757.vhd
new file mode 100644
index 000000000..eb76c0c3f
--- /dev/null
+++ b/testsuite/vests/vhdl-93/billowitch/compliant/tc757.vhd
@@ -0,0 +1,382 @@
+
+-- 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: tc757.vhd,v 1.2 2001-10-26 16:30:00 paw Exp $
+-- $Revision: 1.2 $
+--
+-- ---------------------------------------------------------------------
+
+ENTITY c01s01b01x01p05n02i00757ent 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"
+ );
+END c01s01b01x01p05n02i00757ent;
+
+ARCHITECTURE c01s01b01x01p05n02i00757arch OF c01s01b01x01p05n02i00757ent IS
+ subtype hi_to_low_range is integer range zero to seven;
+
+ 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;
+
+ subtype boolean_vector_st is boolean_vector(zero to fifteen);
+ subtype severity_level_vector_st is severity_level_vector(zero to fifteen);
+ subtype integer_vector_st is integer_vector(zero to fifteen);
+ subtype real_vector_st is real_vector(zero to fifteen);
+ subtype time_vector_st is time_vector(zero to fifteen);
+ subtype natural_vector_st is natural_vector(zero to fifteen);
+ subtype positive_vector_st is positive_vector(zero to fifteen);
+
+ type boolean_cons_vector is array (fifteen downto zero) of boolean;
+ type severity_level_cons_vector is array (fifteen downto zero) of severity_level;
+ type integer_cons_vector is array (fifteen downto zero) of integer;
+ type real_cons_vector is array (fifteen downto zero) of real;
+ type time_cons_vector is array (fifteen downto zero) of time;
+ type natural_cons_vector is array (fifteen downto zero) of natural;
+ type positive_cons_vector is array (fifteen downto zero) of positive;
+
+ type boolean_cons_vectorofvector is array (zero to fifteen) of boolean_cons_vector;
+ type severity_level_cons_vectorofvector is array (zero to fifteen) of severity_level_cons_vector;
+ type integer_cons_vectorofvector is array (zero to fifteen) of integer_cons_vector ;
+ type real_cons_vectorofvector is array (zero to fifteen) of real_cons_vector;
+ type time_cons_vectorofvector is array (zero to fifteen) of time_cons_vector;
+ type natural_cons_vectorofvector is array (zero to fifteen) of natural_cons_vector;
+ type positive_cons_vectorofvector is array (zero to fifteen) of positive_cons_vector;
+ subtype column is integer range one to two;
+ subtype row is integer range one to eight;
+ type s2boolean_cons_vector is array (row,column) of boolean;
+ type s2bit_cons_vector is array (row,column) of bit;
+ type s2char_cons_vector is array (row,column) of character;
+ type s2severity_level_cons_vector is array (row,column) of severity_level;
+ type s2integer_cons_vector is array (row,column) of integer;
+ type s2real_cons_vector is array (row,column) of real;
+ type s2time_cons_vector is array (row,column) of time;
+ type s2natural_cons_vector is array (row,column) of natural;
+ type s2positive_cons_vector is array (row,column) 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(one to seven);
+ k:bit_vector(zero to three);
+ end record;
+
+ type record_array_st is record
+ a:boolean_vector_st;
+ b:severity_level_vector_st;
+ c:integer_vector_st;
+ d:real_vector_st;
+ e:time_vector_st;
+ f:natural_vector_st;
+ g:positive_vector_st;
+ end record;
+
+ type record_cons_array is record
+ a:boolean_cons_vector;
+ b:severity_level_cons_vector;
+ c:integer_cons_vector;
+ d:real_cons_vector;
+ e:time_cons_vector;
+ f:natural_cons_vector;
+ g:positive_cons_vector;
+ end record;
+
+ type record_2cons_array is record
+ a:s2boolean_cons_vector;
+ b:s2bit_cons_vector;
+ c:s2char_cons_vector;
+ d:s2severity_level_cons_vector;
+ e:s2integer_cons_vector;
+ f:s2real_cons_vector;
+ g:s2time_cons_vector;
+ h:s2natural_cons_vector;
+ i:s2positive_cons_vector;
+ end record;
+
+ type record_cons_arrayofarray is record
+ a:boolean_cons_vectorofvector;
+ b:severity_level_cons_vectorofvector;
+ c:integer_cons_vectorofvector;
+ d:real_cons_vectorofvector;
+ e:time_cons_vectorofvector;
+ f:natural_cons_vectorofvector;
+ g:positive_cons_vectorofvector;
+ end record;
+
+ type record_array_new is record
+ a:boolean_vector(zero to fifteen);
+ b:severity_level_vector(zero to fifteen);
+ c:integer_vector(zero to fifteen);
+ d:real_vector(zero to fifteen);
+ e:time_vector(zero to fifteen);
+ f:natural_vector(zero to fifteen);
+ g:positive_vector(zero to fifteen);
+ end record;
+
+ type record_of_records is record
+ a: record_std_package;
+ c: record_cons_array;
+ e: record_2cons_array;
+ g: record_cons_arrayofarray;
+ i: record_array_st;
+ j: record_array_new;
+ end record;
+ subtype boolean_vector_range is boolean_vector(hi_to_low_range);
+ subtype severity_level_vector_range is severity_level_vector(hi_to_low_range);
+ subtype integer_vector_range is integer_vector(hi_to_low_range);
+ subtype real_vector_range is real_vector(hi_to_low_range);
+ subtype time_vector_range is time_vector(hi_to_low_range);
+ subtype natural_vector_range is natural_vector(hi_to_low_range);
+ subtype positive_vector_range is positive_vector(hi_to_low_range);
+
+ type array_rec_std is array (integer range <>) of record_std_package;
+ type array_rec_cons is array (integer range <>) of record_cons_array;
+ type array_rec_2cons is array (integer range <>) of record_2cons_array;
+ type array_rec_rec is array (integer range <>) of record_of_records;
+
+ subtype array_rec_std_st is array_rec_std (hi_to_low_range);
+ subtype array_rec_cons_st is array_rec_cons (hi_to_low_range);
+ subtype array_rec_2cons_st is array_rec_2cons (hi_to_low_range);
+ subtype array_rec_rec_st is array_rec_rec (hi_to_low_range);
+
+ type record_of_arr_of_record is record
+ a: array_rec_std(zero to seven);
+ b: array_rec_cons(zero to seven);
+ c: array_rec_2cons(zero to seven);
+ d: array_rec_rec(zero to seven);
+ end record;
+
+ type four_value is ('Z','0','1','X'); --enumerated type
+ type four_value_vector is array (natural range <>) of four_value;
+ subtype four_value_vector_range is four_value_vector(hi_to_low_range);
+
+ type current is range -2147483647 to +2147483647
+ units
+ nA;
+ uA = 1000 nA;
+ mA = 1000 uA;
+ A = 1000 mA;
+ end units;
+
+ type current_vector is array (natural range <>) of current;
+ subtype current_vector_range is current_vector(hi_to_low_range);
+
+
+ type resistance is range -2147483647 to +2147483647
+ units
+ uOhm;
+ mOhm = 1000 uOhm;
+ Ohm = 1000 mOhm;
+ KOhm = 1000 Ohm;
+ end units;
+
+ type resistance_vector is array (natural range <>) of resistance;
+ subtype resistance_vector_range is resistance_vector(hi_to_low_range);
+-- function resolution14(i:in four_value_vector) return four_value; --bus resolution
+-- subtype four_value_state is resolution14 four_value; --function type
+ type four_value_map is array(four_value) of boolean;
+ subtype binary is four_value range '0' to '1';
+ type byte is array(zero to seven) of bit;
+ subtype word is bit_vector(zero to fifteen); --constrained array
+ constant size :integer := seven;
+ type primary_memory is array(zero to size) of word; --array of an array
+ type primary_memory_module is --record with field
+ record --as an array
+ enable:binary;
+ memory_number:primary_memory;
+ end record;
+ type whole_memory is array(0 to size) of primary_memory_module; --array of a complex record
+ subtype delay is integer range one to 10;
+
+
+ constant C12 : boolean_vector := (C1,false);
+ constant C13 : severity_level_vector := (C4,error);
+ constant C14 : integer_vector := (one,two,three,four);
+ constant C15 : real_vector := (1.0,2.0,C6,4.0);
+ constant C16 : time_vector := (1 ns, 2 ns,C7, 4 ns);
+ constant C17 : natural_vector := (one,2,3,4);
+ constant C18 : positive_vector := (one,2,3,4);
+ constant C19 : boolean_cons_vector := (others => C1);
+ constant C20 : severity_level_cons_vector := (others => C4);
+ constant C21 : integer_cons_vector := (others => C5);
+ constant C22 : real_cons_vector := (others => C6);
+ constant C23 : time_cons_vector := (others => C7);
+ constant C24 : natural_cons_vector := (others => C8);
+ constant C25 : positive_cons_vector := (others => C9);
+ constant C26 : boolean_cons_vectorofvector := (others => (others => C1));
+ constant C27 : severity_level_cons_vectorofvector := (others => (others => C4));
+ constant C28 : integer_cons_vectorofvector := (others => (others => C5));
+ constant C29 : real_cons_vectorofvector := (others => (others => C6));
+ constant C30 : time_cons_vectorofvector := (others => (others => C7));
+ constant C31 : natural_cons_vectorofvector := (others => (others => C8));
+ constant C32 : positive_cons_vectorofvector := (others => (others => C9));
+
+BEGIN
+ assert (hi_to_low_range'left = 0) report "generic for left bound of hi_to_low_range not working" severity failure;
+ assert (hi_to_low_range'right = 7) report "generic for right bound of hi_to_low_range not working" severity failure;
+ assert (row'left = 1) report "generic constrained for left bound of row not working" severity failure;
+ assert (row'right = 8) report "generic constrained for right bound of row not working" severity failure;
+ assert (column'left = 1) report "generic constrained for left bound of column not working" severity failure;
+ assert (column'right = 2) report "generic constrained for right bound of column not working" severity failure;
+ assert (boolean_cons_vector'left = 15) report "generic constrained for left bound of array not working" severity failure;
+ assert (severity_level_cons_vector'left = 15) report "generic constrained for left bound of array not working" severity failure;
+ assert (integer_cons_vector'left = 15) report "generic constrained for left bound of array not working" severity failure;
+ assert (real_cons_vector'left = 15) report "generic constrained for left bound of array not working" severity failure;
+ assert (time_cons_vector'left = 15) report "generic constrained for left bound of array not working" severity failure;
+ assert (natural_cons_vector'left = 15) report "generic constrained for left bound of array not working" severity failure;
+ assert (positive_cons_vector'left = 15) report "generic constrained for left bound of array not working" severity failure;
+ assert (boolean_cons_vector'right = 0) report "generic constrained for right bound of array not working" severity failure;
+ assert (severity_level_cons_vector'right = 0) report "generic constrained for right bound of array not working" severity failure;
+ assert (integer_cons_vector'right = 0) report "generic constrained for right bound of array not working" severity failure;
+ assert (real_cons_vector'right = 0) report "generic constrained for right bound of array not working" severity failure;
+ assert (time_cons_vector'right = 0) report "generic constrained for right bound of array not working" severity failure;
+ assert (natural_cons_vector'right = 0) report "generic constrained for right bound of array not working" severity failure;
+ assert (positive_cons_vector'right = 0) report "generic constrained for right bound of array not working" severity failure;
+ assert (boolean_cons_vectorofvector'left = 0) report "generic constrained for left bound of array not working" severity failure;
+ assert (severity_level_cons_vectorofvector'left = 0) report "generic constrained for left bound of array not working" severity failure;
+ assert (integer_cons_vectorofvector'left = 0) report "generic constrained for left bound of array not working" severity failure;
+ assert (real_cons_vectorofvector'left = 0) report "generic constrained for left bound of array not working" severity failure;
+ assert (time_cons_vectorofvector'left = 0) report "generic constrained for left bound of array not working" severity failure;
+ assert (natural_cons_vectorofvector'left = 0) report "generic constrained for left bound of array not working" severity failure;
+ assert (positive_cons_vectorofvector'left = 0) report "generic constrained for left bound of array not working" severity failure;
+ assert (boolean_cons_vectorofvector'right = 15) report "generic constrained for right bound of array not working" severity failure;
+ assert (severity_level_cons_vectorofvector'right = 15) report "generic constrained for right bound of array not working" severity failure;
+ assert (integer_cons_vectorofvector'right = 15) report "generic constrained for right bound of array not working" severity failure;
+ assert (real_cons_vectorofvector'right = 15) report "generic constrained for right bound of array not working" severity failure;
+ assert (time_cons_vectorofvector'right = 15) report "generic constrained for right bound of array not working" severity failure;
+ assert (natural_cons_vectorofvector'right = 15) report "generic constrained for right bound of array not working" severity failure;
+ assert (positive_cons_vectorofvector'right = 15) report "generic constrained for right bound of array not working" severity failure;
+
+ TESTING: PROCESS
+ BEGIN
+
+ assert NOT( (hi_to_low_range'left = 0) and
+ (hi_to_low_range'right = 7) and
+ (row'left = 1) and
+ (row'right = 8) and
+ (column'left = 1) and
+ (column'right = 2) and
+ (boolean_cons_vector'left = 15) and
+ (severity_level_cons_vector'left = 15) and
+ (integer_cons_vector'left = 15) and
+ (real_cons_vector'left = 15) and
+ (time_cons_vector'left = 15) and
+ (natural_cons_vector'left = 15) and
+ (positive_cons_vector'left = 15) and
+ (boolean_cons_vector'right = 0) and
+ (severity_level_cons_vector'right = 0) and
+ (integer_cons_vector'right = 0) and
+ (real_cons_vector'right = 0) and
+ (time_cons_vector'right = 0) and
+ (natural_cons_vector'right = 0) and
+ (positive_cons_vector'right = 0) and
+ (boolean_cons_vectorofvector'left = 0) and
+ (severity_level_cons_vectorofvector'left = 0) and
+ (integer_cons_vectorofvector'left = 0) and
+ (real_cons_vectorofvector'left = 0) and
+ (time_cons_vectorofvector'left = 0) and
+ (natural_cons_vectorofvector'left = 0) and
+ (positive_cons_vectorofvector'left = 0) and
+ (boolean_cons_vectorofvector'right = 15) and
+ (severity_level_cons_vectorofvector'right = 15) and
+ (integer_cons_vectorofvector'right = 15) and
+ (real_cons_vectorofvector'right = 15) and
+ (time_cons_vectorofvector'right = 15) and
+ (natural_cons_vectorofvector'right = 15) and
+ (positive_cons_vectorofvector'right = 15) )
+ report "***PASSED TEST: c01s01b01x01p05n02i00757"
+ severity NOTE;
+ assert ( (hi_to_low_range'left = 0) and
+ (hi_to_low_range'right = 7) and
+ (row'left = 1) and
+ (row'right = 8) and
+ (column'left = 1) and
+ (column'right = 2) and
+ (boolean_cons_vector'left = 15) and
+ (severity_level_cons_vector'left = 15) and
+ (integer_cons_vector'left = 15) and
+ (real_cons_vector'left = 15) and
+ (time_cons_vector'left = 15) and
+ (natural_cons_vector'left = 15) and
+ (positive_cons_vector'left = 15) and
+ (boolean_cons_vector'right = 0) and
+ (severity_level_cons_vector'right = 0) and
+ (integer_cons_vector'right = 0) and
+ (real_cons_vector'right = 0) and
+ (time_cons_vector'right = 0) and
+ (natural_cons_vector'right = 0) and
+ (positive_cons_vector'right = 0) and
+ (boolean_cons_vectorofvector'left = 0) and
+ (severity_level_cons_vectorofvector'left = 0) and
+ (integer_cons_vectorofvector'left = 0) and
+ (real_cons_vectorofvector'left = 0) and
+ (time_cons_vectorofvector'left = 0) and
+ (natural_cons_vectorofvector'left = 0) and
+ (positive_cons_vectorofvector'left = 0) and
+ (boolean_cons_vectorofvector'right = 15) and
+ (severity_level_cons_vectorofvector'right = 15) and
+ (integer_cons_vectorofvector'right = 15) and
+ (real_cons_vectorofvector'right = 15) and
+ (time_cons_vectorofvector'right = 15) and
+ (natural_cons_vectorofvector'right = 15) and
+ (positive_cons_vectorofvector'right = 15) )
+ report "***FAILED TEST: c01s01b01x01p05n02i00757 - Generic can be used to specify the size of ports."
+ severity ERROR;
+ wait;
+ END PROCESS TESTING;
+
+END c01s01b01x01p05n02i00757arch;