A Designer's Guide to Asynchronous VLSI