diff options
author | Tristan Gingold | 2013-12-20 04:48:54 +0100 |
---|---|---|
committer | Tristan Gingold | 2013-12-20 04:48:54 +0100 |
commit | 6c3f709174e8e4d5411f851cedb7d84c38d3b04a (patch) | |
tree | bd12c79c71a2ee65899a9ade9919ec2045addef8 /testsuite/vests/vhdl-93/billowitch/compliant/tc2439.vhd | |
parent | bd4aff0f670351c0652cf24e9b04361dc0e3a01c (diff) | |
download | ghdl-6c3f709174e8e4d5411f851cedb7d84c38d3b04a.tar.gz ghdl-6c3f709174e8e4d5411f851cedb7d84c38d3b04a.tar.bz2 ghdl-6c3f709174e8e4d5411f851cedb7d84c38d3b04a.zip |
Import vests testsuite
Diffstat (limited to 'testsuite/vests/vhdl-93/billowitch/compliant/tc2439.vhd')
-rw-r--r-- | testsuite/vests/vhdl-93/billowitch/compliant/tc2439.vhd | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/testsuite/vests/vhdl-93/billowitch/compliant/tc2439.vhd b/testsuite/vests/vhdl-93/billowitch/compliant/tc2439.vhd new file mode 100644 index 0000000..ed47707 --- /dev/null +++ b/testsuite/vests/vhdl-93/billowitch/compliant/tc2439.vhd @@ -0,0 +1,193 @@ + +-- 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: tc2439.vhd,v 1.2 2001-10-26 16:29:48 paw Exp $ +-- $Revision: 1.2 $ +-- +-- --------------------------------------------------------------------- + +ENTITY c07s03b02x02p01n01i02439ent IS +END c07s03b02x02p01n01i02439ent; + +ARCHITECTURE c07s03b02x02p01n01i02439arch OF c07s03b02x02p01n01i02439ent IS + +BEGIN + TESTING: PROCESS + -- Range types are all predefined enumerated types. + type CHAR_ARR is ARRAY( CHARACTER ) of BIT; + type BIT_ARR is ARRAY( BIT ) of BIT; + type BOOL_ARR is ARRAY( BOOLEAN ) of BIT; + type SEV_ARR is ARRAY( SEVERITY_LEVEL ) of BIT; + + -- Declare variables of these types. + variable CHARV : CHAR_ARR; + variable BITV : BIT_ARR; + variable BOOLV : BOOL_ARR; + variable SEVV : SEV_ARR; + variable OKtest: integer := 0; + BEGIN + -- Assign each of these arrays using aggregates. + -- 1. Individual aggregates. + CHARV := CHAR_ARR'( 'a' => '1', 'b' => '0', NUL to '`' => '1', + 'c' to DEL => '1' ); + for C in CHARACTER loop + if (C = 'a') then + assert( CHARV( C ) = '1' ); + if NOT( CHARV( C ) = '1' ) then + OKtest := 1; + end if; + elsif (C = 'b') then + assert( CHARV( C ) = '0' ); + if NOT( CHARV( C ) = '0' ) then + OKtest := 1; + end if; + else + assert( CHARV( C ) = '1' ); + if NOT( CHARV( C ) = '1' ) then + OKtest := 1; + end if; + end if; + end loop; + BITV := BIT_ARR'( '0' => '0', '1' => '1' ); + assert( BITV( '0' ) = '0' ); + if NOT( BITV( '0' ) = '0' ) then + OKtest := 1; + end if; + assert( BITV( '1' ) = '1' ); + if NOT( BITV( '1' ) = '1' ) then + OKtest := 1; + end if; + BOOLV := BOOL_ARR'( FALSE => '0', TRUE => '1' ); + assert( BOOLV( FALSE ) = '0' ); + if NOT( BOOLV( FALSE ) = '0' ) then + OKtest := 1; + end if; + assert( BOOLV( TRUE ) = '1' ); + if NOT( BOOLV( TRUE ) = '1' ) then + OKtest := 1; + end if; + SEVV := SEV_ARR'( NOTE => '0', WARNING => '1', ERROR => '0', + FAILURE => '1' ); + assert( SEVV( NOTE ) = '0' ); + assert( SEVV( WARNING ) = '1' ); + assert( SEVV( ERROR ) = '0' ); + assert( SEVV( FAILURE ) = '1' ); + if NOT((SEVV(NOTE)='0')and(SEVV(WARNING) ='1')and(SEVV(ERROR)='0')and(SEVV(FAILURE)='1')) then + OKtest := 1; + end if; + + -- 2. Groups of aggregates. + CHARV := CHAR_ARR'( 'a' | 'b' => '1', NUL to '`' => '0', + 'c' to DEL => '0' ); + for C in CHARACTER loop + if (C = 'a') then + assert( CHARV( C ) = '1' ); + if NOT( CHARV( C ) = '1' ) then + OKtest := 1; + end if; + elsif (C = 'b') then + assert( CHARV( C ) = '1' ); + if NOT( CHARV( C ) = '1' ) then + OKtest := 1; + end if; + else + assert( CHARV( C ) = '0' ); + if NOT( CHARV( C ) = '0' ) then + OKtest := 1; + end if; + end if; + end loop; + BITV := BIT_ARR'( '0' | '1' => '0' ); + assert( BITV( '0' ) = '0' ); + assert( BITV( '1' ) = '0' ); + if NOT((BITV('0')='0') and (BITV('1')='0')) then + OKtest := 1; + end if; + BOOLV := BOOL_ARR'( FALSE | TRUE => '1' ); + assert( BOOLV( FALSE ) = '1' ); + assert( BOOLV( TRUE ) = '1' ); + if NOT((BOOLV(FALSE)='1') and (BOOLV(TRUE)='1')) then + OKtest := 1; + end if; + SEVV := SEV_ARR'( NOTE | ERROR => '0', WARNING | FAILURE => '1' ); + assert( SEVV( NOTE ) = '0' ); + assert( SEVV( WARNING ) = '1' ); + assert( SEVV( ERROR ) = '0' ); + assert( SEVV( FAILURE ) = '1' ); + if NOT((SEVV(NOTE)='0')and(SEVV(WARNING) ='1')and(SEVV(ERROR)='0')and(SEVV(FAILURE)='1')) then + OKtest := 1; + end if; + + -- 3. Use of 'others' in these aggregates. + CHARV := CHAR_ARR'( 'a' | 'b' => '0', others => '1' ); + for C in CHARACTER loop + if (C = 'a') then + assert( CHARV( C ) = '0' ); + if NOT( CHARV( C ) = '0' ) then + OKtest := 1; + end if; + elsif (C = 'b') then + assert( CHARV( C ) = '0' ); + if NOT( CHARV( C ) = '0' ) then + OKtest := 1; + end if; + else + assert( CHARV( C ) = '1' ); + if NOT( CHARV( C ) = '1' ) then + OKtest := 1; + end if; + end if; + end loop; + BITV := BIT_ARR'( others => '1' ); + assert( BITV( '0' ) = '1' ); + assert( BITV( '1' ) = '1' ); + if NOT(( BITV( '0' ) = '1' )and( BITV( '1' ) = '1' ))then + OKtest := 1; + end if; + BOOLV := BOOL_ARR'( FALSE => '1', others => '0' ); + assert( BOOLV( FALSE ) = '1' ); + assert( BOOLV( TRUE ) = '0' ); + if NOT(( BOOLV( FALSE ) = '1' )and( BOOLV( TRUE ) = '0' ))then + OKtest := 1; + end if; + SEVV := SEV_ARR'( NOTE | ERROR => '0', others => '1' ); + assert( SEVV( NOTE ) = '0' ); + assert( SEVV( WARNING ) = '1' ); + assert( SEVV( ERROR ) = '0' ); + assert( SEVV( FAILURE ) = '1' ); + if NOT((SEVV(NOTE)='0')and(SEVV(WARNING) ='1')and(SEVV(ERROR)='0')and(SEVV(FAILURE)='1')) then + OKtest := 1; + end if; + wait for 5 ns; + assert NOT(OKtest = 0) + report "***PASSED TEST: c07s03b02x02p01n01i02439" + severity NOTE; + assert (OKtest = 0) + report "***FAILED TEST: c07s03b02x02p01n01i02439 - Aggregates with different range types test failed." + severity ERROR; + wait; + END PROCESS TESTING; + +END c07s03b02x02p01n01i02439arch; |