hardware design software overview