A watchdog timer control using a gatekeeper in an In-Circuit Emulation system. The In-Circuit Emulation system has a microcontroller operating in lock-step synchronization with a virtual microcontroller. When a watchdog event occurs, the gatekeeper, forming a part of the virtual microcontroller, crowbars the reset line of the virtual microcontroller as well as the real microcontroller. This freezes the state of the virtual microcontroller so that debug operations can be carried out. The gatekeeper operates with its own gatekeeper clock independent of the microcontroller clock. When a watchdog event occurs, the gatekeeper clock is rerouted to the virtual microcontroller to facilitate debug operations of the virtual microcontroller.
CROSS REFERENCE TO RELATED DOCUMENTS
This application is a continuation-in-part of U.S. patent application Ser. No. 09/975,105 filed Oct. 10, 2001 to Nemecek entitled "Host to FPGA Interface in an In-Circuit Emulation System", which is hereby incorporated. The application is related to, incorporates by reference and claims priority benefit under 35 U.S.C. .sctn.119(e) of provisional patent application Ser. No. 60/243,708 filed Oct. 26, 2000 to Snyder, et al. entitled "Advanced Programmable Microcontroller Device" which is also hereby incorporated herein by reference.
A system and a method for checking consistency of a lock-step process while debugging a microcontroller code. A host device copies a partially copies a production microcontroller in an ICE (in-circuit emulation) to form a virtual microcontroller. The virtual microcontroller and the microcontroller simultaneously and independently run a microcontroller code for debugging purposes. The microcontroller residing on a test circuit includes a first memory and the virtual microcontroller residing in the ICE includes a second memory. A host computer copies a content of the first memory and a content of the second memory in the host computer memory when the execution of the code is halted. Software in the host device compares the content of the first memory and the content of the second memory for consistency. In case of a disparity between the content of the first memory and the content of the second memory, a user traces the execution of the code in a trace buffer residing in the ICE and debugs the faulty code accordingly.