aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/synth/issue1920/ent1.vhdl
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/synth/issue1920/ent1.vhdl')
-rw-r--r--testsuite/synth/issue1920/ent1.vhdl30
1 files changed, 30 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;