Synthesis of hardware models in C with pointers and complex data structures

One of the greatest challenges in a C/C++-based design methodology is efficiently mapping C/C++ models into hardware. Many networking and multimedia applications implemented in hardware or mixed hardware/software systems now use complex data structures stored in multiple memories, so many C/C++ features that were originally designed for software applications are now making their way into hardware. Such features include dynamic memory allocation and pointers for managing data. We present a solution for efficiently mapping arbitrary C code with pointers and malloc/free into hardware. Our solution, which fits current memory management methodologies, instantiates an application-specific hardware memory allocator coupled with a memory architecture. Our work also supports the resolution of pointers without restriction on the data structures. We present an implementation based on the SUIF framework along with case studies such as the realization of a video filter and an ATM segmentation engine.

[1]  Luciano Lavagno,et al.  ECL: a specification environment for system-level design , 1999, DAC '99.

[2]  Stan Y. Liao,et al.  An efficient implementation of reactivity for modeling hardware in the scenic design environment , 1997, DAC.

[3]  Giovanni De Micheli,et al.  Synthesis and Optimization of Digital Circuits , 1994 .

[4]  Kazutoshi Wakabayashi,et al.  C-based synthesis experiences with a behavior synthesizer, "Cyber" , 1999, Design, Automation and Test in Europe Conference and Exhibition, 1999. Proceedings (Cat. No. PR00078).

[5]  Giovanni De Micheli,et al.  Resolution of dynamic memory allocation and pointers for the behavioral synthesis form C , 2000, DATE '00.

[6]  Giovanni De Micheli,et al.  SpC: synthesis of pointers in C: application of pointer analysis to the behavioral synthesis from C , 1998, ICCAD.

[7]  Bjarne Steensgaard Points-to Analysis by Type Inference of Programs with Structures and Unions , 1996, CC.

[8]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[9]  Abhijit Ghosh,et al.  Methodology for hardware/software co-verification in C/C++ (short paper) , 2000, ASP-DAC '00.

[10]  Patrick Schaumont,et al.  A programming environment for the design of complex high speed ASICs , 1998, Proceedings 1998 Design and Automation Conference. 35th DAC. (Cat. No.98CH36175).

[11]  Giovanni De Micheli,et al.  Memory Representation and Hardware Synthesis of C Code with Pointers and Complex Data Structures , 2003 .

[12]  Abhijit Ghosh,et al.  Methodology for hardware/software co-verification in C/C++ , 2000, Proceedings 2000. Design Automation Conference. (IEEE Cat. No.00CH37106).

[13]  Paul R. Wilson,et al.  Dynamic Storage Allocation: A Survey and Critical Review , 1995, IWMM.

[14]  Monica S. Lam,et al.  Efficient context-sensitive pointer analysis for C programs , 1995, PLDI '95.

[15]  Stan Y. Liao,et al.  Hardware synthesis from C/C++ , 1999, DATE '99.

[16]  Heinrich Meyr,et al.  FRIDGE: a fixed-point design and simulation environment , 1998, Proceedings Design, Automation and Test in Europe.

[17]  Alain Deutsch,et al.  Interprocedural may-alias analysis for pointers: beyond k-limiting , 1994, PLDI '94.

[18]  G. De Micheli,et al.  Resolution of dynamic memory allocation and pointers for the behavioral synthesis from C , 2000, Proceedings Design, Automation and Test in Europe Conference and Exhibition 2000 (Cat. No. PR00537).

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

[20]  Alexandru Nicolau,et al.  Memory Issues in Embedded Systems-on-Chip: Optimizations and Exploration , 1998 .

[21]  Giovanni De Micheli,et al.  Encoding of Pointers for Hardware Synthesis , 1998 .

[22]  Francky Catthoor,et al.  Custom Memory Management Methodology , 1998, Springer US.

[23]  Steven W. K. Tjiang,et al.  SUIF: an infrastructure for research on parallelizing and optimizing compilers , 1994, SIGP.

[24]  Francky Catthoor,et al.  Custom Memory Management Methodology: Exploration of Memory Organisation for Embedded Multimedia System Design , 1998 .

[25]  Laurie J. Hendren,et al.  Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C , 1996, POPL '96.

[26]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[27]  David E. Evans,et al.  Static detection of dynamic memory errors , 1996, PLDI '96.

[28]  J. Morris Chang,et al.  A High-Performance Memory Allocator for Object-Oriented Systems , 1996, IEEE Trans. Computers.

[29]  Chantal Ykman-Couvreur,et al.  Memory management for embedded network applications , 1999, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[30]  Koichi Nishida,et al.  Hardware synthesis with the Bach system , 1999, ISCAS'99. Proceedings of the 1999 IEEE International Symposium on Circuits and Systems VLSI (Cat. No.99CH36349).

[31]  Luciano Lavagno,et al.  ECL: a specification environment for system-level design , 1999, Proceedings 1999 Design Automation Conference (Cat. No. 99CH36361).

[32]  P. J. Plauger The Standard C Library , 1991 .

[33]  Hugo De Man,et al.  Transforming set data types to power optimal data structures , 1995, ISLPED '95.