Experience of computer architecture, hardware description languages (HDLs) and test-driven development are essential.