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]  G. Plotkin,et al.  Proof, language, and interaction: essays in honour of Robin Milner , 2000 .

[2]  Walid Dabbous,et al.  Generating efficient protocol code from an abstract specification , 1997, TNET.

[3]  Olivier Tardieu,et al.  Goto and Concurrency Introducing Safe Jumps in Esterel , 2006, SLAP@ETAPS.

[4]  François Bourdoncle,et al.  Efficient chaotic iteration strategies with widenings , 1993, Formal Methods in Programming and Their Applications.

[5]  Frédéric Boussinot,et al.  SugarCubes Implementation of Causality , 1998 .

[6]  Thomas R. Shiple,et al.  Constructive analysis of cyclic circuits , 1996, Proceedings ED&TC European Design and Test Conference.

[7]  Gérard Berry,et al.  The constructive semantics of pure esterel , 1996 .

[8]  K. Schneider,et al.  A new method for compiling schizophrenic synchronous programs , 2001, CASES '01.

[9]  P. R. Stephan,et al.  SIS : A System for Sequential Circuit Synthesis , 1992 .

[10]  Paritosh K. Pandya,et al.  The Saga of Synchronous Bus Arbiter: On Model Checking Quantitative Timing Properties of Synchronous Programs , 2002, SLAP@ETAPS.

[11]  Stephen A. Edwards,et al.  Making cyclic circuits acyclic , 2003, Proceedings 2003. Design Automation Conference (IEEE Cat. No.03CH37451).

[12]  Xin Li,et al.  Mapping esterel onto a multi-threaded embedded processor , 2006, ASPLOS XII.

[13]  Klaus Schneider,et al.  Improving Constructiveness in Code Generators , 2005 .

[14]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[15]  Stephen A. Edwards,et al.  An Esterel compiler for large control-dominated systems , 2002, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[16]  Partha S. Roop,et al.  Compiling Esterel for Distributed Execution , 2006 .

[17]  Pascal Raymond,et al.  The synchronous data flow programming language LUSTRE , 1991, Proc. IEEE.

[18]  Michel Poize,et al.  SAXO-RT: Interpreting Esterel Semantic on a Sequential Execution Structure , 2002, SLAP@ETAPS.

[19]  Luciano Lavagno,et al.  Synthesis of software programs for embedded control applications , 1999, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[20]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[21]  Stephen A. Edwards,et al.  The synchronous languages 12 years later , 2003, Proc. IEEE.

[22]  Sharad Malik,et al.  Analysis of cyclic combinational circuits , 1993, ICCAD '93.

[23]  Stephen A. Edwards,et al.  The Synchronous Languages Twelve Years Later , 1997 .

[24]  Stephen A. Edwards,et al.  The semantics and execution of a synchronous block-diagram language , 2003, Sci. Comput. Program..