Simulation/emulation system and method
First Claim
1. A method of simulating a circuit in a simulation system, the circuit having a structure and a function specified in a hardware language, the hardware language capable of describing the circuit as component types and connections, comprising steps:
- determining component type in the hardware language;
generating a software model of the circuit;
generating a hardware model of at least a portion of the circuit based on component type automatically; and
simulating the behavior of the circuit with the software model and the hardware model by providing input data.
3 Assignments
0 Petitions
Accused Products
Abstract
The SEmulation system provides four modes of operation: (1) Software Simulation, (2) Simulation via Hardware Acceleration, (3) In-Circuit Emulation (ICE), and (4) Post-Simulation Analysis. At a high level, the present invention may be embodied in each of the above four modes or various combinations of these modes. At the core of these modes is a software kernel which controls the overall operation of this system. The main control loop of the kernel executes the following steps: initialize system, evaluate active test-bench processes/components, evaluate clock components, detect clock edge, update registers and memories, propagate combinational components, advance simulation time, and continue the loop as long as active test-bench processes are present. Each mode or combination of modes provides the following main features or combinations of main features: (1) switching among modes, manually or automatically; (2) compilation process to generate software models and hardware models; (3) component type analysis for generating hardware models; (4) software clock set-up to avoid race conditions through, in one embodiment, gated clock logic analysis and gated data logic analysis; (5) software clock implementation through, in one embodiment, clock edge detection in the software model to trigger an enable signal in the hardware model, send signal from the primary clock to the clock input of the clock edge register in the hardware model via the gated clock logic, send a clock enable signal to the enable input of the hardware model'"'"'s register, send data from the primary clock register to the hardware model'"'"'s register via the gated data logic, and reset the clock edge register disabling the clock enable signal to the enable input of the hardware model'"'"'s registers; (6) log selective data for debug sessions and post-simulation analysis; and (7) combinational logic regeneration.
-
Citations
45 Claims
-
1. A method of simulating a circuit in a simulation system, the circuit having a structure and a function specified in a hardware language, the hardware language capable of describing the circuit as component types and connections, comprising steps:
-
determining component type in the hardware language; generating a software model of the circuit; generating a hardware model of at least a portion of the circuit based on component type automatically; and simulating the behavior of the circuit with the software model and the hardware model by providing input data. - View Dependent Claims (2, 3, 4)
-
-
5. A method of simulating a circuit, the circuit having a structure and a function specified in a hardware language, the hardware language capable of describing the circuit as component types and connections, comprising steps:
-
generating a software model of the circuit; generating a hardware model of the circuit; simulating a behavior of the circuit with the software model by providing input data to the software model; selectively switching to the hardware model through software control; providing input data to the hardware model; and evaluating the input data in the hardware model based on the detection of a trigger event in the software model. - View Dependent Claims (6, 7, 8)
-
-
9. A method of simulating a circuit, the circuit having a structure and a function specified in a hardware language, the hardware language capable of describing the circuit as component types and connections, comprising steps:
-
generating a software model of the circuit; generating a hardware model of at least a portion of the circuit; providing test bench data to the hardware model from a first test point to a second test point; simulating a behavior of the circuit with the hardware model from the first test point to the second test point; loading hardware state values at the second test point from the hardware model to the software model; providing test bench data to the software model from the second test point to a third test point; and simulating a behavior of the circuit with the software model from the second test point to the third test point. - View Dependent Claims (10, 11)
-
-
12. A method of simulating a circuit in the environment of the circuit'"'"'s target system, comprising steps:
-
generating a software model of the circuit; generating a hardware model of at least a portion of the circuit; providing input signals from the target system to the hardware model; providing output signals from the hardware model to the target system; detecting an evaluation trigger event in the software model; simulating a behavior of the circuit with the hardware model in response to the detection of the evaluation trigger event in the software model, where the software model is capable of controlling the simulation. - View Dependent Claims (13)
-
-
14. A method of evaluating data in a circuit during a simulation process, comprising:
-
generating a software model of the circuit; generating a hardware model of at least a portion of the circuit; propagating data to the hardware model until the data stabilizes; detecting a clock edge in the software model; evaluating data with the hardware model in response to the clock edge detection in the software model and in synchronization with a hardware-generated clock signal.
-
-
15. A method of controlling a simulation system, the simulation system having a software model and a hardware model of a circuit to be simulated, comprising steps:
-
evaluate clock components; detect a clock edge in the software model; update registers and combinational components in the hardware model in response to the clock edge detection in the software model; and advance simulation time.
-
-
16. A simulation system operating in a host computer system for simulating a behavior of a circuit, the host computer system including a central processing unit (CPU), main memory, and a local bus coupling the CPU to main memory and allowing communication between the CPU and main memory, the circuit having a structure and a function specified in a hardware language, the hardware language capable of describing the circuit as component types and connections, comprising:
-
a software model of the circuit coupled to the local bus; software control logic coupled to the software model and a hardware logic element, for controlling the operation of the software model and said hardware logic element; and said hardware logic element coupled to the local bus and including a hardware model of at least a portion of the circuit configured automatically based on component type. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A verification system operating in a host computer system for verifying a behavior of a circuit, the host computer system including a central processing unit (CPU), memory, and a local bus coupling the CPU to memory and allowing communication between the CPU and memory, the circuit having a structure and a function specified in a hardware language, the hardware language capable of describing the circuit as component types and connections, comprising:
-
a software model of the circuit coupled to the local bus for evaluating input data; a hardware logic element coupled to the local bus and including a hardware model of at least a portion of the circuit for evaluating the input data, said hardware model configured automatically in the hardware logic element; and software control logic coupled to the software model and the hardware logic element, for controlling the operation of the software model and the hardware model in the hardware logic element, said software control logic further including, switching logic for allowing a user to selectively switch between the software model and the hardware model for verifying the circuit, and loading logic for loading hardware state values from the hardware model to the software model. - View Dependent Claims (22, 23)
-
-
24. A verification system operating in a host computer system for verifying a behavior of a circuit, the host computer system including a central processing unit (CPU), memory, and a system bus coupling the CPU to memory and allowing communication between the CPU and memory, the circuit having a structure and a function specified in a hardware language, the hardware language capable of describing the circuit as component types and connections, comprising:
-
a software model of the circuit coupled to the system bus for receiving and evaluating a first set of user data in software; a first bus coupled to the system bus; a hardware accelerator coupled to the first bus and including; a reconfigurable hardware element for modeling at least a portion of the circuit as a hardware model, receiving a second set of control data and a second set of user data, and evaluating the second set of user data, and control logic for controlling the delivery of the second set of control data and the second set of user data between the software model and the hardware model; software control logic coupled to the software model and the hardware accelerator, for controlling the operation of the software model and the hardware model in the hardware accelerator; and configuration logic coupled to the software model and the hardware accelerator for configuring the reconfigurable hardware element with the hardware model automatically based on the circuit. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40)
-
-
41. A design verification system operating in a host computer system for verifying a behavior of a circuit design, the host computer system including a central processing unit (CPU), memory, and a system bus coupling the CPU to memory and allowing communication between the CPU and memory, the circuit design represented by a hardware language, the hardware language capable of describing the circuit as component types and connections, comprising:
-
a software simulator coupled to the system bus for generating a software model of the circuit design and for receiving and evaluating a first set of test data; a hardware accelerator coupled to the system bus and including; a first reconfigurable device for modeling at least a portion of the circuit design as a portion of a hardware model, and receiving and evaluating a second set of test data, a second reconfigurable device for modeling another portion of the circuit design as another portion of the hardware model, and receiving and evaluating third set of test data, a device controller coupled to the system bus for controlling the delivery of the second set of test data and third set of test data between the software simulator and the hardware accelerator, and a device bus for coupling the first and second reconfigurable devices to the device controller; software control logic coupled to the software simulator and the hardware accelerator, for controlling the operation of the software model and the hardware model; and configuration logic coupled to the software simulator and the hardware accelerator for configuring the first and second reconfigurable devices with the hardware model based on the circuit design, and including stitching logic for configuring a first set of pointer circuits in the first reconfigurable device and a second set of pointer circuits in the second reconfigurable device for controlling the transfer of the second set of test data and the third set of test data between the software simulator and the hardware accelerator. - View Dependent Claims (42, 43, 44, 45)
-
Specification