The Art of Hardware Architecture: Design Methods and Techniques for Digital Circuits