hardware design process