Runtime Flowchart

 

To properly execute this program, the user must have prepared two input files: one that holds the various configuration parameters, and one that holds the truthtable that the program will strive to emulate with each successive generation. Details for properly writing either file is covered in the User's Manual.

Once these files are in place, the program can be executed. It begins by creating a seed generation that is wholly random. It obeys the user's criteria for number of inputs, outputs, circuit components, and so forth. This generation is comprised by many iterations, each of which represents a single circuit in graph form. This graph is written out as a .dot file, and then converted into a VHDL file. A VHDL testbench runs this file using input gathered from the supplied truthtable and generates output. The output is tested against the expected output and a grade is then assigned. Graded circuits are sorted in descending order, and a user-supplied amount will be selected for merging. The program then enters into the next generation.

The user may select how many generations he wishes to run. So long as more than one is selected, there will be merging of the previous generation's best scoring circuits into new, derived circuits. These circuits are again represented by graphs, which are converted to VHDL files and follow the same path of execution as the seed generation. The program will continue to run so long as it has more generations to process.

Click the image below for a larger version: