IP Library Granted Patent US 12688056
Granted Patent B1
US 12688056 · App. 18/314,770 · Granted Jul 21, 2026

Method and apparatus for switching time domain on virtual machine based on state of peripheral device

Inventors: Prashant Vardhan Agarwal (Noida, IN); Kanwarpreet Singh Grewal (Noida, IN); Madan Kumar Nath (Noida, IN); Animesh Kumar Sinha (New Delhi, IN)
Assignee: Cadence Design Systems, Inc.
G06F9/45558G06F1/08G06F2009/45579G06F2009/45591
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12688056
App. No.
18/314,770
Granted
Jul 21, 2026
Kind
B1
Abstract

An emulator system and a method for emulating functionalities of an integrated circuit design are disclosed. In one aspect, the system includes a plurality of verification components each comprising circuitry configured to perform transactions with at least another verification component. The system can include a plurality of proxies, each executing on a processor and corresponding to a respective one of the verification components. The system can include a switch that is communicatively coupled with the proxies, the switch dynamically configurable to, in a first time duration, operate with a first subset of the proxies to enable a first transaction between a functional module of the design and a first verification component. The switch can be dynamically configurable to, in a second time duration, operate with a second subset of the proxies to enable a second transaction between the functional module and a second verification component.

Claims (64)

1 . A system to adjust a clock of a virtual machine based on a clock of an emulator, the system comprising:

at least one processor coupled with memory and configured to:

provide, for a virtual machine on a host device, a clock of the virtual machine to perform a plurality of operations of the virtual machine at a first rate of time;

receive, by the host device from a server executing an emulator, a first notification indicating that a state of a clock of the emulator has transitioned to a paused state from a running state responsive to a blocking transaction;

adjust, by the virtual machine responsive to the first notification, the clock of the virtual machine to a second rate of time lower than the first rate of time by applying a scale factor to provide the second rate of time at a fraction of a rate of the clock of the virtual machine; and

perform, by the virtual machine, a first subset of the plurality of operations of the virtual machine at the second rate of time while the emulator is in the paused state;

receive, by the host device from the server, a second notification indicating that the state of the clock of the emulator has transitioned to the running state from the paused state;

adjust, by the virtual machine responsive to the second notification, the clock of the virtual machine to a third rate of time greater than the first rate of time, until a cumulative count of the clock of the virtual machine reaches a cumulative count of the clock of the host device; and

adjust, responsive to the cumulative count of the clock of the virtual machine reaching the cumulative count of the clock of the host device, the clock of the virtual machine to the first rate of time.

2 . The system of claim 1 , wherein the first rate of time is according to a clock of the host device used to perform operations of the host device and the clock of the emulator is used to perform operations of the emulator on a test circuit.

3 . The system of claim 1 , wherein the second rate of time is at least ten times lower than the first rate of time.

4 . The system of claim 1 , wherein the paused state corresponds to one of a paused clock of the emulator or a stopped clock of the emulator.

5 . The system of claim 1 , wherein the at least one processor is configured to:

receive, by the virtual machine from an emulator, the second notification;

and

perform, by the virtual machine, a second subset of the plurality of operations of the virtual machine at the third rate of time.

6 . The system of claim 1 , wherein the at least one processor is configured to:

determine that that cumulative count of the clock of the virtual machine has reached the cumulative count of the clock of the host; and

adjust the clock of the virtual machine to the first rate of time, in response to the determination.

7 . The system of claim 6 , wherein the at least one processor is configured to:

perform, by the virtual machine, a second subset of the plurality of the operations of the virtual machine at the third rate of time until the cumulative count of the clock of the virtual machine reaches the cumulative count of the clock of the host device; and

perform, by the virtual machine, a third subset of the plurality of the operations of the virtual machine at the third rate of time following the cumulative count of the clock of the virtual machine having reached the cumulative count of the clock of the host device.

8 . The system of claim 1 , wherein the clock of the virtual machine is to perform the plurality of operations for a test function of the virtual machine corresponding to a test circuit emulated by the emulator on the server.

9 . The system of claim 1 , wherein the at least one processor is configured to:

transmit, by the virtual machine via a channel established between the host device and the server, an instruction for the emulator to read a value stored in a memory of the server; and

receive, by the virtual machine from the server, the value via the channel.

10 . The system of claim 1 , wherein the at least one processor is configured to:

transmit, by the virtual machine, an instruction for the emulator to read a value stored in a memory of the server; and

receive, by the virtual machine from the server, the notification from the server responsive to a determination that the instruction is for a blocking transaction.

