--- Quote Start ---
You're right and that was silly of me. I pared down something else and posted quickly. A real example would be:
if rising_edge (clk) then
a <= a + 1;
if (a = 23) then
b <= '1';
else
b <= '0';
end if;
end if;
where is doesn't matter if the increment is before or after the comparison - you get exactly the same behaviour either way.
Mark.
--- Quote End ---
That is right.
The way I explain it to myself is as follows:
Processes and combinatorial statements are all meant to infer parallel circuitry and so their relative order is irrelevant.
Statements within a sequential process or the order of conditions in a combinatorial statement will naturally affect priority.
processes allow two ways of defining priority. By "if else" ...etc when top condition takes priority(case statement has no priority). or By overwriting a default such as your first example when last assignment takes priority (and settled at compile time).
In your second example the order is irrelevant because the values are checked and updated at clock edge.