hardware prototyping stages explained