Skip to main content

Removing Cycles in Esterel Programs

Abstract

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]

References

  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

    Article  Google Scholar 

  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

    Article  MATH  Google Scholar 

  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

    Article  Google Scholar 

  4. 4.

    Berry G: The Constructive Semantics of Pure Esterel. draft Book, 1999, ftp://ftp-sop.inria.fr/esterel/pub/papers/constructiveness3.ps

  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, ftp://ftp-sop.inria.fr/esterel/pub/papers/primer.pdf Centre de Mathématiques Appliquées Ecole des Mines and INRIA, 06565 Sophia-Antipolis, 2000,

  6. 6.

    Esterel.org, Esterel history, http://www-sop.inria.fr/esterel.org/Html/History/History.htm

  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

    Article  Google Scholar 

  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.

    Google Scholar 

  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

    Article  MATH  Google Scholar 

  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.

    Google Scholar 

  11. 11.

    Berry G, Bouali A, Bres Y, et al.: The Esterel v5_91 System Manual. INRIA, June 2000, http://www-sop.inria.fr/esterel.org/

  12. 12.

    CEC: The Columbia Esterel Compiler http://www1.cs.columbia.edu/~sedwards/cec/

  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

    Article  Google Scholar 

  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

    Article  Google Scholar 

  15. 15.

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

    Google Scholar 

  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

    Google Scholar 

  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.

    Google Scholar 

  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.

    Google Scholar 

  19. 19.

    Lukoschus J: Removing cycles in Esterel programs, Ph.D. thesis. Department of Computer Science, Christian-Albrechts-Universität Kiel, Kiel, Germany; 2006. http://e-diss.uni-kiel.de/tech-fak.html

    Google Scholar 

  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.

    Google Scholar 

  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

    Google Scholar 

  22. 22.

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

    Google Scholar 

  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

    Google Scholar 

  24. 24.

    Estbench Esterel Benchmark Suite http://www1.cs.columbia.edu/~sedwards/software/estbench-1.0.tar.gz

  25. 25.

    Esterel web, http://www-sop.inria.fr/esterel.org/

  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

    Article  Google Scholar 

  27. 27.

    Esterel Technologies Company homepage, http://www.esterel-technologies.com/

  28. 28.

    Free Software Foundation : GCC—The GNU Compiler Collection. http://gcc.gnu.org/

Download references

Author information

Affiliations

Authors

Corresponding author

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 (https://creativecommons.org/licenses/by/2.0), 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). https://doi.org/10.1155/2007/48979

Download citation

Keywords

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