diff options
-rw-r--r-- | testsuite/synth/issue1006/test.vhdl | 20 | ||||
-rw-r--r-- | testsuite/synth/issue1006/test_package.vhdl | 17 | ||||
-rwxr-xr-x | testsuite/synth/issue1006/testsuite.sh | 9 |
3 files changed, 46 insertions, 0 deletions
diff --git a/testsuite/synth/issue1006/test.vhdl b/testsuite/synth/issue1006/test.vhdl new file mode 100644 index 000000000..1473d3eb8 --- /dev/null +++ b/testsuite/synth/issue1006/test.vhdl @@ -0,0 +1,20 @@ +library ieee; +use ieee.std_logic_1164.all; + +library work; +use work.test_package.all; + +entity test is + generic( + MEMORY_SIZE : natural := 4096 + ); + port( + val_in : in std_logic_vector(63 downto 0) + ); +end entity test; + +architecture behaviour of test is + signal tmp : std_logic_vector(log2(MEMORY_SIZE) - 1 downto 0); +begin + tmp <= val_in(log2(MEMORY_SIZE) - 1 downto 0); +end architecture behaviour; diff --git a/testsuite/synth/issue1006/test_package.vhdl b/testsuite/synth/issue1006/test_package.vhdl new file mode 100644 index 000000000..4eeb95fa5 --- /dev/null +++ b/testsuite/synth/issue1006/test_package.vhdl @@ -0,0 +1,17 @@ +package test_package is + function log2(input : in natural) return natural; +end package test_package; + +package body test_package is + function log2(input : in natural) return natural is + variable retval : natural := 0; + variable temp : natural := input; + begin + while temp > 1 loop + retval := retval + 1; + temp := temp / 2; + end loop; + + return retval; + end function log2; +end package body test_package; diff --git a/testsuite/synth/issue1006/testsuite.sh b/testsuite/synth/issue1006/testsuite.sh new file mode 100755 index 000000000..08fafc2d7 --- /dev/null +++ b/testsuite/synth/issue1006/testsuite.sh @@ -0,0 +1,9 @@ +#! /bin/sh + +. ../../testenv.sh + +synth test_package.vhdl test.vhdl -e test > syn_test.vhdl +analyze test_package.vhdl syn_test.vhdl +clean + +echo "Test successful" |