A Higher-Level Language for Hardware Synthesis

We describe SAFL+: a call-by-value, parallel language in the style of ML which combines imperative, concurrent and functional programming. Synchronous channels allow communication between parallel threads and π-calculus style channel passing is provided. SAFL+ is designed for hardware description and synthesis; a silicon compiler, translating SAFL+ into RTL-Verilog, has been implemented. By parameterising functions over both data and channels the SAFL+ fun declaration becomes a powerful abstraction mechanism unifying a range of structuring techniques treated separately by existing HDLs. We show how SAFL+ is implemented at the circuit level and define the language formally by means of an operational semantics.

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

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

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

[4]  Gérard Berry,et al.  The chemical abstract machine , 1989, POPL '90.

[5]  Steven D. Johnson,et al.  DDD: A System for Mechanized Digital Design Derivation , 1991 .

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

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

[8]  Robin Milner,et al.  The Polyadic π-Calculus: a Tutorial , 1993 .

[9]  Inmos Limited,et al.  OCCAM 2 reference manual , 1988 .

[10]  James C. Hoe,et al.  Hardware Synthesis from Term Rewriting Systems , 1999, VLSI.

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

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

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

[14]  P. R. Stephan,et al.  SIS : A System for Sequential Circuit Synthesis , 1992 .

[15]  Simon L. Peyton Jones,et al.  Asynchronous exceptions in Haskell , 2001, PLDI '01.

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

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