I. Introduction
Synchronous programming languages, such as Esterel, Lustre and Signal, have been proposed as means for the design of real-time systems which react to the environment (see for example [1], [2], [3]). These synchronous languages rely on synchronous hypothesis that computation and communication are “zero-time”, and a program can react to the external inputs instantaneously [4]. Synchronous languages offer numerous advantages in the real-world designs, simplifying specification, synthesis and verification, and providing the designers with ideal primitives [5]. However, the real-life architectures do not obey the ideal model of perfect synchrony, namely, “zero-time” computation and instantaneous broadcast communication [6]. Many systems such as industrial control systems are physically distributed and hence asynchronous [7]. In the hardware world, when the circuit size becomes large, maintaining global synchrony becomes quite expensive or infeasible [8]. Thus the synchronous hypothesis can not usually be satisfied, which leads to a disconnect between a synchronous design and its physical (non-synchronous) implementation.