Microelectronics: Analysis and Design