Growing a Software Language for Hardware Design

The Liquid Metal project at IBM Research aimed to design and implement a new programming language called Lime to address some of the challenges posed by heterogeneous systems. Lime is a Java-compatible programming language with features designed to facilitate high level synthesis to hardware (FPGAs). This article reviews the language design from the outset, and highlights some of the earliest design decisions. We also describe how these decisions were revised recently to accommodate important requirements that arise in networking and cryptography.

[1]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[2]  Craig Gentry,et al.  Implementing Gentry's Fully-Homomorphic Encryption Scheme , 2011, EUROCRYPT.

[3]  John Wawrzynek,et al.  Chisel: Constructing hardware in a Scala embedded language , 2012, DAC Design Automation Conference 2012.

[4]  Martin Odersky,et al.  An Overview of the Scala Programming Language , 2004 .

[5]  Giovanni De Micheli,et al.  Readings in hardware / software co-design , 2001 .

[6]  William Thies,et al.  StreamIt: A Language for Streaming Applications , 2002, CC.

[7]  Joshua S. Auerbach,et al.  Lime: a Java-compatible and synthesizable language for heterogeneous architectures , 2010, OOPSLA.

[8]  Moon Sung Lee,et al.  On the sparse subset sum problem from Gentry-Halevi's implementation of fully homomorphic encryption , 2011, IACR Cryptol. ePrint Arch..

[9]  Paul Hudak,et al.  Functional reactive programming for real-time reactive systems , 2002 .

[10]  Stephen Brookes,et al.  On the Kahn Principle and Fair Networks , 1998 .

[11]  Paul Hudak Functional Reactive Programming (Abstract) , 1999, ESOP.

[12]  Joshua S. Auerbach,et al.  The Shape of Things to Run - Compiling Complex Stream Graphs to Reconfigurable Hardware in Lime , 2013, ECOOP.

[13]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[14]  Edward A. Lee,et al.  Static Scheduling of Synchronous Data Flow Programs for Digital Signal Processing , 1989, IEEE Transactions on Computers.