Katherine Compton is providing us a different definition. According to what can be found in her survey, we can see reconfigurable computing as intended to fill the gap between hardware and software. This gap is filled by achieving potentially much higher performance than software while maintaining a higher level of flexibility than hardware. Reconfigurable computing can be used by implementing all of the application functionalities in hardware. In this case the hardware implemented on the reconfigurable elements covers all the data path from the inputs to the outputs of the application. The advantage in doing this is that the hardware is easily replaceable by downloading an appropriate configuration file onto the chip, rather than having the circuit physically replaced. We can thus conclude that reconfigurable computing is a trade-off between general-purpose computing and application-specific computing because it tries to achieve a balance among performance, cost, power, flexibility, and design effort. Reconfigurable computing has enhanced the performance of applications in a large variety of domains, including embedded systems, SoCs, digital signal processing (DSP), image processing, network security, bioinformatics, supercomputing, Boolean SATisfiability (SAT), spacecrafts, and military applications. We can say that reconfigurable computing will widely, pervasively, and gradually impact human lives. Hence, it is time that we focus on how reconfigurable computing and reconfigurable system design techniques are to be utilized for building applications. From the mid-1980s, reconfigurable computing has become a popular field due to the Field Programmable Gate Arrays technology progress. Field Programmable Gate Arrays or, from now just for simplicity, FPGAs, were not the first reconfigurable technologies, but lets try to have a better understanding on what these devices are and the reasons why they got so much attention and tractions on the market. An FPGA is a semiconductor device CONTAINING PROGRAMMABLE LOGIC COMPONENTS and PROGRAMMABLE INTERCONNECTS but NO INSTRUCTION FETCH at run time, that is, FPGAs DO NOT HAVE A PROGRAM COUNTER. In most FPGAs, the logic components can be programmed to duplicate the functionality of basic logic gates or functional intellectual properties (IPs). FPGAs also include memory elements composed of simple flip-flops or more complete blocks of memories. The number of logic gates on the most recent FPGA models has also opened the way for the implementation of complete systems on chip (SoC) on these devices, given the fact that many FPGAs now have one or more processors directly embedded into the silicon wafer, and that even if those processors are not available, soft core processors can be used. Soft-core processors are complete processor IP-Cores described in an HDL and synthesizable on FPGAs. There are several examples of these processors, Microblaze, LEON, NEOS, OpenRISC, just to name a few. Hence, FPGA has made possible the dynamic execution and configuration of both hardware and software on a single chip, and also because of these features FPGA are currently considered as the state of the art of Programmable Logic Devices.