diff options
Diffstat (limited to 'testsuite/vests/vhdl-93/billowitch/compliant/tc1637.vhd')
-rw-r--r-- | testsuite/vests/vhdl-93/billowitch/compliant/tc1637.vhd | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/testsuite/vests/vhdl-93/billowitch/compliant/tc1637.vhd b/testsuite/vests/vhdl-93/billowitch/compliant/tc1637.vhd new file mode 100644 index 0000000..0db0ff8 --- /dev/null +++ b/testsuite/vests/vhdl-93/billowitch/compliant/tc1637.vhd @@ -0,0 +1,238 @@ + +-- 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: tc1637.vhd,v 1.2 2001-10-26 16:29:42 paw Exp $ +-- $Revision: 1.2 $ +-- +-- --------------------------------------------------------------------- + +package c08s12b00x00p05n01i01637pkg is + + -- type declarations + type ENUM is ( E1, E2, E3 ); + type DISTANCE is range 0 to 1E9 + units + -- Base units. + A; -- angstrom + + -- Metric lengths. + nm = 10 A; -- nanometer + um = 1000 nm; -- micrometer (or micron) + mm = 1000 um; -- millimeter + cm = 10 mm; -- centimeter + + -- English lengths. + mil = 254000 A; -- mil + inch = 1000 mil; -- inch + end units; + type ANARRAY is ARRAY( 0 to 1 ) of REAL; + type ARECORD is + RECORD + Field1 : INTEGER; + Field2 : BOOLEAN; + end record; + + -- constant declarations + CONSTANT CONSTI : INTEGER := 47; + CONSTANT CONSTR : REAL := 47.0; + CONSTANT CONSTE : ENUM := E1; + CONSTANT CONSTD : DISTANCE := 1 A; + CONSTANT CONSTT : TIME := 1 hr; + CONSTANT CONSTB : BIT := '1'; + CONSTANT CONSTS : SEVERITY_LEVEL := WARNING; + CONSTANT CONSTBO : BOOLEAN := FALSE; + CONSTANT CONSTA : ANARRAY := ( 3.1415926, 4.0 ); + CONSTANT CONSTRE : ARECORD := ( Field1 => 2, Field2 => TRUE ); + + -- function declarations. + function funcI return INTEGER; + function funcR return REAL; + function funcE return ENUM; + function funcD return DISTANCE; + function funcT return TIME; + function funcB return BIT; + function funcS return SEVERITY_LEVEL; + function funcBO return BOOLEAN; + function funcA return ANARRAY; + function funcRE return ARECORD; + +end c08s12b00x00p05n01i01637pkg; + +package body c08s12b00x00p05n01i01637pkg is + + function funcI return INTEGER is + begin + return( CONSTI ); + end; + + function funcR return REAL is + begin + return( CONSTR ); + end; + + function funcE return ENUM is + begin + return( CONSTE ); + end; + + function funcD return DISTANCE is + begin + return( CONSTD ); + end; + + function funcT return TIME is + begin + return( CONSTT ); + end; + + function funcB return BIT is + begin + return( CONSTB ); + end; + + function funcS return SEVERITY_LEVEL is + begin + return( CONSTS ); + end; + + function funcBO return BOOLEAN is + begin + return( CONSTBO ); + end; + + function funcA return ANARRAY is + begin + return( CONSTA ); + end; + + function funcRE return ARECORD is + begin + return( CONSTRE ); + end; + +end c08s12b00x00p05n01i01637pkg; + +use work.c08s12b00x00p05n01i01637pkg.all; +ENTITY c08s12b00x00p05n01i01637ent IS +END c08s12b00x00p05n01i01637ent; + +ARCHITECTURE c08s12b00x00p05n01i01637arch OF c08s12b00x00p05n01i01637ent IS + +BEGIN + TESTING: PROCESS + -- variable declarations. + VARIABLE VARI : INTEGER; + VARIABLE VARR : REAL; + VARIABLE VARE : ENUM; + VARIABLE VARD : DISTANCE; + VARIABLE VART : TIME; + VARIABLE VARB : BIT; + VARIABLE VARS : SEVERITY_LEVEL; + VARIABLE VARBO : BOOLEAN; + VARIABLE VARA : ANARRAY; + VARIABLE VARRE : ARECORD; + BEGIN + -- Call each function, verify that it returns the proper value. + assert (funcI = CONSTI); + assert (funcR = CONSTR); + assert (funcE = CONSTE); + assert (funcD = CONSTD); + assert (funcT = CONSTT); + assert (funcB = CONSTB); + assert (funcS = CONSTS); + assert (funcBO = CONSTBO); + assert (funcA = CONSTA); + assert (funcRE = CONSTRE); + + -- Assign function values to variables, make sure they're OK. + VARI := funcI; + VARR := funcR; + VARE := funcE; + VARD := funcD; + VART := funcT; + VARB := funcB; + VARS := funcS; + VARBO := funcBO; + VARA := funcA; + VARRE := funcRE; + assert (VARI = CONSTI); + assert (VARR = CONSTR); + assert (VARE = CONSTE); + assert (VARD = CONSTD); + assert (VART = CONSTT); + assert (VARB = CONSTB); + assert (VARS = CONSTS); + assert (VARBO = CONSTBO); + assert (VARA = CONSTA); + assert (VARRE = CONSTRE); + + assert NOT((funcI = CONSTI) and + (funcR = CONSTR) and + (funcE = CONSTE) and + (funcD = CONSTD) and + (funcT = CONSTT) and + (funcB = CONSTB) and + (funcS = CONSTS) and + (funcBO = CONSTBO) and + (funcA = CONSTA) and + (funcRE = CONSTRE) and + (VARI = CONSTI) and + (VARR = CONSTR) and + (VARE = CONSTE) and + (VARD = CONSTD) and + (VART = CONSTT) and + (VARB = CONSTB) and + (VARS = CONSTS) and + (VARBO = CONSTBO) and + (VARA = CONSTA) and + (VARRE = CONSTRE)) + report "***PASSED TEST: c08s12b00x00p05n01i01637" + severity NOTE; + assert ((funcI = CONSTI) and + (funcR = CONSTR) and + (funcE = CONSTE) and + (funcD = CONSTD) and + (funcT = CONSTT) and + (funcB = CONSTB) and + (funcS = CONSTS) and + (funcBO = CONSTBO) and + (funcA = CONSTA) and + (funcRE = CONSTRE) and + (VARI = CONSTI) and + (VARR = CONSTR) and + (VARE = CONSTE) and + (VARD = CONSTD) and + (VART = CONSTT) and + (VARB = CONSTB) and + (VARS = CONSTS) and + (VARBO = CONSTBO) and + (VARA = CONSTA) and + (VARRE = CONSTRE)) + report "***FAILED TEST: c08s12b00x00p05n01i01637 - The value of the expression defines the result returned by the function." + severity ERROR; + wait; + END PROCESS TESTING; + +END c08s12b00x00p05n01i01637arch; |