Virtual Hardware Prototyping Through Timed Hardware-Software Co-Simulation