## Section: New Results

### Automatic Distribution of Synchronous Programs

Participants : Gwenaël Delaval [contact person] , Alain Girault, Gregor Goessler, Xavier Nicollin, Gideon Smeding.

#### Modular Distribution

Synchronous programming languages describe functionally centralized
systems, where every value, input, output, or function is always
directly available for every operation. However, most embedded systems
are nowadays composed of several computing resources. The aim of this
work is to provide a language-oriented solution to describe
*functionally distributed reactive systems*. This research is
conducted within the INRIA large scale action Synchronics and
is a joint work with Marc Pouzet (ENS, Parkas team from Rocquencourt)
and Xavier Nicollin (Grenoble INP, Verimag lab).

We are working on type systems to formalize, in a uniform way, both
the clock calculus and the location calculus of a synchronous
data-flow programming language (the Heptagon language, inspired from
Lucid Synchrone [45] ). On one hand, the clock
calculus infers the clock of each variable in the program and checks
the clock consistency: e.g., a time-homogeneous function, like
`+` , should be applied to variables with identical clocks. On
the other hand, the location calculus infers the spatial distribution
of computations and checks the spatial consistency: e.g., a
centralized operator, like `+` , should be applied to
variables located at the same location. Compared to the PhD
of Gwenaël Delaval [55] , [56] , the goal is to
achieve *modular* distribution. By modular, we mean that we want
to compile each function of the program into a single function capable
of running on any computing location. We make use of our uniform type
system to express the computing locations as first-class abstract
types, exactly like clocks, which allows us to compile a typed
variable (typed by both the clock and the location calculi) into
`if ... then ... else ...` structures, whose conditions will be
valuations of the clock and location variables.

We currently work on an example of software-defined radio. We have shown on this example how to use a modified clock calculus to describe the localisation of values as clocks, and the architecture as clocks (for the computing resources) and their relations (for communication links).

#### Distribution of Synchronous Programs under Real-Time Constraints

With the objective to distribute synchronous data-flow programs (e.g. LUSTRE) over GALS architectures, preserving only explicitly specified properties, we have developed a quantitative clock calculus to (1) describe timing properties of the architecture's clock domain, and (2) describe the properties of the synchronous program to be preserved. The clock calculus is inspired by the network calculus [83] , with the difference that clocks are described only with respect to one-another, not with respect to real-time.

As a first result, we have applied our clock calculus to analyze the properties of periodic synchronous data-flow programs executed on a network of processors. Because our clock calculus is relational, it can model and preserve correlated variations of streams. In particular, the common case of a data-flow system that splits a stream for separate treatment, and joins them afterwards, this analysis yields more precise result than comparable methods.

We aim to extend the analysis to account for shared resources and synchronization protocols, so as to distribute synchronous programs preserving specified properties.