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