The semantics and execution of a synchronous block-diagram language

We present a new block diagram language for describing synchronous software. It coordinates the execution of synchronous, concurrent software modules, allowing real-time systems to be assembled from precompiled blocks specified in other languages. The semantics we present, based on fixed points, is deterministic even in the presence of instantaneous feedback. The execution policy develops a static schedule--a fixed order in which to execute the blocks that makes the system execution predictable.We present exact and heuristic algorithms for finding schedules that minimize system execution time, and show that good schedules can be found quickly. The scheduling algorithms are applicable to other problems where large systems of equations need to be solved.

[1]  Albert Benveniste,et al.  Compositionality in Dataflow Synchronous Languages: Specification and Distributed Code Generation , 2000, Inf. Comput..

[2]  Christopher Strachey,et al.  Toward a mathematical semantics for computer languages , 1971 .

[3]  Gérard M. Baudet,et al.  Asynchronous Iterative Methods for Multiprocessors , 1978, JACM.

[4]  P. Le Guernic,et al.  Hybrid dynamical systems theory and the Signal language , 1990 .

[5]  Nicolas Halbwachs,et al.  Generating Efficient Code From Data-Flow Programs , 1991, PLILP.

[6]  Robert D. Tennent,et al.  Semantics of programming languages , 1991, Prentice Hall International Series in Computer Science.

[7]  Olivier Coudert,et al.  Verification of Synchronous Sequential Machines Based on Symbolic Execution , 1989, Automatic Verification Methods for Finite State Systems.

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

[9]  Nicolas Halbwachs,et al.  LUSTRE: a declarative language for real-time programming , 1987, POPL '87.

[10]  Carl A. Gunter Semantics of programming languages: structures and techniques , 1993, Choice Reviews Online.

[11]  Edward A. Lee,et al.  Ptolemy: A Mixed-Paradigm Simulation/Prototyping Platform in C , 1991 .

[12]  Ellen Sentovich,et al.  An Implementation of Constructive Synchronous Programs in POLIS , 2000, Formal Methods Syst. Des..

[13]  C. Ratel,et al.  Generating Eecient Code from Data-flow Programs , 1991 .

[14]  P. Caspi,et al.  Distributing reactive systems , 1994 .

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

[16]  Randal E. Bryant,et al.  Graph-Based Algorithms for Boolean Function Manipulation , 1986, IEEE Transactions on Computers.

[17]  Nicolas Halbwachs,et al.  LUSTRE: A declarative language for programming synchronous systems* , 1987 .

[18]  Thierry Gautier,et al.  Programming real-time applications with SIGNAL , 1991, Proc. IEEE.

[19]  Edward A. Lee,et al.  Static Scheduling of Synchronous Data Flow Programs for Digital Signal Processing , 1989, IEEE Transactions on Computers.

[20]  Luciano Lavagno,et al.  A Formal Specification Model for Hardware/Software Codesign , 1993 .

[21]  Jiawang Wei,et al.  Parallel Asynchronous Iterations of Least Fixed Points , 1993, Parallel Comput..

[22]  E.A. Lee,et al.  Synchronous data flow , 1987, Proceedings of the IEEE.

[23]  François Robert,et al.  Discrete iterations - a metric study , 1986, Springer series in computational mathematics.

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

[25]  Neil D. Jones,et al.  Program Flow Analysis: Theory and Application , 1981 .

[26]  Liz Sonenberg,et al.  Fixed Point Theorems and Semantics: A Folk Tale , 1982, Inf. Process. Lett..

[27]  Hans Bekic,et al.  Definable Operation in General Algebras, and the Theory of Automata and Flowcharts , 1984, Programming Languages and Their Definition.

[28]  Michel Dubois,et al.  Parallel asynchronous algorithms for discrete data , 1990, JACM.

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

[30]  Luciano Lavagno,et al.  Hardware-software co-design of embedded systems: the POLIS approach , 1997 .

[31]  Neil D. Jones,et al.  Program flow analysis - theory and applications , 1981, Prentice Hall software series.

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

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

[34]  Journal of the Association for Computing Machinery , 1961, Nature.

[35]  Glynn Winskel,et al.  The formal semantics of programming languages - an introduction , 1993, Foundation of computing series.

[36]  Randal E. Bryant,et al.  Efficient implementation of a BDD package , 1991, DAC '90.

[37]  G. Plotkin,et al.  Proof, language, and interaction: essays in honour of Robin Milner , 2000 .

[38]  Florence Maraninchi,et al.  Operational and Compositional Semantics of Synchronous Automaton Compositions , 1992, CONCUR.

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

[40]  András Frank,et al.  How to make a digraph strongly connected , 1981, Comb..

[41]  Gérard Berry,et al.  Esterel on hardware , 1992, Philosophical Transactions of the Royal Society of London. Series A: Physical and Engineering Sciences.

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

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

[44]  Paul Caspi,et al.  Automatic Distribution of Reactive Systems for Asynchronous Networks of Processors , 1999, IEEE Trans. Software Eng..

[45]  Patrick Cousot,et al.  Automatic synthesis of optimal invariant assertions: Mathematical foundations , 1977, Artificial Intelligence and Programming Languages.