Most of today's largest semiconductor devices are highly complex system on chip (SoC) designs, which means that they include one or more embedded processors. This indicates that software provides some of the key functionality of the chip. The system cannot be fully verified or validated without both hardware and software. However, software development generally takes more time and resources to develop than hardware. There is no way to meet time-to-market (TTM) requirements if software development cannot begin until the hardware design is complete. SoC projects must embrace earlier and faster development of software so that it can be co-verified with the final hardware design quickly as the final step before tape-out. This paper discusses the challenges and presents solutions using fast virtual prototypes.