Addressing the Challenges of Synchronization/Communication and Debugging Support in Hardware/Software Cosimulation