The predominant synchronization technique in hardware design today is the utilisation of a global clock whose transitions define the points in time when communication transactions between components can take place. This synchronous approach however has reached a critical point, with clock distribution becoming a costly and complicated issue. As VLSI technology advances and systems become larger, faster and more complex, timing problems become increasingly severe and account for more and more of the design and debugging expense. Increased clock speeds make on-chip clock skew significant and inter-chip skew a major problem.
Thus, the last decade has witnessed an explosion of interest in asynchronous design techniques, which do not rely on global clocks but achieve synchronization by means of localized handshake synchronization protocols between the communicating subsystems. These protocols are typically in the form of local request and acknowledge signals, which provide information regarding the validity of data signals. An example of such a protocol is the (two-phase bundled data) handshake synchronisation protocol illustrated in the figure below:
