Skip to content


  • Research Article
  • Open Access

Code Generation in the Columbia Esterel Compiler

EURASIP Journal on Embedded Systems20072007:052651

  • Received: 1 June 2006
  • Accepted: 18 December 2006
  • Published:


The synchronous language Esterel provides deterministic concurrency by adopting a semantics in which threads march in step with a global clock and communicate in a very disciplined way. Its expressive power comes at a cost, however: it is a difficult language to compile into machine code for standard von Neumann processors. The open-source Columbia Esterel Compiler is a research vehicle for experimenting with new code generation techniques for the language. Providing a front-end and a fairly generic concurrent intermediate representation, a variety of back-ends have been developed. We present three of the most mature ones, which are based on program dependence graphs, dynamic lists, and a virtual machine. After describing the very different algorithms used in each of these techniques, we present experimental results that compares twenty-four benchmarks generated by eight different compilation techniques running on seven different processors.


  • Virtual Machine
  • Code Generation
  • Control Structure
  • Generation Technique
  • Dependence Graph

[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37]

Authors’ Affiliations

Department of Computer Science, Columbia University, New York, NY 10027, USA


  1. Benveniste A, Caspi P, Edwards SA, Halbwachs N, Le Guernic P, de Simone R: The synchronous languages 12 years later. Proceedings of the IEEE 2003,91(1):64-83. 10.1109/JPROC.2002.805826View ArticleGoogle Scholar
  2. Berry G, Gonthier G: The Esterel synchronous programming language: design, semantics, implementation. Science of Computer Programming 1992,19(2):87-152. 10.1016/0167-6423(92)90005-VView ArticleMATHGoogle Scholar
  3. Benveniste A, Le Guernic P, Jacquemot C: The SIGNAL software environment for real-time system specification, design, and implementation. Proceedings of IEEE Control Systems Society Workshop on Computer-Aided Control System Design (CACSD '89), December 1989, Tampa, Fla, USA 41-49.View ArticleGoogle Scholar
  4. Caspi P, Pilaud D, Halbwachs N, Plaice JA: LUSTRE: a declarative language for programming synchronous systems. Proceedings of the Symposium on Principles of Programming Languages (POPL '87), January 1987, Munich, Germany 178-188.Google Scholar
  5. Edwards SA: Tutorial: compiling concurrent languages for sequential processors. ACM Transactions on Design Automation of Electronic Systems 2003,8(2):141-187. 10.1145/762488.762489View ArticleGoogle Scholar
  6. Nácul AC, Givargis T: Code partitioning for synthesis of embedded applications with phantom. Proceedings of IEEE/ACM International Conference on Computer-Aided Design (ICCAD '04), November 2004, San Jose, Calif, USA 190-196.Google Scholar
  7. Ferrante J, Ottenstein KJ, Warren JD: The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems 1987,9(3):319-349. 10.1145/24039.24041View ArticleMATHGoogle Scholar
  8. Li X, von Hanxleden R: A concurrent reactive Esterel processor based on multi-threading. Proceedings of the 21st Annual ACM Symposium on Applied Computing (SAC '06), April 2006, Dijon, France 1: 912-917.Google Scholar
  9. Roop PS, Salcic Z, Sajeewa Dayaratne MW: Towards direct execution of Esterel programs on reactive processors. Proceedings of the 4th ACM International Conference on Embedded Software (EMSOFT '04), September 2004, Pisa, Italy 240-248.View ArticleGoogle Scholar
  10. Potop-Butucaru D: Optimizations for faster execution of Esterel programs. Proceedings of the 1st International Conference on Formal Methods and Models for Codesign (MEMOCODE '03), June 2003, Mont St. Michel, France 227-236.Google Scholar
  11. Edwards SA: An Esterel compiler for large control-dominated systems. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 2002,21(2):169-183. 10.1109/43.980257View ArticleGoogle Scholar
  12. Berry G: Preemption in concurrent systems. Proceedings of the 13th Conference on Foundations of Software Technology and Theoretical Computer Science, December 1993, Bombay, India, Lecture Notes in Computer Science 761: 72-93.View ArticleGoogle Scholar
  13. Cytron R, Ferrante J, Rosen BK, Wegman MN, Zadeck FK: Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems 1991,13(4):451-490. 10.1145/115372.115320View ArticleGoogle Scholar
  14. Simons B, Ferrante J: An effficient algorithm for constructing a control flow graph for parallel code. In Tech. Rep. TR-03.465. IBM, Santa Teresa Laboratory, San Jose, Calif, USA; 1993.Google Scholar
  15. Ferrante J, Mace M, Simons B: Generating sequential code from parallel code. Proceedings of the 2nd International Conference on Supercomputing (ICS '88), July 1988, Saint Malo, France 582-592.View ArticleGoogle Scholar
  16. Steensgaard B: Sequentializing program dependence graphs for irreducible programs. In Tech. Rep. MSR-TR-93-14. Microsoft, Redmond, Wash, USA; 1993.Google Scholar
  17. Bertin V, Poize M, Pulou J: Une nouvelle méthode de compilation pour le language Esterel [A new method for compiling the Esterel language]. Proceedings of GRAISyHM-AAA, March 1999, Lille, France Google Scholar
  18. Weil D, Bertin V, Closse E, Poize M, Venier P, Pulou J: Efficient compilation of Esterel for realtime embedded systems. Proceedings of International Conference on Compilers, Architecture, and Synthesis for Embedded Systems (CASES '00), November 2000, San Jose, Calif, USA 2-8.View ArticleGoogle Scholar
  19. Banks J, Carson JS, Nelson BL, Nicol DM: Discrete-Event System Simulation. 3rd edition. Prentice-Hall, Upper Saddle River, NJ, USA; 2000.Google Scholar
  20. Closse E, Poize M, Pulou J, Venier P, Weil D: SAXO-RT: interpreting Esterel semantic on a sequential execution structure. Electronic Notes in Theoretical Computer Science 2002,65(5):864-878. in Proceedings of Synchronous Languages, Applications, and Programming (SLAP '02) 10.1016/S1571-0661(05)80443-8View ArticleGoogle Scholar
  21. Muchnick SS: Advanced Compiler Design and Implementation. Morgan Kaufmann, San Francisco, Calif, USA; 1997.Google Scholar
  22. Edwards SA: Compiling Esterel into sequential code. Proceedings of the 37th Design Automation Conference (DAC '00), June 2000, Los Angeles, Calif, USA 322-327. Association for Computing MachineryGoogle Scholar
  23. White D, Lüttgen G: Accessing databases within Esterel. In Synchronous Programming (SYNCHRON '04), 2005, Dagstuhl, Germany, Dagstuhl Seminar Proceedings Edited by: Edwards SA, Halbwachs N, Hanxleden RV, Stauner T. (04491):Google Scholar
  24. Chiodo M, Engels D, Giusto P, et al.: A case study in computer-aided co-design of embedded controllers. Design Automation for Embedded Systems 1996,1(1-2):51-67. 10.1007/BF00134683View ArticleGoogle Scholar
  25. Sentovich EM, Singh KJ, Lavagno L, et al.: SIS: a system for sequential circuit synthesis. In Tech. Rep. UCB/ERL M92/41. University of California, Berkeley, Calif, USA; 1992.Google Scholar
  26. Berry G, Cosserat L: The Esterel synchronous programming language and its mathematical semantics. In Seminar on Concurrency, 1984, Heidelberg, Germany, Lecture Notes in Computer Science Edited by: Brooks SD, Roscoe AW, Winskel G. 197: 389-448.Google Scholar
  27. Gonthier G: Sémantiques et modèles d'exécution des langages réactifs synchrones; application à Esterel. [Semantics and models of execution of the synchronous reactive languages: application to Esterel], Thèse d'informatique.Google Scholar
  28. Berry G: Esterel on hardware. Philosophical Transactions of the Royal Society of London. Series A 1992, 339: 87-103. 10.1098/rsta.1992.0027View ArticleGoogle Scholar
  29. Edwards SA: Compiling Esterel into sequential code. Proceedings of the 7th International Conference on Hardware/Software Codesign (CODES '99), May 1999, Rome, Italy 147-151. Association for Computing MachineryGoogle Scholar
  30. Potop-Butucaru D: Optimizing for Faster Simulation of Esterel Programs, Ph.D. thesis. INRIA, Sophia-Antipolis, France; 2002.Google Scholar
  31. Maurer PM: Event driven simulation without loops or conditionals. Proceedings of IEEE/ACM International Conference on Computer-Aided Design (ICCAD '00), November 2000, San Jose, Calif, USA 23-26.Google Scholar
  32. Barron DW (Ed): Pascal: The Language and Its Implementation. John Wiley & Sons, New York, NY, USA; 1981.MATHGoogle Scholar
  33. Goldberg A, Robson D: Smalltalk-80: The Language and Its Implementation. Addison-Wesley, Reading, Mass, USA; 1983.MATHGoogle Scholar
  34. Smith JE, Nair R: Virtual Machines. Morgan Kaufmann, San Francisco, Calif, USA; 2005.MATHGoogle Scholar
  35. Lukoschus J: Removing cycles in Esterel programs, Ph.D. thesis. Department of Computer Science, Christian-Albrechts-Universität Kiel, Kiel, Germany; 2006.Google Scholar
  36. Berry G: The constructive semantics of pure Esterel. draft book, 1999Google Scholar
  37. Edwards SA, Tardieu O: Efficient code generation from SHIM models. Proceedings of the ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES '06), June 2006, Ottawa, Ontario, Canada 2006: 125-134.Google Scholar


© S. A. Edwards and J. Zeng. 2007

This article is published under license to BioMed Central Ltd. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.