Hardware Synthesis Using SAFL and Application to Processor Design

We survey the work done so far in the FLaSH project (Functional Languages for Synthesising Hardware) in which the core ideas are (i) using a functional language SAFL to describe hardware computation; (ii) transforming SAFL programs using various meaning-preserving transformations to choose the area-time position (e.g. by resource duplication/ sharing, specialisation, pipelining); and (iii) compiling the resultant program in a resource-aware manner (keeping the gross structure of the resulting program by a 1-1 mapping of function definitions to functional units while exploiting ease-of-analysis properties of SAFL to select an efficient mapping) into hierarchical RTL Verilog. After this survey we consider how SAFL allows some of the design space concerning pipelining and superscalar techniques to be explored for a simple processor in the MIPS style. We also explore how ideas from partial evaluation (static and run-time data) can be used to unify the disparate approaches in Hydra/Lava/Hawk and SAFL and to allow processor specialisation.

[1]  Flemming Nielson,et al.  Two-Level Semantics and Code Generation , 1988, Theor. Comput. Sci..

[2]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[3]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

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

[5]  Robin Milner,et al.  Definition of standard ML , 1990 .

[6]  Pascal Raymond,et al.  The synchronous data flow programming language LUSTRE , 1991, Proc. IEEE.

[7]  David C. Ku,et al.  HardwareC -- A Language for Hardware Design (Version 2.0) , 1990 .

[8]  Mary Sheeran,et al.  muFP, a language for VLSI design , 1984, LFP '84.

[9]  Miriam Leeser,et al.  HML, a novel hardware description language and its translation to VHDL , 2000, IEEE Trans. Very Large Scale Integr. Syst..

[10]  Richard Sharp,et al.  A Higher-Level Language for Hardware Synthesis , 2001, CHARME.

[11]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[12]  Richard Sharp,et al.  The FLaSH Compiler : Efficient Circuits from Functional Specifications , 2000 .

[13]  Satnam Singh,et al.  Dynamic Specialisation of XC6200 FPGAs by Parial Evaluation , 1998, FPL.

[14]  J. D. Morison,et al.  Ella 2000: A Language for Electronic System Design , 1993 .

[15]  Kees van Berkel,et al.  Handshake Circuits: An Asynchronous Architecture for VLSI Programming , 1993 .

[16]  Richard Sharp,et al.  Hardware/Software Co-Design Using Functional Languages , 2001, TACAS.

[17]  John Launchbury,et al.  Microprocessor specification in Hawk , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[18]  Richard Sharp,et al.  Soft Scheduling for Hardware , 2001, SAS.

[19]  Robert Cartwright,et al.  Soft typing , 1991, PLDI '91.

[20]  Ñ Blockinðº,et al.  A Statically Allocated Parallel Functional Language , 2000 .

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

[22]  Amir Pnueli,et al.  On the Development of Reactive Systems , 1989, Logics and Models of Concurrent Systems.

[23]  Peter Robinson,et al.  Rotary pipeline processors , 1996 .