Each part of a self-timed system starts work as soon as all its inputs are available, taking whatever time it needs to do its job and signaling when it is done. Each part waits for its predecessors to finish. The parts operate concurrently but not synchronously. Self-timed systems use local timing signals rather than a global clock Self-timing eliminates the rigidity and energy consumption of a global clock. Self-timed systems operate over a wide range of power supply voltage. They automatically go slower at reduced voltage, saving energy both from lower voltage and from reduced speed. Their power-saving properties are making them increasingly attractive. The design challenge posed by self-timing is the subject of this tutorial. Self-timed systems need the usual proofs of logical correctness. In addition, because they can take advantage of average rather than worst-case delay, analysis of circuit delay based on data statistics will be important. Of course, it's essential to check the timing of local signals, but commercial timing tools all check timing against a global “clock” signal that's absent from self-timed systems. Instead, self-timing focuses attention on the relative timing of pairs of signals. Self-timed systems pose all the elusive problems of concurrency: deadlock, non-determinism, and arbitration.