Automated Generation of Hardware Accelerators with Direct Memory Access from ANSI/ISO Standard C Functions

Methodologies for synthesis of stand-alone hardware modules from C/C++ based languages have been gaining adoption for embedded system design, as an essential means to stay ahead of increasing performance, complexity, and time-to-market demands. However, using C to generate stand-alone blocks does not allow for truly seamless unification of embedded software and hardware development flows. This paper describes a methodology for generating hardware accelerator modules that are tightly coupled with a soft RISC CPU, its tool chain, and its memory system. This coupling allows for several significant advancements: (1) a unified development environment with true pushbutton switching between original software and hardware-accelerated implementations, (2) direct access to memory from the accelerator module, (3) full support for pointers and arrays, and (4) latency-aware pipelining of memory transactions. We also present results of our implementation, the C2H compiler. Eight user test cases on common embedded applications show speedup factors of 13x-73x achieved in less than a few days

[1]  G. De Micheli,et al.  SpC: synthesis of pointers in C application of pointer analysis to the behavioral synthesis from C , 1998, 1998 IEEE/ACM International Conference on Computer-Aided Design. Digest of Technical Papers (IEEE Cat. No.98CB36287).

[2]  Giovanni De Micheli Hardware synthesis from C/C++ models , 1999, DATE '99.

[3]  John Wawrzynek,et al.  The Garp Architecture and C Compiler , 2000, Computer.

[4]  Ian Page,et al.  Compiling occam into Field-Programmable Gate Arrays , 2001 .

[5]  David Pellerin,et al.  Practical FPGA programming in C , 2005 .

[6]  Wayne Luk,et al.  Interleaving behavioral and cycle-accurate descriptions for reconfigurable hardware compilation , 2005, 13th Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM'05).

[7]  David R. Galloway The Transmogrifier C hardware description language and compiler for FPGAs , 1995, Proceedings IEEE Symposium on FPGAs for Custom Computing Machines.