High Performance Memory Testing: Design Principles, Fault Modeling and Self-Test (Frontiers in Electronic Testing)