Hi all,
I've been going through the archives trying to find a hint to the problem I am having with a state machine (it occasionaly enters illegal states and doesn't come out) and I found this post:
--------------------------------------------------------------------- From: iglam ( snipped-for-privacy@deletethispart.home.com) Subject: Re: safe state machine design problem Newsgroups: comp.lang.vhdl, comp.arch.fpga Date: 2001-06-08 08:26:41 PST
If you are using enumerated types, then your when others clause is doing nothing. You've already listed all of the elements of the state type when you built your case statement. So, the first thing is, your synthesis tool tosses that line.
Next, your synthesis engine decides to one-hot build the state machine. OK, great. Then, you screw up the state by forcing two bits high, and it goes out to lunch. Makes sense. The synthesis tool was not instructed to put in logic to avoid or get out of lockout states.
Either enumerate the Illegal states and get the synthesis tool to build a regulare state machine
or
Get the synthesis tool to put the lockout state protection in. I'm not familiar with Leonardo, so someone else will have to suggest specific solutions.
Bob
---------------------------------------------------------------------
So, I was wondering if ignoring illegal states when using enumerated types is true for XST? That would explain at least some of my problems... Can I somehow force XST to make a state machine safe without manually coding all the states?
Thanks, /Mikhail