Generics should not define default values. Generic values should be explicitly set for synthesis to make sure that what is built is exactly what was expected to be built.
Generic values should also not be redefined in component declaration. It would make the propagation of generic values quite hard to understand.
entity fly is
generic (
dream : std_logic := '1';
run : std_logic := '0'
);
...
end;
architecture rtl of fly is
component fly is
generic (
dream : std_logic := '0';
run : std_logic := '1'
);
end component;
...
entity fly is
generic (
dream : std_logic
);
...
end;
architecture rtl of fly is
component fly is
end component;
...