Synchronization mechanism for distributed hardware simulation
First Claim
1. A method for synchronizing execution of a plurality of concurrently executing tests of a distributed simulation which execute in one or more computers which are mutually operatively coupled to one another and which includes one or more circuit simulations and the plurality of tests and a hub through which each of the plurality tests can interact with each of the circuit simulations, the method comprising:
- including in the hub a central thread, a first local thread and a second local thread, wherein said first local thread has a first thread state which represents a first synchronization state of a first one of said plurality of tests, and wherein said second local thread has a second thread state which represents a second synchronization state of a second one of said plurality of tests; and
effecting a change in the first synchronization state by signaling the first local thread to cause a change in the first thread state.
0 Assignments
0 Petitions
Accused Products
Abstract
The synchronization state of each of a number of concurrently executing tests which interacts with a particular circuit simulation of one or more circuit simulations which collective simulate a circuit is represented and controlled by a respective local synchronization thread ("LST") of a hub through which each test interacts with each circuit simulation. When in a synchronization state in which a test is permitted to interact with a particular circuit simulation, the LST corresponding to the test prevents the circuit simulation from advancing simulated time by acquisition by the LST of a hold lock on the circuit simulation. The LST releases the hold lock when the synchronization state of the test is a state in which the test cannot interact with the circuit simulation. Each test is permitted to interact with the circuit simulation in a particular state. When each test completes interaction with the circuit simulation, each test enters a barrier mechanism. The barrier mechanism is used to ensure that all tests which are to request reservations of devices of the circuit simulation have requested from the hub such reservations before any test proceeds. In this way, the hub can establish the order in which such requests are granted in a repeatable manner. As each test enters the barrier mechanism, execution of the test is suspended and a reference to the test is added to a thread list. When all tests which are to enter the barrier have done so, each thread identified by a reference on the thread list is awakened and execution of the test resumes.
124 Citations
8 Claims
-
1. A method for synchronizing execution of a plurality of concurrently executing tests of a distributed simulation which execute in one or more computers which are mutually operatively coupled to one another and which includes one or more circuit simulations and the plurality of tests and a hub through which each of the plurality tests can interact with each of the circuit simulations, the method comprising:
-
including in the hub a central thread, a first local thread and a second local thread, wherein said first local thread has a first thread state which represents a first synchronization state of a first one of said plurality of tests, and wherein said second local thread has a second thread state which represents a second synchronization state of a second one of said plurality of tests; and effecting a change in the first synchronization state by signaling the first local thread to cause a change in the first thread state.
-
-
2. A method for synchronizing execution of a plurality of concurrently executing tests of a distributed simulation which includes one or more circuit simulations and the plurality of tests and a hub through which each of the plurality of tests can interact with each of the circuit simulations, the method comprising:
-
including in the hub a central thread, a first local thread and a second local thread, wherein said first local thread has a first thread state which represents a first synchronization state of a first one of said plurality of tests, and wherein said second local thread has a second thread state which represents a second synchronization state of a second one of said plurality of tests; and effective a change in the first synchronization state by causing a change in the first thread state. - View Dependent Claims (3, 4)
-
-
5. A computer program product comprising:
a computer usable medium having computer readable code embodied therein for synchronizing execution of a plurality of concurrently executing tests of a distributed simulation which executes in one or more computers which are mutually operatively coupled to one another and which includes one or more circuit simulations and the plurality of tests and a hub through which each of the plurality of tests can interact with each of the circuit simulations, the computer readable code comprising; a central thread of the hub; a first local thread of the hub, wherein the first local thread has a first thread state which represents a first synchronization state of a first one of the plurality of tests; a second local thread of the hub, wherein the second local thread has a second thread state which represents a second synchronization state of a second one of the plurality of tests; and a thread signaler which is operatively coupled to the first local thread and the second local thread and which is configured to effect a change in the first synchronization state by signaling the first local thread to cause a change in the first thread state.
-
6. A computer program product comprising:
a computer usable medium having computer readable code embodied therein for synchronizing execution of a plurality of concurrently executing tests of a distributed simulation which includes one or more circuit simulations and the plurality of tests and a hub through which each of the plurality of tests can interact with each of the circuit simulations, the computer readable code comprising; a central thread of the hub; a first local thread of the hub, wherein the first local thread has a first thread state which represents a first synchronization state of a first one of the plurality of tests; a second local thread of the hub, wherein the second local thread has a second thread state which represents a second synchronization state of a second one of the plurality of tests; and a thread state module which is operatively coupled to the first local thread and the second local thread and which is configured to effect a change in the first synchronization state by causing a change in the first thread state. - View Dependent Claims (7, 8)
Specification