diff options
Diffstat (limited to 'testsuite/gna/issue2250/ent.vhdl')
-rw-r--r-- | testsuite/gna/issue2250/ent.vhdl | 44 |
1 files changed, 44 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; |