Large applications are often highly heterogeneous, with synchronous and asynchronous, discrete and continuous, hardware and software components, and with multiple clock domains. A uniform framework aids the development of new methods and tools for the design and analysis of heterogeneous systems. For example, a uniform framework supports the asynchronous interaction of synchronous domains, or the implementation of asynchronous protocols using synchronous circuits.