Tengo un código vhdl en este sentido (explicación a continuación):
architecture arc of anEntity is
signal x1_sig : T;
signal x2_sig : T2;
function test(x1: T, x2: T2) return boolean is
begin
if complicatedConditionWith x1 and x2 then
return true;
else
return false;
end if;
end function;
begin
p1: process (...) is
impure function test return boolean is
begin
return test(x1_sig,x2_sig);
end function;
begin
...
if test then --occurs several times
...
end process;
end architecture;
Para facilitar la escritura y la legibilidad, puse una condición complicada en una función. Ya que soy perezoso y siempre uso el mismo signals
con esa función, agregué una taquigrafía al proceso donde uso esta función principalmente. Sin embargo, Modelsim se quejó de los accesos a una señal de una función pure
, así que agregué el modificador impure
. A mi entender, esto le dice al compilador que la función podría tener efectos secundarios, aunque, dado que solo accedo a todo lo que lee (en c, uno podría definir los parámetros de la función como const
) considero que mi función no tiene efectos secundarios.
¿La adición de impure
tiene efectos secundarios negativos en el resultado de la síntesis?