High Performance Memory Testing Design Principles Fault Modeling And Selftest