Digital Systems Testing And Testable Design by Arthur D. Friedman & Melvin A. Breuer