Skip to main content


Code Generation in the Columbia Esterel Compiler

Article metrics

  • 1285 Accesses

  • 8 Citations


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.

[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]


  1. 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.805826

  2. 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-V

  3. 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.

  4. 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.

  5. 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.762489

  6. 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.

  7. 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.24041

  8. 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.

  9. 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.

  10. 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.

  11. 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.980257

  12. 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.

  13. 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.115320

  14. 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.

  15. 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.

  16. 16.

    Steensgaard B: Sequentializing program dependence graphs for irreducible programs. In Tech. Rep. MSR-TR-93-14. Microsoft, Redmond, Wash, USA; 1993.

  17. 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

  18. 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.

  19. 19.

    Banks J, Carson JS, Nelson BL, Nicol DM: Discrete-Event System Simulation. 3rd edition. Prentice-Hall, Upper Saddle River, NJ, USA; 2000.

  20. 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-8

  21. 21.

    Muchnick SS: Advanced Compiler Design and Implementation. Morgan Kaufmann, San Francisco, Calif, USA; 1997.

  22. 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 Machinery

  23. 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):

  24. 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/BF00134683

  25. 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.

  26. 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.

  27. 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.

  28. 28.

    Berry G: Esterel on hardware. Philosophical Transactions of the Royal Society of London. Series A 1992, 339: 87-103. 10.1098/rsta.1992.0027

  29. 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 Machinery

  30. 30.

    Potop-Butucaru D: Optimizing for Faster Simulation of Esterel Programs, Ph.D. thesis. INRIA, Sophia-Antipolis, France; 2002.

  31. 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.

  32. 32.

    Barron DW (Ed): Pascal: The Language and Its Implementation. John Wiley & Sons, New York, NY, USA; 1981.

  33. 33.

    Goldberg A, Robson D: Smalltalk-80: The Language and Its Implementation. Addison-Wesley, Reading, Mass, USA; 1983.

  34. 34.

    Smith JE, Nair R: Virtual Machines. Morgan Kaufmann, San Francisco, Calif, USA; 2005.

  35. 35.

    Lukoschus J: Removing cycles in Esterel programs, Ph.D. thesis. Department of Computer Science, Christian-Albrechts-Universität Kiel, Kiel, Germany; 2006.

  36. 36.

    Berry G: The constructive semantics of pure Esterel. draft book, 1999

  37. 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.

Download references

Author information

Correspondence to Stephen A Edwards.

Rights and permissions

Open Access This article is distributed under the terms of the Creative Commons Attribution 2.0 International License (, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Reprints and Permissions

About this article


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