Static scheduling of synchronous data flow programs for digital signal processing
IEEE Transactions on Computers
Synchronous programming with events and relations: the SIGNAL language and its semantics
Science of Computer Programming
Computers and Intractability: A Guide to the Theory of NP-Completeness
Computers and Intractability: A Guide to the Theory of NP-Completeness
Clock-directed modular code generation for synchronous data-flow languages
Proceedings of the 2008 ACM SIGPLAN-SIGBED conference on Languages, compilers, and tools for embedded systems
Modularity vs. reusability: code generation from synchronous block diagrams
Proceedings of the conference on Design, automation and test in Europe
Modular code generation from synchronous block diagrams: modularity vs. code size
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Processor virtualization and split compilation for heterogeneous multicore embedded systems
Proceedings of the 47th Design Automation Conference
An automated semantic-based approach for creating tasks from Matlab Simulink models
FMICS'11 Proceedings of the 16th international conference on Formal methods for industrial critical systems
Journal of Functional Programming - Dedicated to ICFP 2009
Design synthesis and optimization for automotive embedded systems
Proceedings of the 2014 on International symposium on physical design
Hi-index | 0.00 |
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 sub-systems 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 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, this paper presents a new symbolic encoding of the problem in terms of input/output relations. This encoding simplifies the problem, in the sense that it rejects 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 combinational 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 combinational search. 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.