¿VHDL especifica cómo se manejan los cálculos intermedios? Por ejemplo, tengo la siguiente constante definida en una de mis entidades.
constant MAX_ADDR : integer := (1024*1024*1024*8)/64;
En el simulador ACTIVE-HDL de Aldec, la constante se evalúa correctamente a 134,217,728. Por otro lado, en Vivado, la parte (1024 * 1024 * 1024 * 8) del cálculo parece desbordar el tipo entero de 32 bits antes de la división por 64, lo que lleva a una síntesis incorrecta (y varias horas de compilación, depuración y frustración). ).