FPGAs consist of arrays of logic that can implement the custom hardware portions of the design. These devices are very flexible and share a property in common with processors in that FPGAs can be programmed and reprogrammed as the algorithm is designed and refined.
Traditional FPGA design flows require early hardware/software partitioning decisions, and translations to RTL code and their associated tools. In contrast, C-based design flows allow FPGA coprocessors to be programmed as easily as compiling code to a processor. C is a natural choice for system-level FPGA design, enabling a common coding language for both software and hardware. C-based synthesis is to custom programmable hardware what software compilation is to the general-purpose processor. |