Unlocking speed, quality, and cost: how to optimize hardware development in an embedded software environment