Digital Systems Testing & Testable Design