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