Abstract:
Programs written in the synchronous programming language Esterel may
contain statically cyclic dependencies of signals, which inhibits the
application of certain compilation approaches that rely on static
scheduling. This presentation proposes several alternative methods for
handling such cycles in an efficient manner.
The first approach evaluates cyclic dependencies at runtime using dynamic scheduling, which is compiler specific and relatively inefficient. The second approach is to partially evaluate the cyclic dependencies at compile time, and to generate code in which the cyclic dependencies are resolved. This promises to be more efficient, however, it still is compiler specific. The third approach is again based on partial evaluation, but instead of performing it as a synthesis step, it breaks the cycles at the source code level, as part of a preprocessor which rewrites the cyclic dependent parts of the program into acyclic ones. This allows the subsequent use of a compiler that cannot handle (true or false) cycles; the same approach could be used for other synchronous languages as well.