--- Quote Start ---
Thanks for the reply,
I wrapped the statements in a process statement and it seemed to the trick, I don't particularly understand why but will clarify it in college hopefully.
Thanks again,
Maria
--- Quote End ---
That will be your problem. You cannot use if outside of the process because it is a sequential statment.
The other way to do it is to use conditional assignment:
use ieee.std_logic_misc.all; --for reduce function
.....
--later outside a process:
error <= '0' when xor_reduce(ip) = '0' else '1';
--but looking at your code, all that means is:
error <= xor_reduce(ip);