Цитата(shtunder @ Jul 15 2014, 19:58)

variable cnt : integer range 0 to 1073741824;
Смущает эта строка.
1073741824 = b 1000000000000000000000000000000 - 31 разряд.
симулятор выдаст Вам ошибку, когда досчитает до 1073741824 (если дождётесь),
а фиттер создаст 31 разрядный счётчик, который будет считать до 2^31-1, т.е. до 2147483647.
Замените 1073741824 на 1073741823 = 2^30-1, а лучше используйте std_logic_vector вместо integer. Тогда и симулятор ругаться не будет.
А переменную использовать можно, вы же потом присваиваете её значение сигналу.
Цитата(shtunder @ Jul 15 2014, 19:58)

c_out<=cnt;