  We address the design of distributed systems with synchronous dataflow
programming languages. As modular design entails handling both architectural
and functional modularity, our first contribution is to extend an existing
synchronous dataflow programming language with primitives allowing the
description of a distributed architecture and the localization of some
expressions onto some processors. We also present a distributed semantics to
formalize the distributed execution of synchronous programs. Our second
contribution is to provide a type system, in order to infer the localization of
non-annotated values by means of type inference and to ensure, at compilation
time, the consistency of the distribution. Our third contribution is to provide
a type-directed projection operation to obtain automatically,from a centralized
typed program, the local program to be executed by each computing resource. The
type system as well as the automatic distribution mechanism has been fully
implemented in the compiler of an existing synchronous data-flow programming
language.
