Function Interface Models for Hardware Compilation: Types, Signatures, Protocols

The problem of synthesis of gate-level descriptions of digital circuits from behavioural specifications written in higher-level programming languages (hardware compilation) has been studied for a long time yet a definitive solution has not been forthcoming. The argument of this essay is mainly methodological, bringing a perspective that is informed by recent developments in programming-language theory. We argue that one of the major obstacles in the way of hardware compilation becoming a useful and mature technology is the lack of a well defined function interface model, i.e. a canonical way in which functions communicate with arguments. We discuss the consequences of this problem and propose a solution based on new developments in programming language theory. We conclude by presenting a prototype implementation and some examples illustrating our principles.

[1]  Radha Jagadeesan,et al.  Full Abstraction for PCF , 1994, Inf. Comput..

[2]  C.H. van Berkel,et al.  Compilations of communicating processes into delay-insensitive circuits , 1988, Proceedings 1988 IEEE International Conference on Computer Design: VLSI.

[3]  Cornelis Hermanus Vanberkel,et al.  Handshake circuits: An intermediary between communicating processes and VLSI , 1992 .

[4]  John C. Reynolds,et al.  Syntactic Control of Inference, Part 2 , 1989, ICALP.

[5]  Dennis M. Ritchie,et al.  C Reference Manual , 1983 .

[6]  John C. Reynolds,et al.  Syntactic control of interference , 1978, POPL.

[7]  Frank Vahid,et al.  C is for circuits: capturing FPGA circuits as sequential code for portability , 2008, FPGA '08.

[8]  Marly Roncken,et al.  The VLSI-programming language Tangram and its translation into handshake circuits , 1991, Proceedings of the European Conference on Design Automation..

[9]  Maurice V. Wilkes,et al.  The preparation of programs for an electronic digital computer , 1958 .

[10]  S. Shelah,et al.  Annals of Pure and Applied Logic , 1991 .

[11]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[12]  Dan R. Ghica,et al.  Geometry of synthesis: a structured approach to VLSI design , 2007, POPL '07.

[13]  Ivan E. Sutherland,et al.  Designing fast asynchronous circuits , 2001, Proceedings Seventh International Symposium on Asynchronous Circuits and Systems. ASYNC 2001.

[14]  Peter W. O'Hearn,et al.  The Logic of Bunched Implications , 1999, Bulletin of Symbolic Logic.

[15]  Robin Milner,et al.  Functions as processes , 1990, Mathematical Structures in Computer Science.

[16]  Ivan E. Sutherland,et al.  Micropipelines , 1989, Commun. ACM.

[17]  Walid A. Najjar,et al.  Impact of Loop Unrolling on Area, Throughput and Clock Frequency in ROCCC: C to VHDL Compiler for FPGAs , 2006, ARC.

[18]  Dennis M. Ritchie,et al.  The c language calling sequence , 1981 .

[19]  Wayne Luk,et al.  Structured hardware compilation of parallel programs , 1994 .

[20]  Arvind,et al.  Executing a Program on the MIT Tagged-Token Dataflow Architecture , 1990, IEEE Trans. Computers.

[21]  Andrzej S. Murawski,et al.  Syntactic control of concurrency , 2006, Theor. Comput. Sci..

[22]  Axel Jantsch,et al.  A network on chip architecture and design methodology , 2002, Proceedings IEEE Computer Society Annual Symposium on VLSI. New Paradigms for VLSI Systems Design. ISVLSI 2002.

[23]  Peter W. O'Hearn,et al.  Syntactic Control of Interference Revisited , 1999, Theor. Comput. Sci..

[24]  C.-H. Luke Ong,et al.  On Full Abstraction for PCF: I, II, and III , 2000, Inf. Comput..

[25]  Thomas A. Henzinger,et al.  Reactive Modules , 1996, Proceedings 11th Annual IEEE Symposium on Logic in Computer Science.

[26]  Andrzej S. Murawski,et al.  Angelic Semantics of Fine-Grained Concurrency , 2004, FoSSaCS.

[27]  Peter W. O'Hearn On bunched typing , 2003, J. Funct. Program..

[28]  Seth Copen Goldstein,et al.  Compiling Application-Specific Hardware , 2002, FPL.

[29]  Mary Sheeran,et al.  Lava: hardware design in Haskell , 1998, ICFP '98.

[30]  Wayne Luk,et al.  Compiling Ruby into FPGAs , 1995, FPL.

[31]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.