Conditional branching in an in-circuit emulation system
First Claim
1. An in-circuit emulation system, comprising:
- a microcontroller, wherein said microcontroller sends I/O read data to a virtual microcontroller, and wherein said I/O read data is processed by an instruction in the virtual microcontroller, said instruction is followed by a conditional jump instruction that resides on said virtual microcontroller;
said virtual microcontroller coupled to the microcontroller, wherein said virtual microcontroller has means for detecting said I/O read data, and further has means for computing a speculative conditional jump address before a condition for said conditional jump instruction is satisfied after receipt of said I/O read data; and
the virtual microcontroller further having means for determining after receipt of the I/O read data from the microcontroller whether to proceed with instruction execution at a next consecutive address or at the speculative conditional jump address, wherein said virtual microcontroller executes instructions at said next consecutive address or at said speculative conditional jump address based on said means for determining such that said microcontroller and said virtual microcontroller remain in lockstep by executing the same instruction using the same clocking signal.
5 Assignments
0 Petitions
Accused Products
Abstract
An In-Circuit Emulation system. A real microcontroller (device under test) operates in lock-step with a virtual microcontroller so that registers, memory locations and other debugged data can be retrieved from the virtual microcontroller without disrupting operation of a real microcontroller. When an I/O read instruction is carried out followed by a conditional jump instruction dependent upon the I/O read data, the virtual microcontroller does not have adequate time to compute the jump address after receipt of I/O read data from the real microcontroller. Thus, when this sequence of instructions is detected, the virtual microcontroller pre-calculates the jump address and makes the jump decision after receipt of the I/O read data from the real microcontroller.
-
Citations
20 Claims
-
1. An in-circuit emulation system, comprising:
-
a microcontroller, wherein said microcontroller sends I/O read data to a virtual microcontroller, and wherein said I/O read data is processed by an instruction in the virtual microcontroller, said instruction is followed by a conditional jump instruction that resides on said virtual microcontroller; said virtual microcontroller coupled to the microcontroller, wherein said virtual microcontroller has means for detecting said I/O read data, and further has means for computing a speculative conditional jump address before a condition for said conditional jump instruction is satisfied after receipt of said I/O read data; and the virtual microcontroller further having means for determining after receipt of the I/O read data from the microcontroller whether to proceed with instruction execution at a next consecutive address or at the speculative conditional jump address, wherein said virtual microcontroller executes instructions at said next consecutive address or at said speculative conditional jump address based on said means for determining such that said microcontroller and said virtual microcontroller remain in lockstep by executing the same instruction using the same clocking signal. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method of handling conditional jumps in a virtual microcontroller operating in lock-step with a microcontroller, comprising:
-
detecting an I/O read data sent by said microcontroller, wherein said I/O read data is processed by an instruction in the virtual microcontroller, said instruction is followed immediately by a conditional jump instruction that resides on said virtual microcontroller; after receipt of said I/O read data, computing a speculative conditional jump address before a condition for said conditional jump instruction is satisfied; after receipt of the I/O read data from the microcontroller, determining whether a conditional jump condition is met; and executing instruction based on said determination, such that said virtual microcontroller remains in lock-step execution with said microcontroller. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13)
-
-
14. A method of handling conditional jumps in a virtual processor operating in lock-step with a device under test, comprising:
-
detecting an I/O read data sent by said device under test, wherein said I/O read data is processed by an instruction in the virtual processor, said instruction is followed immediately by a conditional jump instruction that resides on said virtual processor; after receipt of said I/O read data, computing a speculative conditional jump address before a condition for said conditional jump instruction is satisfied; after receipt of the I/O read data from the device under test, determining whether a conditional jump condition is met; and executing instruction based on said determination, such that said virtual processor remains in lock-step execution with said device under test. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification