Project Abstract
The advancement of FPGA technology has made possible a new way of executing programs known as Reconfigurable Computing (RC). At the lowest level all software instructions are executed on hardware. It would be faster to skip the processor altogether and have a custom hardware solution. For the most part this is not done because of the development cost, but reconfigurable FPGAs allow almost any hardware to be quickly built during run-time. My research deals with the ability to instantiate programs in a language such as Java on an FPGA instead of custom hardware in order to dramatically speed up the execution time of these programs.

Within a program, major pieces of code can be translated into a hardware instantiation that is rectangular in shape. One of the major considerations in such a scheme is the placement of these rectangular modules onto the chip in the most efficient manner. The factors that must be considered include: the routing resources necessary to connect modules, fragmentation, and the amount of time needed to reconfigure the chip.

This summer, I am working on a placement package to simulate placing modules on the FPGA in order to determine the most efficient placement for a variety of configurations. Determining which configurations to place is a fairly nontrivial problem. The decisions depend on the modules and their connectivity as well as what point in the program is currently running. In addition, the modules all have to fit on the chip. When the placements are made, the final task is to create a model that chooses the correct configurations and efficiently switches between them as the program progresses.