Challenges in Hardware Design