In VHDL one can cast one type to another using the name of the other type e.g
signal x : std_logic_vector(7 downto 0);
signal y : signed(7 downto 0);
...
y <= signed(x)
Here we use the type as if it was name of a function. Where exactly are these "cast functions" defined and why are they confused with the type name?