Why aren't fully asynchronous circuits more prevalent?

I spent some years in a startup commercialising async design technology, so I'm familiar with the reasons:

  • async isn't intrinsically faster. The worst-case path delay remains the same. It's just that sometimes you get to take advantage of a faster path executing.

  • async has overhead of completion detection too.

  • Design tools. This is the really big one: there isn't really a full async "flow" of tools available to the same quality as synchronous design.

  • Training. You'd effectively have to retrain all your designers on the new paradigm and tools.

  • Risk and conservativism. So much of the industry is "produce something similar to the last one, but a bit different". This has a very high chance of working. Companies are much more reluctant to build something totally different since it has much more chance of being a total writeoff costing tens of millions of dollars.


It is very tempting to design asynchronous integrated circuits. The other answers already cover many reasons to think twice before doing it. Here is one more:

IC development is not finished with the design. Verification and test are equally important. Not only the design tools are very advanced for synchronous circuits, but it is the same with simulation tools and test equipment.

Verification

It is not sufficient to have the circuits working at lab conditions. They need to be robust with respect to the operating voltage (V) range, the operating temperature (T) range, and the variation due to the manufacturing process (P). For synchronous logic this can be guaranteed with the help of static timing analysis. The circuit is broken down to all timing paths, from flip-flop to flip-flop. Setup and hold times are checked for every single timing path, and for different combinations of P, T, and V. These PTV combinations are the so called simulation corners.

A similar verification could be done for asynchronous circuits, but it is much more difficult and much less supported by the design tools. It also restricts the designer to asynchronous constructs that actually can be verified. There is no reliable verification for arbitrary asynchronous circuits.

Test

Similar difficulties are there when it comes to testing the hardware. Testing synchronous logic is fully supported by testing standards and equipment. Testing asynchronous circuits not only is more complicated, but because of the lack of timing abstraction, it is not even sufficient to prove that the circuit will work for all PTV corners. The circuit could fail due to race conditions at some PTV combination, that is not covered by the corners.

Summary

IC designers have not given up the asynchronous paradigm, but asynchronous logic comes with heavy disadvantages during verification and validation. In an industrial context, asynchronous IC design needs to be restricted to construct that can be proven to work over the whole parameter space of process variation, as well as the operating ranges for temperature and voltage.

The so called "Locally synchronous globally asynchronous" design is one way to get more benefits and less disadvantages of both timing paradigms.