Sooner or later, it all comes down to hardware. It's best kept synchronous if possible. Otherwise, it's necessary to synchronize, which is provably unreliable in finite time. The problem comes down to making a call in a race condition. In general, you need an amplifier to magnify small differences. And, you need to give that amplifier time to work. The more gain, the less time, so gain is good. Even with lots of gain, though, there remains the possibility of a race so close that any real circuit will fail to synchronize. That's called SynchronizerFailure. Here are a few failures I'm familiar with... * MikesSonaleartDemo * RogersDiskController * [Multibus] MemoryCardsHadBugs * SpaceShuttleLaunchComputers MeadAndConway discuss this briefly. It's a good thing too, because they propose building almost everything with latches. The trouble with latches is there is no gain in front of the memory, so synchronization is impossible. They make up for it by describing the Muller-C element that self-synchronizes by waiting as long as necessary. Real designers use FlipFlops. ---- Do you have more information on this Space Shuttle failure? The two major failures I saw on TV were both bad judgement calls by humans on the ground, having nothing to do with any computer - see LetTheHumanPullTheTrigger. (A trivial error is described in WhyTheShuttleIsLeftHanded; but it doesn't seem to have anything to do with synchronization either.) ---- ''I've also heard it called the "Metastability problem". -- DavidCary'' "the metastable state is the bane of asynchronous digital systems." A good explanation of the (surprising) problems this causes in asynchronous circuits (and why it is not a problem in clocked circuits) is in the book ''ComputationStructures'' by Ward and Halstead (section 4.6). However, entire asynchronous microprocessors have been fabbed. (One can execute ARM MachineCode). Designing asynchronous logic is a bit tricky, but ClocklessLogic does have some advantages. ''Is there a better wiki for chatting about CPU design, FpgaCpu''''''s, etc? -- DavidCary''