Warning : Actual for formal port a is neither a static name nor a globally static expression
Finally after some seeking an answer showed up.

The full adder inside one of the components (ThreeXthreeMultiply) was not instantiated properly.

It was ported like this:

port map(A and B, f, cin, s, cout);


The problem is, in a port map no functions should be used. Changing to this code solved the problem:

s &lt;= A and B; --s is a signal
port map(s, f, cin, s, cout);