diff options
-rw-r--r-- | testsuite/gna/issue2250/ent.vhdl | 44 | ||||
-rwxr-xr-x | testsuite/gna/issue2250/testsuite.sh | 11 |
2 files changed, 55 insertions, 0 deletions
diff --git a/testsuite/gna/issue2250/ent.vhdl b/testsuite/gna/issue2250/ent.vhdl new file mode 100644 index 000000000..c640e4b3a --- /dev/null +++ b/testsuite/gna/issue2250/ent.vhdl @@ -0,0 +1,44 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package test_pkg is + generic (type t_element; + function to_string_element(element : t_element) return string + ); +end package; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity test is +end entity test; +architecture beh of test is + type t_record is record + address : std_logic_vector(7 downto 0); + data : std_logic_vector(7 downto 0); + end record t_record; + + function record_to_string( + constant rec_data : t_record + ) return string is + begin + return "address: " & to_string(rec_data.address) & ", data: " & to_string(rec_data.data); + end function record_to_string; + + package record_pkg is new work.test_pkg + generic map (t_element => t_record, + to_string_element => record_to_string); + + use record_pkg.all; + +begin + process + variable v_input : t_record := (x"AA", x"BB"); + begin + report "Val is " & to_string_element(v_input) severity note; + wait; + end process; + +end architecture beh; diff --git a/testsuite/gna/issue2250/testsuite.sh b/testsuite/gna/issue2250/testsuite.sh new file mode 100755 index 000000000..e9f2d6113 --- /dev/null +++ b/testsuite/gna/issue2250/testsuite.sh @@ -0,0 +1,11 @@ +#! /bin/sh + +. ../../testenv.sh + +export GHDL_STD_FLAGS=--std=08 +analyze ent.vhdl +elab_simulate test + +clean + +echo "Test successful" |