Handshake Circuits An Asynchronous Architecture For Vlsi Programming Cambridge International Series On Parallel Computation