I'm new to VHDL. I learned that the sequential statement under the process is always sequential. But in my snippet below, Q will have the old temp value. It seems that it contradicts to the sequential statements since Q will not update to the newest temp value.
process (CLK)
begin
if(rising_edge(CLK)) then
temp <= D;
Q <= temp;
end if;
end
process