Hello world VHDL program - blinking LED
Yeah as Andrew mentioned in the comment, when you write the line 

signal blink : std_logic := '1';

that is tying the signal blink to a logic high value. If you want to say that it starts as a '1' then use a reset signal clause:

if(reset = '1') then
    --initial conditions
    blink &lt;= '1';
elsif (clk='1' and clk'event) then
    if cnt = CNT_MAX then
        cnt &lt;= (others =&gt; '0');
        blink &lt;= not blink;
    else
        cnt &lt;= cnt + 1;
    end if;
end if; 


as I believe most fpga boards pulse the reset signal when they go through a power cycle. Or at least the Spartan-3/4 demo boards that I've used do.

But expanding on why the default value doesn't make sense: If something is tied to a logic high value, it doesn't matter what else you drive it with, it is always going to be a pulled high signal.

Edit: So the two demo boards that I've used for the Spartan-3 and Spartan-4 have a push button labelled reset. It is a normally off button that has a pull-up resistor attached to the pin. So when the reset button is pushed it bring the reset signal to ground. That means reset is an active low signal. However, for readability in my code, I generally try to make signals active high. So my ucf file will have the following net statement:

net swrst       loc=D15;    # xst-3 RESET pushbutton  


and then in my top level entity I will create a global reset signal:

signal reset : std_logic;
...
...
...
reset &lt;= not swrst;


All the reset signals for any components I use can now be driven by my active high global reset signal.