diff options
author | Tristan Gingold <tgingold@free.fr> | 2016-11-23 20:35:25 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2016-12-05 03:25:21 +0100 |
commit | 0d58d552bc3ec40f0dec6ab68fddbc619c7395b0 (patch) | |
tree | f7c9dd3d729373eb8b6746ded987da77170b97b3 /testsuite/gna/issue207 | |
parent | 61e8720cc963f83c7ff00d6ec7a3ee289005001b (diff) | |
download | ghdl-0d58d552bc3ec40f0dec6ab68fddbc619c7395b0.tar.gz ghdl-0d58d552bc3ec40f0dec6ab68fddbc619c7395b0.tar.bz2 ghdl-0d58d552bc3ec40f0dec6ab68fddbc619c7395b0.zip |
File testcase for #207
Diffstat (limited to 'testsuite/gna/issue207')
-rw-r--r-- | testsuite/gna/issue207/pack.vhd | 91 | ||||
-rw-r--r-- | testsuite/gna/issue207/pack1.vhd | 128 | ||||
-rwxr-xr-x | testsuite/gna/issue207/testsuite.sh | 10 |
3 files changed, 229 insertions, 0 deletions
diff --git a/testsuite/gna/issue207/pack.vhd b/testsuite/gna/issue207/pack.vhd new file mode 100644 index 000000000..124eb9efc --- /dev/null +++ b/testsuite/gna/issue207/pack.vhd @@ -0,0 +1,91 @@ +--------------------------------------------------------------------------------
+--
+-- Package demo with two simple overloaded procedures
+--
+--------------------------------------------------------------------------------
+
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+package pack is
+
+ procedure inc(signal val:inout std_logic_vector);
+ procedure inc(signal val:inout unsigned);
+ procedure inc(signal val:inout signed);
+ procedure inc(signal val:inout integer);
+ procedure inc(variable val:inout unsigned);
+ procedure inc(variable val:inout integer);
+ procedure dec(signal val:inout std_logic_vector);
+ procedure dec(signal val:inout unsigned);
+ procedure dec(signal val:inout signed);
+ procedure dec(signal val:inout integer);
+ procedure dec(variable val:inout unsigned);
+ procedure dec(variable val:inout integer);
+
+end pack;
+
+package body pack is
+
+ procedure inc(signal val:inout std_logic_vector) is
+ begin
+ val<= std_logic_vector(unsigned(val) + 1);
+ end;
+
+ procedure inc(signal val:inout signed) is
+ begin
+ val<= val + 1;
+ end;
+
+ procedure inc(signal val:inout unsigned) is
+ begin
+ val<= val + 1;
+ end;
+
+ procedure inc(signal val:inout integer) is
+ begin
+ val<= val + 1;
+ end;
+
+ procedure inc(variable val:inout unsigned) is
+ begin
+ val := val + 1;
+ end;
+
+ procedure inc(variable val:inout integer) is
+ begin
+ val := val + 1;
+ end;
+
+ procedure dec(signal val:inout std_logic_vector) is
+ begin
+ val<= std_logic_vector(unsigned(val) - 1);
+ end;
+
+ procedure dec(signal val:inout unsigned) is
+ begin
+ val<= val - 1;
+ end;
+
+ procedure dec(signal val:inout signed) is
+ begin
+ val<= val - 1;
+ end;
+
+ procedure dec(signal val:inout integer) is
+ begin
+ val<= val - 1;
+ end;
+
+ procedure dec(variable val:inout unsigned) is
+ begin
+ val := val - 1;
+ end;
+
+ procedure dec(variable val:inout integer) is
+ begin
+ val := val - 1;
+ end;
+
+end;
+
diff --git a/testsuite/gna/issue207/pack1.vhd b/testsuite/gna/issue207/pack1.vhd new file mode 100644 index 000000000..0951b5a80 --- /dev/null +++ b/testsuite/gna/issue207/pack1.vhd @@ -0,0 +1,128 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package pack0 is + + procedure inc(signal val:inout std_logic_vector); + procedure inc(signal val:inout unsigned); + procedure inc(signal val:inout signed); + procedure inc(signal val:inout integer); + procedure dec(signal val:inout std_logic_vector); + procedure dec(signal val:inout unsigned); + procedure dec(signal val:inout signed); + procedure dec(signal val:inout integer); + +end pack0; + +package body pack0 is + + procedure inc(signal val:inout std_logic_vector) is + begin + val<= std_logic_vector(unsigned(val) + 1); + end; + + procedure inc(signal val:inout signed) is + begin + val<= val + 1; + end; + + procedure inc(signal val:inout unsigned) is + begin + val<= val + 1; + end; + + procedure inc(signal val:inout integer) is + begin + val<= val + 1; + end; + + procedure dec(signal val:inout std_logic_vector) is + begin + val<= std_logic_vector(unsigned(val) - 1); + end; + + procedure dec(signal val:inout unsigned) is + begin + val<= val - 1; + end; + + procedure dec(signal val:inout signed) is + begin + val<= val - 1; + end; + + procedure dec(signal val:inout integer) is + begin + val<= val - 1; + end; + +end; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package pack1 is + + procedure inc(variable val:inout unsigned); + procedure inc(variable val:inout integer); + procedure dec(variable val:inout unsigned); + procedure dec(variable val:inout integer); + +end pack1; + +package body pack1 is + + procedure inc(variable val:inout unsigned) is + begin + val := val + 1; + end; + + procedure inc(variable val:inout integer) is + begin + val := val + 1; + end; + + procedure dec(variable val:inout unsigned) is + begin + val := val - 1; + end; + + procedure dec(variable val:inout integer) is + begin + val := val - 1; + end; + +end; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use work.pack0.all; +use work.pack1.all; + +entity overload is +end entity; + +architecture foo of overload is + signal sig: unsigned ( 7 downto 0) := (others => '0'); + signal int: integer range 0 to 255; -- 'LEFT = 0 initial value +begin + process + variable isig: unsigned ( 7 downto 0) := (others => '0'); + variable iint: integer range 0 to 255; + begin + inc(sig); + inc(isig); + inc(int); + inc(iint); + wait for 0 ns; + dec(sig); + dec(isig); + dec(int); + dec(iint); + wait; + end process; + +end architecture; diff --git a/testsuite/gna/issue207/testsuite.sh b/testsuite/gna/issue207/testsuite.sh new file mode 100755 index 000000000..3bd9f00f1 --- /dev/null +++ b/testsuite/gna/issue207/testsuite.sh @@ -0,0 +1,10 @@ +#! /bin/sh + +. ../../testenv.sh + +analyze_failure pack.vhd +analyze_failure pack1.vhd + +clean + +echo "Test successful" |