M
MM
Guest
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 (rluking@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
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 (rluking@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