May 3-6, 2015 Asilomar, California

Growing a Software Language for Hardware Design

Joshua Auerbach, David Bacon, Perry Cheng, Stephen Fink, Rodric Rabbah, Sunil Shukla

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.