title: VHDL execution order?
body: <p>In the following code, i have the line <code>row_count &lt;= row_count + 1;</code>, and the next line I use <code>row_count</code> to access an array, <code>col_mask &lt;= display(conv_integer(row_count));</code>. My expectation was that when the if block was triggered, <code>row_count</code> would be incremented and that new value would be used to access the array. However, when I run the code, the value retrieved from the array is 1 behind where I expect it, showing that the array is indexed with the current value of <code>row_count</code> before it is incremented. </p>
  
  <p>My question is, why is that? I easily compensated for this by starting my counter at 1 instead of zero, but I'm very curious as to why it behaves this way. </p>
  
  <pre><code>            if col = "10000000" then
                  -- Left rotate row
                  row &lt;= row(6 downto 0) &amp; row(7);
                  -- increment row count
                  row_count &lt;= row_count + 1;
                  -- get column mask from current position in array
                  col_mask &lt;= display(conv_integer(row_count));
              end if;
  </code></pre>