11 . A method of adjusting a clock of a virtual machine based on a clock of an emulator, the method comprising:

providing, by one or more processors of virtual machine coupled with memory of a host device, the clock of the virtual machine to perform a plurality of operations of the virtual machine at a first rate of time corresponding to a rate of time of a clock of the host device;

receiving, by the one or more processors from a server executing an emulator, a first notification indicating that a state of a clock of the emulator has transitioned to a paused state from a running state responsive to a blocking transaction;

adjusting, by the one or more processors responsive to the first notification, the clock of the virtual machine to a second rate of time lower than the first rate of time by applying a scale factor to provide the second rate of time at a fraction of a rate of the clock of the virtual machine; and

performing, by the one or more processors, a first subset of the plurality of operations of the virtual machine at the second rate of time while the emulator is in the paused state;

receiving, by the one or more processors, from the server, a second notification indicating that the state of the clock of the emulator has transitioned to the running state from the paused state;

adjusting, by the one or more processors responsive to the second notification, the clock of the virtual machine to a third rate of time greater than the first rate of time, until a cumulative count of the clock of the virtual machine reaches a cumulative count of the clock of the host device; and

adjusting, by the one or more processors, responsive to the cumulative count of the clock of the virtual machine reaching the cumulative count of the clock of the host device, the clock of the virtual machine to the first rate of time.

12 . The method of claim 11 , wherein the first rate of time is equal to a clock of the host device used to perform operations of the host device, the clock of the emulator is used to perform operations of the emulator on a test circuit, and the state is generated responsive to a blocking transaction implemented by the emulator.

13 . The method of claim 11 , further comprising:

receiving, by the one or more processors from the emulator, the second notification;

and

performing, by the one or more processors, a second subset of the plurality of operations of the virtual machine at the third rate of time.

14 . The method of claim 11 , further comprising:

determining, by the one or more processors, that that cumulative count of the clock of the virtual machine has reached the cumulative count of the clock of the host; and

adjusting, by the one or more processors, the clock of the virtual machine to the first rate of time, in response to the determination.

15 . The method of claim 14 , further comprising:

perform, by the virtual machine, a second subset of the plurality of the operations of the virtual machine at the third rate of time until the cumulative count of the clock of the virtual machine reaches the cumulative count of the clock of the host device; and

performing, by the one or more processors, a third subset of the plurality of the operations of the virtual machine at the first rate of time following the cumulative count of the clock of the virtual machine having reached the cumulative count of the clock of the host device.

16 . The method of claim 11 , wherein the clock of the virtual machine is to perform the plurality of operations for a test function of the virtual machine corresponding to a test circuit emulated by the emulator on the server.

17 . The method of claim 11 , further comprising:

transmitting, by the one or more processors via a channel established between the host device and the server, an instruction for the emulator to read a value stored in a memory of the server; and

receiving, by the one or more processors from the server, the value via the channel.

18 . The method of claim 11 , further comprising:

transmitting, by the one or more processors, an instruction for the emulator to read a value stored in a memory of the server; and

receiving, by the one or more processors from the server, the notification from the server responsive to a determination that the instruction is for a blocking transaction.

19 . A non-transitory computer readable medium storing program instructions for causing at least one processor to:

provide, for a virtual machine on a host device, a clock of the virtual machine to perform a plurality of operations of the virtual machine at a first rate of time;

receive, by the host device from a server executing an emulator, a first notification indicating that a state of a clock of the emulator has transitioned to a paused state from a running state responsive to a blocking transaction;

adjust, by the virtual machine responsive to the first notification, the clock of the virtual machine to a second rate of time lower than the first rate of time by applying a scale factor to provide the second rate of time at a fraction of a rate of the clock of the virtual machine; and

perform, by the virtual machine, a first subset of the plurality of operations of the virtual machine at the second rate of time while the emulator is in the paused state;

receive, by the host device from the server, a second notification indicating that the state of the clock of the emulator has transitioned to the running state from the paused state;

adjust, by the virtual machine responsive to the second notification, the clock of the virtual machine to a third rate of time greater than the first rate of time, until a cumulative count of the clock of the virtual machine reaches a cumulative count of the clock of the host device; and

adjust, responsive to the cumulative count of the clock of the virtual machine reaching the cumulative count of the clock of the host device, the clock of the virtual machine to the first rate of time.

20 . The non-transitory computer readable medium of claim 19 , wherein the first rate of time is according to a clock of the host device used to perform operations of the host device, the clock of the emulator is used to perform operations of the emulator on a test circuit, and the second rate of time is at least ten times lower than the first rate of time.