diff options
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/synth/issue1920/ent1.vhdl | 30 | ||||
-rw-r--r-- | testsuite/synth/issue1920/ent2.vhdl | 30 | ||||
-rwxr-xr-x | testsuite/synth/issue1920/testsuite.sh | 8 |
3 files changed, 68 insertions, 0 deletions
diff --git a/testsuite/synth/issue1920/ent1.vhdl b/testsuite/synth/issue1920/ent1.vhdl new file mode 100644 index 000000000..f6e3cf0c9 --- /dev/null +++ b/testsuite/synth/issue1920/ent1.vhdl @@ -0,0 +1,30 @@ +library ieee; +use ieee.std_logic_1164.all; + +entity ent is + port ( + inputs : in std_logic; + result : out std_logic + ); +end entity; + +architecture synth of ent is + + function local_func(A : std_logic) return std_logic is + begin + return A; + end function; + + -- With this line + -- As expected, GHDL emits a good enough error message: cannot use signal value during elaboration + --constant C : std_logic := inputs; + + -- But with this line, which is erroneous code, because a constant cannot be computed from a non-constant + -- GHDL crashes with an assertion: raised CONSTRAINT_ERROR : netlists-builders.adb:791 access check failed + constant C : std_logic := local_func(inputs); + +begin + + result <= C; + +end architecture; diff --git a/testsuite/synth/issue1920/ent2.vhdl b/testsuite/synth/issue1920/ent2.vhdl new file mode 100644 index 000000000..f524c0469 --- /dev/null +++ b/testsuite/synth/issue1920/ent2.vhdl @@ -0,0 +1,30 @@ +library ieee; +use ieee.std_logic_1164.all; + +entity ent is + port ( + inputs : in std_logic; + result : out std_logic + ); +end entity; + +architecture synth of ent is + + function local_func(A : std_logic) return std_logic is + begin + return A; + end function; + + -- With this line + -- As expected, GHDL emits a good enough error message: cannot use signal value during elaboration + constant C : std_logic := inputs; + + -- But with this line, which is erroneous code, because a constant cannot be computed from a non-constant + -- GHDL crashes with an assertion: raised CONSTRAINT_ERROR : netlists-builders.adb:791 access check failed + --constant C : std_logic := local_func(inputs); + +begin + + result <= C; + +end architecture; diff --git a/testsuite/synth/issue1920/testsuite.sh b/testsuite/synth/issue1920/testsuite.sh new file mode 100755 index 000000000..81da7c94f --- /dev/null +++ b/testsuite/synth/issue1920/testsuite.sh @@ -0,0 +1,8 @@ +#! /bin/sh + +. ../../testenv.sh + +synth_failure ent1.vhdl -e +synth_failure ent2.vhdl -e + +echo "Test successful" |