library ieee; use ieee.std_logic_1164.all; entity e is end entity; architecture a of e is type t_rec is record addr : std_logic_vector; end record; function init_signals(bits : natural) return t_rec is variable result : t_rec(addr(bits - 1 downto 0)); begin result.addr := (others => '0'); -- result.addr := (result.addr'range => '0'); -- this works return result; end function; begin end architecture;