aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/vests/vhdl-93/billowitch/compliant/tc1703.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/tc1703.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/tc1703.vhd')
-rw-r--r--testsuite/vests/vhdl-93/billowitch/compliant/tc1703.vhd130
1 files changed, 130 insertions, 0 deletions
diff --git a/testsuite/vests/vhdl-93/billowitch/compliant/tc1703.vhd b/testsuite/vests/vhdl-93/billowitch/compliant/tc1703.vhd
new file mode 100644
index 000000000..2c8d26f89
--- /dev/null
+++ b/testsuite/vests/vhdl-93/billowitch/compliant/tc1703.vhd
@@ -0,0 +1,130 @@
+
+-- 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: tc1703.vhd,v 1.2 2001-10-26 16:29:42 paw Exp $
+-- $Revision: 1.2 $
+--
+-- ---------------------------------------------------------------------
+
+ENTITY c09s02b00x00p05n01i01703ent IS
+END c09s02b00x00p05n01i01703ent;
+
+ARCHITECTURE c09s02b00x00p05n01i01703arch OF c09s02b00x00p05n01i01703ent IS
+ signal s : boolean := false;
+BEGIN
+
+ TESTING: PROCESS
+ type result_type is (fail, pass);
+ variable result : result_type := fail;
+ variable i, j : integer;
+ variable k : integer := 0;
+ BEGIN
+ --
+ -- Test all sequential statements in this process
+ --
+ s <= true; -- signal assignment
+ j := 1; -- variable assignment
+ i := 0;
+
+ L1: while ( i < 10 ) loop -- conditional loop
+ if i > 2 then
+ exit;
+ end if;
+ case i is
+ when 0 =>
+ L2: for j in 1 to 3 loop
+ case j is
+ when 3 => -- should never execute because of
+ i := i + 1; -- alternative 2
+ k := 1;
+ exit;
+ assert false
+ report "exit in loop 2 case failed."
+ severity note;
+ when 2 =>
+ i := i + 1;
+ next L1;
+ k := 1;
+ assert false -- should never execute
+ report "next in loop 2 case failed."
+ severity note;
+ when 1 =>
+ assert false
+ report "first iteration of loop 2."
+ severity note ;
+ next; -- applies to loop L2
+ when others =>
+ --
+ -- This should never be executed but is
+ -- required by the 1076-1987 spec. which
+ -- says the subtype of 'j' is the same as
+ -- the base type (integer) and not constrained
+ -- to the range "1 to 3".
+ --
+ k := 1;
+ assert false
+ report "Should never get here."
+ severity note ;
+ end case;
+ k := 1;
+ assert false -- should never execute
+ report "next in loop 2 failed."
+ severity note;
+ end loop L2;
+ when 2 =>
+ s <= false after 5 ns;
+ wait for 6 ns;
+ assert not s
+ report "wait statement in loop L1 failed."
+ severity note ;
+
+ i := i +1;
+ when 1 =>
+ null;
+ assert false
+ report "null statement and next statement worked."
+ severity note ;
+ i := i +1;
+ when others =>
+ k := 1;
+ assert false
+ report "exit in if statement in loop L1 failed."
+ severity note ;
+ exit;
+ end case;
+ end loop L1;
+
+ wait for 50 ns;
+
+ assert NOT(s=false and k = 0 and j=1)
+ report "***PASSED TEST: c09s02b00x00p05n01i01703"
+ severity NOTE;
+ assert (s=false and k = 0 and j=1)
+ report "***FAILED TEST: c09s02b00x00p05n01i01703 - Process statement execution failed."
+ severity ERROR;
+ wait;
+ END PROCESS TESTING;
+
+END c09s02b00x00p05n01i01703arch;