Genetic State Assigner (GSA) is an easy-to-use and free
program for the optimal state assignment of sequential synchronous circuits by means of Genetic Algorithms (GAs). It can be used to
minimize the total hardware required for the implementation, find state assignments that
result in parallel structures, if exists, or minimize input dependency.
The dynamic GUI of
GSA allows the user to simply convert the description of a circuit (in the form of
a state table) to its detailed
design (in the form of minimized logical equations) which is optimized with
respect to a user-specified objective function.
GSA has been tested over a wide range of problems. The results are amazing: in some cases it
finds the best possible solution not only a good one, in a short amout of time.
In
other cases it needs more time to regulate the parameters of the GA and then
obtains
the optimal design after a number of generations.
Below you see two figures, both are simple realization of a non-overlapping sequence detector for 0101. The first one is what a manual state assignment method obtains, and the second is obtained by the GSA state assignment. As seen, GSA finds an assignment which results in an implementation with three times less logic than that of the manual method.
The realization of the sequence detector obtained by a manual
state assignment:

The realization of the sequence detector obtained by GSA
state assignment:

A conference paper providing more information about GSA can be downloaded here:
gsa.pdf ~ 100 KB
GSA is absolutely free and can be downloaded here:
gsa.zip ~ 125 KB
GSA has been implemented in Java, so you should be able to run it on any platform supporting Java. After downloading and unzipping the package, run the following command to start the program:
java -jar gsa.jar
Of course, Java Runtime Environment (JRE) should already have been installed.
Your suggestions or questions are always welcome. Please feel free to contact me at anytime:
M. Mehdi Haji
mehdi.haji@gmail.com