A System-Level Approach To Fault And Variation Resilience In Multi-Core Die