DOI QR코드

DOI QR Code

GCC2Verilog Compiler Toolset for Complete Translation of C Programming Language into Verilog HDL

  • Received : 2010.11.02
  • Accepted : 2012.01.27
  • Published : 2011.10.31

Abstract

Reconfigurable computing using a field-programmable gate-array (FPGA) device has become a promising solution in system design because of its power efficiency and design flexibility. To bring the benefit of FPGA to many application programmers, there has been intensive research about automatic translation from high-level programming languages (HLL) such as C and C++ into hardware. However, the large gap of syntaxes and semantics between hardware and software programming makes the translation challenging. In this paper, we introduce a new approach for the translation by using the widely used GCC compiler. By simply adding a hardware description language (HDL) backend to the existing state-of- the-art compiler, we could minimize an effort to implement the translator while supporting full features of HLL in the HLL-to-HDL translation and providing high performance. Our translator, called GCC2Verilog, was implemented as the GCC's cross compiler targeting at FPGAs instead of microprocessor architectures. Our experiment shows that we could achieve a speedup of up to 34 times and 17 times on average with 4-port memory over PICO microprocessor execution in selected EEMBC benchmarks.

Keywords

References

  1. D. Andrews et al., "Programming Models for Hybrid FPGA-CPU Computational Components: A Missing Link," IEEE Micro, vol. 24, no. 4, Jul./Aug. 2004, pp. 42-53. https://doi.org/10.1109/MM.2004.36
  2. T.J. Callahan, J.R. Hauser, and J. Wawrzynek, "The Garp Architecture and C Compiler," IEEE Comput., vol. 33, no. 4, 2000, pp. 62-69. https://doi.org/10.1109/2.839323
  3. S.C. Goldstein et al., "PipeRench: A Coprocessor for Streaming Multimedia Acceleration," Int. Symp. Comput. Architecture, May 1999, pp. 28-39.
  4. A. Hormati et al., "Optimus: Efficient Realization of Streaming Applications on FPGAs," Int. Conf. Compilers, Architectures, Synthesis for Embedded Syst., Oct. 2008, pp. 41-50.
  5. "Impulse Tutorial: Generating HDL from C Language," Impulse Accelerated Technology, Inc., 2009.
  6. S. Guptaet al., "SPARK: A High-level Synthesis Framework for Applying Parallelizing Compiler Transformations," Int. Conf. VLSI Design, Jan. 2003, pp. 461-466.
  7. J. Villarreal et al., "Designing Modular Hardware Accelerators in C with ROCCC 2.0," Field Programmable Custom Comput. Mach., May 2010, pp. 127-134.
  8. I. Page, "Constructing Hardware-Software Systems from a Single Description," J. VLSI Signal Process., vol. 12, no. 1, 1996, pp. 87- 107. https://doi.org/10.1007/BF00936948
  9. S.A. Edwards, "The Challenges of Hardware Synthesis from Clike Languages," Design, Automation and Test in Europe, Sept. 2005, pp. 66-67.
  10. A.J. Virginia, Y.D. Yankova, and K.L. Bertels, "An Empirical Comparison of ANSI-C to VHDL Compilers: SPARK, ROCCC and DWARV," Anual Workshop Circuits, Syst. Signal Process., Nov. 2007.
  11. V.V. Sanevelly and R.L. Haggard, "A Procedure for Designing a Translator from C to VHDL," Southeastern Symp. Syst. Theory, 2002, pp. 329-333.
  12. D. Soderman and Y. Panchul, "Implementing C Designs in Hardware: A Full-Featured ANSI C to RTL Verilog Compiler in Action," Int. Verilog HDL Conf. VHDL Int. Users Forum, 1998, p. 22.
  13. Y.D. Yankova, "DWARV: Delft Workbench Automated Reconfigurable VHDL Generator," 17th Int. Conf. Field Programmable Logic Appl., Aug. 2007, pp. 697-701.
  14. R.P. Wilson et al., "SUIF: An Infrastructure for Research on Parallelizing and Optimizing Compilers," ACM SIGPLAN Notices, vol. 29, no. 12, Dec. 1994, pp. 31-37. https://doi.org/10.1145/193209.193217
  15. M. Budiu et al., "Spatial Computing," Int. Conf. Architectural Support Programming Languages Operating Syst., 2004, pp. 14- 26.
  16. Richard M. Stallman, "GNU Compiler Collection Internals for GCC version 4.2.2," GNU, 2005.
  17. Y. Na et al., "Chip Implementation of PICO Processor," CCC Conf., Feb. 2010.
  18. D. Galloway, "The Transmogrifier C Hardware Description Language and Compiler for FPGAs," IEEE Symp. Field Programmable Custom Comput. Mach., 1995, pp. 136-144.
  19. Andres Takach, "Catapult C Synthesis: Creating Parallel Hardware from C++," Int. Symp. Field-Programmable Gate Arrays Workshop, Feb. 2008.
  20. M.B. Gokhale et al., "Stream-Oriented FPGA Computing in the Streams-C High Level Language," IEEE Symp. Field- Programmable Custom Comput. Mach., 2000, pp. 49-56.
  21. L. Semeria and G.D. Micheli, "Resolution, Optimization, and Encoding of Pointer Variables for the Behavioral Synthesis from C," IEEE Trans. Comput.-Aided Design Integrated Circuits Syst., vol. 20, 2001, pp. 213-233. https://doi.org/10.1109/43.908442
  22. E. Anderson et al., "Memory Hierarchy for MCSoPC Multithreaded Systems," Int. Conf. Eng. Reconfigurable Syst. Algorithms, June 2007, pp. 44-50.
  23. A.V. Aho et al., Compilers: Principles, Techniques, and Tools, Addison-Wesley, 2nd ed., 2006.
  24. G. Nguyen thi Huong and S.W. Kim, "Support of Cross Calls between a Microprocessor and FPGA in CPU-FPGA Coupling Architecture," Reconfigurable Architecture Workshop, Apr. 2010.
  25. J.A. Poovey et al., "A Benchmark Characterization of the EEMBC Benchmark Suite," IEEE Micro, vol. 29, no. 5, Sept./Oct. 2009, pp. 18-29.
  26. ModelSim, Mentor Graphics Inc. http://www.model.com/

Cited by

  1. Architectural Design Issues in a Clockless 32-Bit Processor Using an Asynchronous HDL vol.35, pp.3, 2011, https://doi.org/10.4218/etrij.13.0112.0598