Liquid Metal (Lime)

The long term project goal is to create a single unified programming language and environment that allows (all) portions of a system to move fluidly between hardware and software, dynamically and adaptively.

Our current emphasis is on delivering that vision via transparent and dynamic compilation and co-execution of Java programs on general-purpose processors and reconfigurable hardware (e.g., FPGAs).


Limitations on clock scaling are leading architects and system designers to explore more heterogeneous systems that take advantage of the different power/performance characteristics of alternative hardware approaches. Meanwhile, "hardware" is becoming ever more malleable, with dynamically reprogrammable FPGAs now widely available.

This project aims to exploit increasing availability of FPGAs to offer end-to-end high-performance and low-power solutions for a broad range of applications. The challenge however is that FPGA programming remains a difficult, time-consuming task and resources are often left under-utilized. The fundamental problem comes down to the programming languages and technologies.

The goal of the Liquid Metal project is to create a single unified programming language and environment in which portions of a system can be fluidly moved between hardware and software. Furthermore, we wish to do so dynamically and adaptively, in effect "JITting the hardware".

The project combines insight from hardware description languages (HDLs) with advantages from high-level languages to tackle the parallel programming software crisis.




Last updated 11 Mar 2009