Skip to main content


Removing Cycles in Esterel Programs


Esterel belongs to the family of synchronous programming languages, which are affected by cyclic signal dependencies. This prohibits a static scheduling, limiting the choice of available compilation techniques for programs with such cycles. This work proposes an algorithm that, given a constructive synchronous Esterel program, performs a semantics-preserving source code level transformation that removes cyclic signal dependencies. The transformation is divided into two parts: detection of cycles and iterative resolution of these cycles. It is based on the replacement of cycle signals by a signal expression involving no other cycle signals, thereby breaking the cycle. This transformation of cyclic Esterel programs enables the use of efficient compilation techniques, which are only available for acyclic programs. Furthermore, experiments indicate that the code transformation can even improve code quality produced by compilers that can already handle cyclic programs.

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


  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. special issue on Embedded Systems 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.

    Halbwachs N, Caspi P, Raymond P, Pilaud D: The synchronous data flow programming language LUSTRE. Proceedings of the IEEE 1991,79(9):1305-1320. 10.1109/5.97300

  4. 4.

    Berry G: The Constructive Semantics of Pure Esterel. draft Book, 1999,

  5. 5.

    Berry G: The Esterel v5 Language Primer, Version v5_91. Centre de Mathématiques Appliquées Ecole des Mines and INRIA, 06565 Sophia-Antipolis, 2000, Centre de Mathématiques Appliquées Ecole des Mines and INRIA, 06565 Sophia-Antipolis, 2000,

  6. 6., Esterel history,

  7. 7.

    Pandya P: The saga of synchronous bus arbiter: on model checking quantitative timing properties of synchronous programs. Electronic Notes in Theoretical Computer Science 2002,65(5):894-908. 10.1016/S1571-0661(05)80445-1

  8. 8.

    Lukoschus J, von Hanxleden R: Removing cycles in Esterel programs. In Proceedings of International Workshop on Synchronous Languages, Applications and Programming (SLAP '05), April 2005, Edinburgh, Scotland, UK Edited by: Maraninchi F, Pouzet M, Roy V.

  9. 9.

    Malik S: Analysis of cyclic combinational circuits. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 1994,13(7):950-956. 10.1109/43.293952

  10. 10.

    Shiple TR, Berry G, Touati H: Constructive analysis of cyclic circuits. Proceedings of European Design and Test Conference (ED&TC '96), March 1996, Paris, France 328-333.

  11. 11.

    Berry G, Bouali A, Bres Y, et al.: The Esterel v5_91 System Manual. INRIA, June 2000,

  12. 12.

    CEC: The Columbia Esterel Compiler

  13. 13.

    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

  14. 14.

    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. 10.1016/S1571-0661(05)80443-8

  15. 15.

    Potop-Butucaru D: Optimizations for faster simulation of Esterel programs, Ph.D. thesis. Ecole des Mines de Paris, Paris, France; 2002.

  16. 16.

    Yoong LH, Roop P, Salcic Z: Compiling Esterel for distributed execution. Proceedings of International Workshop on Synchronous Languages, Applications, and Programming (SLAP '06), March-April 2006, Vienna, Austria

  17. 17.

    Li X, Boldt M, von Hanxleden R: Mapping Esterel onto a multi-threaded embedded processor. Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '06), October 2006, San Jose, Calif, USA 303-314.

  18. 18.

    Edwards SA: Making cyclic circuits acyclic. In Proceedings of the 40th Design Automation Conference (DAC '03), June 2003, Anaheim, Calif, USA. ACM Press; 159-162.

  19. 19.

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

  20. 20.

    Schneider K, Wenz M: A new method for compiling schizophrenic synchronous programs. In Proceedings of International Conference on Compilers, Architecture, and Synthesis for Embedded Systems (CASES '01), November 2001, Atlanta, Ga, USA. ACM; 49-58.

  21. 21.

    Tardieu O: Goto and concurrency introducing safe jumps in Esterel. Proceedings of the 3rd International Workshop on Synchronous Languages, Applications, and Programs (SLAP '04), March 2004, Barcelona, Spain

  22. 22.

    Boussinot F: SugarCubes implementation of causality. In Research Report RR-3487. INRIA, Le Chesnay Cedex, France; 1998.

  23. 23.

    Schneider K, Brandt J, Schüele T, Tüerk T: Improving constructiveness in code generators. Proceedings of International Workshop on Synchronous Languages, Applications and Programming (SLAP '05), April 2005, Edinburgh, Scotland, UK

  24. 24.

    Estbench Esterel Benchmark Suite

  25. 25.

    Esterel web,

  26. 26.

    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

  27. 27.

    Esterel Technologies Company homepage,

  28. 28.

    Free Software Foundation : GCC—The GNU Compiler Collection.

Download references

Author information

Correspondence to Jan Lukoschus.

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

Cite this article

Lukoschus, J., von Hanxleden, R. Removing Cycles in Esterel Programs. J Embedded Systems 2007, 048979 (2007).

Download citation


  • Source Code
  • Programming Language
  • Control Structure
  • Signal Expression
  • Electronic Circuit