Transparently Checkpointing Software Test Benches to Improve Productivity of SoC Verification in an Emulation Environment