FAULT MODELING, DESIGN-FOR-TEST, AND FAULT TOLERANCE FOR MACHINE LEARNING HARDWARE