Case-based reasoning and evolutionary computation techniques for FPGA programming
A problem in Software Reuse (SR) is to find a software component appropriate to a given
requirement. At present this is done by manual browsing through large libraries which is
very time consuming and therefore expensi ve. Further to this, if the component is not the
same as, but similar to a requirement, the component must be adapted to meet the
requirements. This browsing and adaptation requires a skilled user who can comprehend
library entries and foresee their application. It is expensive to train users and to produce
these documented libraries. The specialised software design domain, chosen in this thesis,
is that of Field Programmable Gate Arrays (FPGAs) programs. FPGAs are user
programmable microchips that have many applications including encryption and control.
This thesis is concerned with a specific technique for FGPA programming that uses
Evolutionary Computing (EC) techniques to synthesize FPGA programs.
Evolutionary Computing (EC) techniques are based on natural systems such as the life
cycle of living organisms or the formation of crystalline structures. They can generate
solutions to problems without the need for complete understanding of the problem. EC has
been used to create software programs, and can be used as a knowledge-lean approach for
generating libraries of software solutions. EC techniques produce solutions without
documentation. To automate SR it has been shown that it is essential to understand the
knowledge in the software library. In this thesis techniques for automatically documenting
EC produced solutions are illustrated. It is also helpful to understand the principles at work
in the reuse process. On examination of large collections of evolved programs it is shown
that these programs contain reusable modules. Further to this, it is shown that by studying
series of similar software components, principles of scale can be deduced. Case Based
Reasoning (CBR) is a problem solving method that reuses old solutions to solve new
problems and is an effective method of automatically reusing software libraries. These
techniques enable automated creation, documentation and reuse of a software library.
This thesis proposes that CBR is a feasible method for the reuse of EC designed FPGA
programs. It is shown that EC synthesised FPGA programs can be documented, reused,
and adapted to solve new problems, using automated CBR techniques.