When Is C Language Appropriate for FPGA Design?
This chapter presents a brief overview of FPGAs and FPGA-based platforms and present the general philosophy behind using the C language for FPGA application development. Even experienced FPGA users will find new information as the FPGA is applied to new, perhaps unfamiliar territory: that of high-performance computing.
Experimenting with mixed hardware/software solutions can be a time-consuming process due to the historical disconnect between software development methods and the lower-level methods required for hardware design, including design for FPGAs. For many applications, the complete hardware/software design is represented by a collection of software and hardware source files that are not easily compiled, simulated, or debugged with a single tool set. In addition, because the hardware design process is relatively inefficient, hardware and software design cycles may be out of sync, requiring system interfaces and fundamental software/hardware partitioning decisions to be prematurely locked down. With the advent of C-based FPGA design tools, however, it is now possible to use familiar software design tools and standard C language for a much larger percentage of a given application—in particular, those parts of the design that are computationally intensive. Later performance tweaks may introduce