I was attempting to test a VHDL project with Isim Simulator within ISE. Behavioral simulation works fine while Post-Route produces a lot of errors of this kind:
Warning: /X_FF PULSE WIDTH High VIOLATION ON RST; Expected:= 1.794 ns; Observed:=1.369 ns.
Why this error shows up? How could I solve it? I tried to load the relative bitstream on my Basys2 board but it doesn't work. Could it be due to this simulation error? Thanks
Control Unit code:
type state is (IDLE, INIT, LSHIFT, ADD, SUB, SETQ);
signal curr, nxt : state := IDLE;
begin
p0: process(clock, reset_n_in)
begin
if reset_n_in = '0' then
curr <= IDLE;
elsif rising_edge(clock) then
curr <= nxt;
end if;
end process;
fsm : process (curr, start,reset_n_in,fine_conteggio,S)
begin
-- if reset_n_in = '0' then
-- reset_n_out <='0';
-- else
-- reset_n_out <='1';
-- end if;
done <='0';
en_write_Q <= '0';
en_shift <= '0';
en_M <= '0';
incrementa_conteggio <= '0';
en_write_S_A <= '0';
carica_operando_Q <= '0';
subtract <= '0';
case curr is
when IDLE =>
if start = '1' then
reset_n_out <='0';
done <='0';
nxt <= INIT;
else
nxt <= IDLE;
end if;
if fine_conteggio = '1' then
done <='1';
nxt <= IDLE;
end if;
when INIT =>
en_M <= '1';
en_write_S_A <= '1';
en_write_Q <= '1';
reset_n_out <='1';
carica_operando_Q <= '1';
nxt <= LSHIFT;
when LSHIFT =>
en_shift <= '1';
nxt <= SUB;
when SUB =>
subtract <= '1';
en_write_S_A <= '1';
nxt <= SETQ;
when ADD =>
en_write_S_A <= '1';
if fine_conteggio = '0' then
incrementa_conteggio <= '1';
nxt <= LSHIFT;
else
nxt <= IDLE;
end if;
when SETQ =>
en_write_Q <= '1';
if S = '1' then
nxt <= ADD;
else
if fine_conteggio = '0' then
incrementa_conteggio <='1';
nxt <= LSHIFT;
else
nxt <= IDLE;
end if;
end if;
end case;
end process;