What is GSA?

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.

A Comparison:

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:
 

Download:

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