C
Colin Beighley
Guest
Hello,
I'm trying to write a state machine in VHDL using code like the below,
so that I can use for loops in the state machine. This code implements
an asynchronous reset. However, in ISE the synthesizer gives me the
error :
ERROR:HDLCompiler:609ďťż : Multiple signals in event expression is not
synthesizableďťż.
============CODE==============
state_machine : process
begin
state_machine_loop : loop
wait until (rising_edge(CLOCK) or RST = '1');
if RST = '1' then
do_reset_stuff;ďťżďťż
next state_machine_loop;
end if;
ďťż
internal_loop : for i in 0 to SOME_VALUE loop
do_internal_loop_stuff;
wait until (rising_edge(CLOCK) or RST = '1');
if RST = '1' then
do_reset_stuff;ďťż
next state_machine_loop;
end if;
end loop;
end loop;
end process;
============END CODE==========
So I figured, okay, I'll make a state machine with a synchronous
reset, as shown below. However, now I get this error:
ERROR:HDLCompiler:926ďťż : Multiple wait statements in one process are
not supported in this case.ďťż
============CODE==============
state_machine : process
begin
state_machine_loop : loop
wait until rising_edge(CLOCK);
if RST = '1' then
do_reset_stuff;ďťż
next state_machine_loop;
end if;
ďťż
internal_loop : for i in 0 to SOME_VALUE loop
do_internal_loop_stuff;
wait until rising_edge(CLOCK);
if RST = '1' then
do_reset_stuff;
next state_machine_loop;
end if;
end loop;
end loop;
end process
============END CODE==========
I'm reading in my copy of The Designers Guide to VHDL : Third Edition
that these state machine coding styles ARE part of the IEEE 1076.6-
VHDL-200X synthesis standard. I posted this on the Xilinx forum and
was told the same thing that the tool told me : multiple wait
statements are not supported for synthesis. Are there any other tools
that will synthesize this or a similar coding style? I mean, in theory
there is nothing un-synthesizable about this code.
Thanks,
Colin
I'm trying to write a state machine in VHDL using code like the below,
so that I can use for loops in the state machine. This code implements
an asynchronous reset. However, in ISE the synthesizer gives me the
error :
ERROR:HDLCompiler:609ďťż : Multiple signals in event expression is not
synthesizableďťż.
============CODE==============
state_machine : process
begin
state_machine_loop : loop
wait until (rising_edge(CLOCK) or RST = '1');
if RST = '1' then
do_reset_stuff;ďťżďťż
next state_machine_loop;
end if;
ďťż
internal_loop : for i in 0 to SOME_VALUE loop
do_internal_loop_stuff;
wait until (rising_edge(CLOCK) or RST = '1');
if RST = '1' then
do_reset_stuff;ďťż
next state_machine_loop;
end if;
end loop;
end loop;
end process;
============END CODE==========
So I figured, okay, I'll make a state machine with a synchronous
reset, as shown below. However, now I get this error:
ERROR:HDLCompiler:926ďťż : Multiple wait statements in one process are
not supported in this case.ďťż
============CODE==============
state_machine : process
begin
state_machine_loop : loop
wait until rising_edge(CLOCK);
if RST = '1' then
do_reset_stuff;ďťż
next state_machine_loop;
end if;
ďťż
internal_loop : for i in 0 to SOME_VALUE loop
do_internal_loop_stuff;
wait until rising_edge(CLOCK);
if RST = '1' then
do_reset_stuff;
next state_machine_loop;
end if;
end loop;
end loop;
end process
============END CODE==========
I'm reading in my copy of The Designers Guide to VHDL : Third Edition
that these state machine coding styles ARE part of the IEEE 1076.6-
VHDL-200X synthesis standard. I posted this on the Xilinx forum and
was told the same thing that the tool told me : multiple wait
statements are not supported for synthesis. Are there any other tools
that will synthesize this or a similar coding style? I mean, in theory
there is nothing un-synthesizable about this code.
Thanks,
Colin