Does VHDL specify how intermediate calculations are handled? For example, I have the following constant defined in one of my entities.
constant MAX_ADDR : integer := (1024*1024*1024*8)/64;
In Aldec's ACTIVE-HDL simulator the constant correctly evaluates to 134,217,728. On the other hand, in Vivado the (1024*1024*1024*8) portion of the calculation appears to overflow the 32bit integer type prior to the division by 64, leading to incorrect synthesis (and several hours of builds, debugging, and frustration).