Design Automation for Digital Systems