Skip to main content
Log in

Modular static scheduling of synchronous data-flow networks

An efficient symbolic representation

  • Published:
Design Automation for Embedded Systems Aims and scope Submit manuscript

Abstract

This paper addresses the question of producing modular sequential imperative code from synchronous data-flow networks. Precisely, given a system with several input and output flows, how to decompose it into a minimal number of classes executed atomically and statically scheduled without restricting possible feedback loops between input and output?

Though this question has been identified by Raymond in the early years of Lustre, it has almost been left aside until the recent work of Lublinerman, Szegedy and Tripakis. The problem is proven to be intractable, in the sense that it belongs to the family of optimization problems where the corresponding decision problem—there exists a solution with size c—is NP-complete. Then, the authors derive an iterative algorithm looking for solutions for c=1,2,… where each step is encoded as a satisfiability (SAT) problem.

Despite the apparent intractability of the problem, our experience is that real programs do not exhibit such a complexity. Based on earlier work by Raymond, the current paper presents a new encoding of the problem in terms of input/output relations. This encoding simplifies the problem, in the sense that it rejects some solutions, while keeping all the optimal ones. It allows, in polynomial time, (1) to identify nodes for which several schedules are feasible and thus are possible sources of combinatorial explosion; (2) to obtain solutions which in some cases are already optimal; (3) otherwise, to get a non trivial lower bound for c to start an iterative combinatorial search. The method has been validated on several industrial examples.

The solution applies to a large class of block-diagram formalisms based on atomic computations and a delay operator, ranging from synchronous languages such as Lustre or Scade to modeling tools such as Simulink.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Benveniste A, LeGuernic P, Jacquemot Ch (1991) Synchronous programming with events and relations: the SIGNAL language and its semantics. Sci Comput Program 16:103–149

    Article  MATH  MathSciNet  Google Scholar 

  2. Benveniste A, Le Guernic P, Aubry P (1997) Compositionality in dataflow synchronous languages: Specification & code generation. Technical Report R3310, INRIA, November 1997

  3. Biernacki D, Colaco J-L, Hamon G, Pouzet M (2008) Clock-directed modular code generation of synchronous data-flow languages. In: ACM international conference on languages, compilers, and tools for embedded systems (LCTES), Tucson, Arizona, June 2008

  4. Garey MR, Johnson DS (1979) Computers and intractability—a guide to the theory of NP-completeness. Freeman, New York

    MATH  Google Scholar 

  5. Gonthier G. (1988) Sémantiques et modèles d’exécution des langages réactifs synchrones. PhD thesis, Université Paris VI, Paris

  6. Halbwachs N, Caspi P, Raymond P, Pilaud D (1991) The synchronous dataflow programming language Lustre. Proc IEEE 79(9):1305–1320

    Article  Google Scholar 

  7. Halbwachs N, Raymond P, Ratel C (1991) Generating efficient code from data-flow programs. In: Third international symposium on programming language implementation and logic programming, Passau (Germany), August 1991

  8. Kahn G. (1974) The semantics of a simple language for parallel programming. In: IFIP 74 Congress. North-Holland, Amsterdam

  9. Lee EA, Messerschmitt DG (1987) Static scheduling of synchronous data flow programs for digital signal processing. IEEE Trans Comput 36(2)

  10. Leroy X (2009) The Objective Caml system release 3.11. Documentation and user’s manual. Technical report, INRIA

  11. Lublinerman R, Szegedy C, Tripakis S (2009) Modular code generation from synchronous block diagrams — modularity vs. code size. In: ACM principles of programming languages (POPL)

  12. Lublinerman R, Tripakis S (2008) Modularity vs. reusability: code generation from synchronous block diagrams. In: Design, automation and test in Europe (DATE’08)

  13. Pouzet M, Raymond P (2009) Modular static scheduling of synchronous data-flow networks: an efficient symbolic representation. In: ACM international conference on embedded software (EMSOFT’09), Grenoble, France, October 2009

  14. Raymond P (1988) Compilation séparée de programmes Lustre. Technical report, Projet SPECTRE, IMAG, juillet 1988

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Pascal Raymond.

Additional information

Revised and extended version of [13]. This work is supported by the SYNCHRONICS large scale initiative of INRIA.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Pouzet, M., Raymond, P. Modular static scheduling of synchronous data-flow networks. Des Autom Embed Syst 14, 165–192 (2010). https://doi.org/10.1007/s10617-010-9053-3

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10617-010-9053-3

Keywords

Navigation