We have previously shown that non-uniform Cellular Automata (CA) can be evolved to perform computational tasks, using the cellular programming evolutionary algorithm. In this paper we focus on two novel issues, namely the evolution of asynchronous CAs, and the fault tolerance of our evolved systems. We find that asynchrony presents a more difficult case for evolution though good CAs can still be attained. We show that our evolved systems exhibit graceful degradation in performance, able to tolerate a certain level of faults. Our motivation for this study stems in part by our desire to attain realistic systems that are more amenable to implementation as 'evolving ware', evolware.