Self-Healing Cellular Automata to Correct Soft Errors in Defective Embedded Program Memories