entity gen_delay is
  generic (type T);

  port (i : in T;
        o : out T);
end gen_delay;

architecture arch of gen_delay is
begin
  o <= i;
end arch;

entity dly3 is
  port (i : in bit_vector(7 downto 0);
        o : out bit_vector(7 downto 0));
end dly3;

architecture struct of dly3 is
  subtype t_vect is bit_vector(7 downto 0);
begin
  inst: entity work.gen_delay
    generic map (T => t_vect)
    port map (i => i, o => o);
end struct;