A Survey of Lifetime Reliability-Aware System-Level Design Techniques for Embedded Multiprocessor Systems