Liquid Metal: Object-Oriented Programming Across the Hardware/Software Boundary

  • Shan Shan Huang
  • Amir Hormati
  • David F. Bacon
  • Rodric Rabbah
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5142)


The paradigm shift in processor design from monolithic processors to multicore has renewed interest in programming models that facilitate parallelism. While multicores are here today, the future is likely to witness architectures that use reconfigurable fabrics (FPGAs) as coprocessors. FPGAs provide an unmatched ability to tailor their circuitry per application, leading to better performance at lower power. Unfortunately, the skills required to program FPGAs are beyond the expertise of skilled software programmers. This paper shows how to bridge the gap between programming software vs. hardware. We introduce Lime, a new Object-Oriented language that can be compiled for the JVM or into a synthesizable hardware description language. Lime extends Java with features that provide a way to carry OO concepts into efficient hardware. We detail an end-to-end system from the language down to hardware synthesis and demonstrate a Lime program running on both a conventional processor and in an FPGA.


Liquid Metal Virtual Machine Work Method Loop Body Method Invocation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Bacon, D.F.: Kava: A Java dialect with a uniform object model for lightweight classes. Concurrency—Practice and Experience 15, 185–206 (2003)zbMATHCrossRefGoogle Scholar
  2. 2.
    Wu, P., Midkiff, S.P., Moreira, J.E., Gupta, M.: Efficient support for complex numbers in java. In: Java Grande, pp. 109–118 (1999)Google Scholar
  3. 3.
    IEEE: 1076 IEEE standard VHDL language reference manual. Technical report (2002)Google Scholar
  4. 4.
    IEEE: IEEE standard SystemC language reference manual. Technical report (2006)Google Scholar
  5. 5.
    Narayanan, M., Yelick, K.A.: Generating permutation instructions from a high-level description. In: Workshop on Media and Streaming Processors (2004)Google Scholar
  6. 6.
    Solar-Lezama, A., Rabbah, R., Bodík, R., Ebcioğlu, K.: Programming by sketching for bit-streaming programs. In: PLDI 2005: Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, pp. 281–294. ACM, New York (2005)CrossRefGoogle Scholar
  7. 7.
    Ekman, T., Hedin, G.: The jastadd extensible java compiler. In: OOPSLA 2007: Proceedings of the 22nd annual ACM SIGPLAN conference on Object oriented programming systems and applications, pp. 1–18. ACM, New York (2007)CrossRefGoogle Scholar
  8. 8.
    Babb, J., Frank, M., Lee, V., Waingold, E., Barua, R., Taylor, M., Kim, J., Devabhaktuni, S., Agarwal, A.: The raw benchmark suite: Computation structures for general purpose computing. In: Proceedings of the IEEE Symposium on Field-Programmable Custom Computing Machines (1997)Google Scholar
  9. 9.
    Lee, E.A., Messerschmitt, D.G.: Static scheduling of synchronous data flow programs for digital signal processing. IEEE Trans. on Computers (1987)Google Scholar
  10. 10.
    Bhattacharyya, S.S., Murthy, P.K., Lee, E.A.: Software Synthesis from Dataflow Graphs. Kluwer Academic Publishers, Dordrecht (1996)zbMATHGoogle Scholar
  11. 11.
    Gordon, M., Thies, W., Amarasinghe, S.: Exploiting Coarse-Grained Task, Data, and Pipeline Parallelism in Stream Programs. In: Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems (2006)Google Scholar
  12. 12.
    Bacon, D.F.: Fast and effective optimization of statically typed object-oriented languages. PhD thesis (1997)Google Scholar
  13. 13.
  14. 14.
    Lamb, A.A., Thies, W., Amarasinghe, S.: Linear Analysis and Optimization of Stream Programs. In: PLDI (2003)Google Scholar
  15. 15.
    Agrawal, S., Thies, W., Amarasinghe, S.: Optimizing stream programs using linear state space analysis. In: CASES (2005)Google Scholar
  16. 16.
    Trimaran Research Infrastructure (1999),
  17. 17.
    Hejlsberg, A., Wiltamuth, S., Golde, P.: C# Language Specification. Addison-Wesley Longman Publishing Co., Inc., Boston (2003)Google Scholar
  18. 18.
    Zibin, Y., Potanin, A., Ali, M., Artzi, S., Kieżun, A., Ernst, M.D.: Object and reference immutability using Java generics. In: ESEC/FSE 2007: Proceedings of the 11th European Software Engineering Conference and the 15th ACM SIGSOFT Symposium on the Foundations of Software Engineering, Dubrovnik, Croatia (2007)Google Scholar
  19. 19.
    Handle-C Language Overview (2004),
  20. 20.
    Najjar, W., Bohm, W., Draper, B., Hammes, J., Rinker, R., Beveridge, J., Chawathe, M., Ross, C.: High-level language abstraction for reconfigurable computing (2003)Google Scholar
  21. 21.
    Mencer, O., Hubert, H., Morf, M., Flynn, M.J.: Stream: Object-oriented programming of stream architectures using PAM-blox. In: FPL, pp. 595–604 (2000)Google Scholar
  22. 22.
    Gupta, S.: Spark: A high-level synthesis framework for applying parallelizing compiler transformations (2003)Google Scholar
  23. 23.
    Diniz, P.C., Hall, M.W., Park, J., So, B., Ziegler, H.E.: Bridging the gap between compilation and synthesis in the defacto system. In: Lecture Notes in Computer Science, pp. 52–70 (2001)Google Scholar
  24. 24.
    Guo, Z., Buyukkurt, B., Najjar, W., Vissers, K.: Optimized generation of data-path from c codes for fpgas. In: Design Automation Conference (2005)Google Scholar
  25. 25.
    Chu, M., Sulimma, K., Weaver, N., DeHon, A., Wawrzynek, J.: Object oriented circuit-generators in Java. In: Pocek, K.L., Arnold, J. (eds.) IEEE Symposium on FPGAs for Custom Computing Machines, pp. 158–166. IEEE Computer Society Press, Los Alamitos (1998)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Shan Shan Huang
    • 1
  • Amir Hormati
    • 2
  • David F. Bacon
    • 3
  • Rodric Rabbah
    • 3
  1. 1.Georgia Institute of Technology 
  2. 2.University of Michigan 
  3. 3.IBM Research 

Personalised recommendations