diff options
Diffstat (limited to 'testsuite/vests/vhdl-93/billowitch/compliant/tc879.vhd')
-rw-r--r-- | testsuite/vests/vhdl-93/billowitch/compliant/tc879.vhd | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/testsuite/vests/vhdl-93/billowitch/compliant/tc879.vhd b/testsuite/vests/vhdl-93/billowitch/compliant/tc879.vhd new file mode 100644 index 0000000..6c59318 --- /dev/null +++ b/testsuite/vests/vhdl-93/billowitch/compliant/tc879.vhd @@ -0,0 +1,84 @@ + +-- 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: tc879.vhd,v 1.2 2001-10-26 16:30:01 paw Exp $ +-- $Revision: 1.2 $ +-- +-- --------------------------------------------------------------------- + +package c10s01b00x00p04n01i00879pkg_a is + -- define a subtype to be used elsewhere + subtype EIGHTIES is INTEGER range 1980 to 1989; +end c10s01b00x00p04n01i00879pkg_a; + +package c10s01b00x00p04n01i00879pkg_b is + use WORK.c10s01b00x00p04n01i00879pkg_a.EIGHTIES; + function INTO_EIGHTIES ( ARG: in INTEGER ) return EIGHTIES; +end c10s01b00x00p04n01i00879pkg_b; + +package body c10s01b00x00p04n01i00879pkg_b is + -- map any integer into range 1980 : 1989 based on one's digit + function INTO_EIGHTIES ( ARG: in INTEGER ) return EIGHTIES is + variable RETVAL: EIGHTIES; + begin + RETVAL := ( ( abs ARG ) mod 10 ) + 1980; + return RETVAL; + end INTO_EIGHTIES; +end c10s01b00x00p04n01i00879pkg_b; + + +ENTITY c10s01b00x00p04n01i00879ent IS +END c10s01b00x00p04n01i00879ent; + +use WORK.c10s01b00x00p04n01i00879pkg_a.all; +use WORK.c10s01b00x00p04n01i00879pkg_b.all; +ARCHITECTURE c10s01b00x00p04n01i00879arch OF c10s01b00x00p04n01i00879ent IS + signal THE_INPUT : INTEGER; + signal THE_OUTPUT : INTEGER; +BEGIN + TESTING: PROCESS + variable k : integer := 0; + BEGIN + for I in 120 to 149 loop + THE_INPUT <= I; + THE_OUTPUT <= INTO_EIGHTIES( I ); + wait for 1 ns; + if ( THE_OUTPUT < 1980 or THE_OUTPUT > 1989 ) then + k := 1; + end if; + assert ( ( THE_OUTPUT >= 1980 ) and ( THE_OUTPUT <= 1989 ) ) + report "output is out of range" + severity FAILURE; + end loop; + assert NOT( k=0 ) + report "***PASSED TEST: c10s01b00x00p04n01i00879" + severity NOTE; + assert ( k=0 ) + report "***FAILED TEST: c10s01b00x00p04n01i00879 - Declaration is formed by the subprogram declaration together with the corresponding subprogram body." + severity ERROR; + wait; + END PROCESS TESTING; + +END c10s01b00x00p04n01i00879arch; |