IP Library Granted Patent US 9,195,786
Granted Patent B2
US 9,195,786 · App. 14/641,922 · Granted Nov 24, 2015

Hardware simulation controller, system and method for functional verification

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 9,195,786
App. No.
14/641,922
Granted
Nov 24, 2015
Kind
B2
Abstract

Systems and methods of using hardware to simulate software, specifically the semantic operations defined in HDL simulation languages. Traditional software HDL simulation kernel operations of advancing time, activating threads in response to notified events, and scheduling those threads of execution are handled via a simulation controller. The simulation controller is comprised of a timing wheel, an event-processor, a thread/process dispatch engine, a token processor, and a resource-allocator. These components work together with a control logic component to perform the semantic operations of an HDL software kernel.

Claims (23)

1. A controller for simulating a hardware description language (HDL), comprising:

a time wheel module comprising a plurality of physical queues to which virtual queues that represent an HDL simulator description are mapped; and

a non-transitory computer readable medium for storing control logic which controls the mapping of the virtual queues to physical queues to represent an advancement of time.

2. The controller of claim 1 , further comprising an event processor that swaps processing between different physical queues.

3. The controller of claim 2 , wherein the event processor swaps processing between an active queue and a processing queue so that the processing queue includes an event to be processed.

4. The controller of claim 3 , wherein the event processor determines a memory address for the event to be processed.

5. The controller of claim 4 , further comprising a token datapath which is configured to retrieve a value from memory based on the memory address determined by the event processor.

6. The controller of claim 5 , wherein the token datapath is configured to forward the value to the event processor if the value represents an event.

7. The controller of claim 5 , further comprising a dispatch engine for managing threads and process tokens.

8. The controller of claim 7 , wherein the token datapath is configured to forward the value to the dispatch engine if the value represents a thread or process.

9. The controller of claim 8 , wherein the dispatch engine is configured to prevent two threads from running concurrently if the two threads are invocations of the same thread.

10. The controller of claim 9 , wherein the dispatch engine is configured to place a duplicative thread in a cancellation queue which is used to cancel any further attempts to invoke the duplicative thread while the duplicative thread is pending in the cancellation queue.

11. A method for simulating a hardware description language (HDL), the method comprising:

mapping virtual queues that represent an HDL simulator description to physical queues on a non-transitory computer readable medium for storing instructions; and

using control logic to control the mapping of the virtual queues to physical queues so as to represent an advancement of time.

12. The method of claim 11 , further comprising using an event processor to swap processing between different physical queues.

13. The method of claim 12 , wherein the event processor swaps processing between an active queue and a processing queue so that the processing queue includes an event to be processed.

14. The method of claim 13 , further comprising using the event processor to determine a memory address for the event to be processed.

15. The method of claim 14 , further comprising retrieving a value from memory based on the memory address determined by the event processor.

16. The method of claim 15 , further comprising forwarding the value to the event processor if the value represents an event.

17. The method of claim 15 , further comprising forwarding the value to a dispatch engine for managing threads and process tokens if the value represents a thread or process.

18. The method of claim 17 , further comprising using the dispatch engine to prevent two threads from running concurrently if the two threads are invocations of the same thread.

19. The method of claim 18 , further comprising placing a duplicative thread in a cancellation queue which is used to cancel any further attempts to invoke the duplicative thread while the duplicative thread is pending in the cancellation queue.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Jun 29, 2021
From: MENTOR GRAPHICS CORPORATION; SIEMENS INDUSTRY SOFTWARE INC.
To: SIEMENS INDUSTRY SOFTWARE INC.
Reel/Frame 056702/0387 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 20, 2015
From: STAMNESS, ARTHUR J; ETSCHEID, BRIAN; MISUSTIN, RANDY
To: MENTOR GRAPHICS CORP.
Reel/Frame 036832/0505 →