1. A boot method for synchronizing a real microcontroller and a virtual microcontroller of an In-Circuit Emulation system in lock-step, comprising: in the real microcontroller, executing a set of boot code to carry out initialization; in the virtual microcontroller, executing a set of timing code to enable a lock-step synchronization with the real microcontroller, wherein the set of timing code is a dummy code timed to take the same number of clock cycles as the real microcontroller uses to execute the set of boot code, wherein the set of timing code is functionally different from the set of boot code, and wherein the set of boot code is stored within the real microcontroller and the set of boot code is inaccessible to the virtual microcontroller; simultaneously halting both the real microcontroller and the virtual microcontroller; and restarting the real microcontroller and the virtual microcontroller to execute instructions in lock-stepped synchronization.