Simualtion stops at time 0 after a real to real multiplication!
Your simulation is probably working correctly though unless you post an [MCVE] we can't be completely be sure.. 

TYPE memBlock IS ARRAY (INTEGER RANGE &lt;&gt;) OF REAL;
SIGNAL mem: memBlock(memCapacity DOWNTO 0);


There are no initial values specified for the contents of mem, so each value in the array is initialised to the default, which is REAL'LEFT, or a rather large negative number. 

Presumably your testbench initialises the values on ports a and b the same way. Multiplying them together will give an extremely large positive number, with the result shown.

You can initialise signals in the declaration, for example, 

SIGNAL a_test, b_test : REAL := 0.0;
SIGNAL mem: memBlock(memCapacity DOWNTO 0) := (others =&gt; 0.0);


will clear the array's contents, as well as the a_test signal(etc)  you connect up to ports a and b in your testbench.