Detection of harmful schizophrenic statements in esterel

In imperative synchronous languages, a statement is called schizophrenic if it is executed more than once in a single clock. When a schizophrenic statement is translated into a circuit, the circuit can behave abnormally because of the multiple executions. To solve the problems caused by schizophrenic statements, compilers duplicate the statements to avoid multiple executions. Esterel is an imperative synchronous language. Schizophrenic statements in Esterel are considered to occur due to the instantaneous reentrance of local signal declarations or parallel statements. However, if the corresponding circuit of a schizophrenic statement behaves normally, it is harmless and thus curing is not necessary. In this paper, we identify the conditions under which a schizophrenic statement of the Esterel program must be cured during circuit translation. We also propose an algorithm to detect schizophrenic statements that have to be cured on the control flow graphs (CFGs) of source codes. Our algorithm detects all schizophrenic statements that have to be cured and results in fewer false alarms on the benchmark programs used in the previous work. It is simple and based on the CFG of a program, implying that it can be merged into existing compilers easily.

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

[2]  Klaus Schneider,et al.  Using IP Cores in Synchronous Languages , 2009, MBMV.

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

[4]  Tobias Schüle,et al.  A Verified Compiler for Synchronous Programs with Local Declarations , 2006, SLAP@ETAPS.

[5]  Olivier Tardieu,et al.  Loops in Esterel: From Operational Semantics to Formally Specified Compilers , 2004 .

[6]  Stephen A. Edwards,et al.  Code Generation in the Columbia Esterel Compiler , 2007, EURASIP J. Embed. Syst..

[7]  Albert Benveniste,et al.  The synchronous approach to reactive and real-time systems , 1991 .

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

[9]  Klaus Schneider,et al.  Separate compilation for synchronous programs , 2009, SCOPES.

[10]  Robert de Simone,et al.  Loops in esterel , 2005, TECS.

[11]  Florence Maraninchi,et al.  Argos: an automaton-based synchronous language , 2001, Comput. Lang..

[12]  Klaus Schneider,et al.  The Synchronous Programming Language Quartz , 2009 .

[13]  Simone Tini,et al.  An axiomatic semantics for Esterel , 2001, Theor. Comput. Sci..

[14]  Taisook Han,et al.  Over-Approximated Control Flow Graph Construction on Pure Esterel , 2010, IEICE Trans. Inf. Syst..

[15]  Olivier Tardieu,et al.  A deterministic logical semantics for pure Esterel , 2007, TOPL.

[16]  Stephen A. Edwards,et al.  Compiling Esterel , 2007 .

[17]  Sharad Malik Analysis of cyclic combinational circuits , 1994, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[18]  Leon Stok,et al.  False loops through resource sharing , 1992, ICCAD '92.

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

[20]  Klaus Schneider,et al.  Efficient code generation from synchronous programs , 2006, Fourth ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2006. MEMOCODE '06. Proceedings..

[21]  Gérard Berry,et al.  Preemption in Concurrent Systems , 1993, FSTTCS.

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

[23]  Jeong-Han Yun,et al.  Detecting schizophrenia in imperative synchronous languages = 절차형 동기언어 컴파일시 회로 재사용에 의한 문제점 검증 , 2011 .

[24]  M. Shams Asynchronous Circuits , 2005 .

[25]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[26]  Klaus Schneider,et al.  Separate compilation and execution of imperative synchronous modules , 2009, 2009 Design, Automation & Test in Europe Conference & Exhibition.

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

[28]  Jehoshua Bruck,et al.  Cyclic Boolean circuits , 2012, Discret. Appl. Math..

[29]  Leszek Holenderski,et al.  Boolean automata for implementing pure Esterel , 1995 .

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

[31]  Taisook Han,et al.  Refining schizophrenia via graph reachability in Esterel , 2009, 2009 7th IEEE/ACM International Conference on Formal Methods and Models for Co-Design.

[32]  Gérard Berry,et al.  Circuit design and verication with Esterel v7 and Esterel Studio , 2007, 2007 IEEE International High Level Design Validation and Test Workshop.

[33]  Robert de Simone,et al.  Optimizations for faster execution of Esterel programs , 2003, First ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2003. MEMOCODE '03. Proceedings..

[34]  A. Sangiovanni-Vincentelli,et al.  Formal analysis of synchronous circuits , 1996 .

[35]  Nicolas Halbwachs,et al.  Synchronous Programming of Reactive Systems , 1992, CAV.

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