Simulation of software
AssigneeCarbon Design Systems, Inc.
InventorsMark Seneski, Richard Sayde, Joshua D. Marantz, Richard J. Cloutier, Dylan Dobbyn, William E. Neifert
Life of this patent
Estimating the term…
Abstract
Systems and methods facilitate accurate and rapid simulation of software by periodically saving simulation states and design stimuli for use as a replay model. Divergences from the stored information may be detected during subsequent re-executions, which can in turn be run using the saved stimuli and states.
Claims17
A method for debugging hardware-related software, wherein the hardware-related software comprises simulated modules and non-simulated modules, the method comprising the steps of:
- during a first execution of the hardware-related software while the non-simulated modules are executed in parallel with the simulation of the simulated modules, periodically saving to a file (i) input/output information comprising hardware stimuli and responses resulting from processing the hardware stimuli and (ii) hardware state information;
- re-executing the software until a divergence is detected between the saved hardware stimuli and stimuli presented during the re-execution;
- halting the execution of the non-simulated modules at a point at which the divergence is detected;
- waiting until the simulated modules are synchronized with the point at which the divergence is detected;
- reinstating the execution of the non-simulated modules in parallel with the execution of the simulated modules;
- using the saved input/output information and hardware state information, initiating a subsequent re-execution of the hardware-related software starting at an intermediate execution point prior to where the divergence was detected;
- and
- debugging the hardware-related software based at least in part based on the subsequent re-execution.
A computer program product embodied on a computer-readable medium and comprising computer code for facilitating debugging hardware-related software, wherein the hardware-related software comprises simulated modules and non-simulated modules, the code comprising instructions for:
- during a first execution of the hardware-related software while the non-simulated modules are executed in parallel with the simulation of the simulated modules, periodically saving to a file (i) input/output information comprising hardware stimuli and outputs resulting from processing the hardware stimuli and (ii) hardware state information;
- re-executing the hardware-related software until a divergence is detected between the saved hardware stimuli and stimuli presented during the re-execution;
- halting the execution of the non-simulated modules at a point at which the divergence is detected;
- waiting until the simulated modules are synchronized with the point at which the divergence is detected;
- reinstating the execution of the non-simulated modules in parallel with the execution of the simulated modules;
- using the saved input/output information and hardware state information, initiating a subsequent re-execution of the hardware starting at an execution point prior to where the divergence was detected;
- and
- debugging the hardware-related software based at least in part based on the subsequent re-execution.
A system for facilitating debugging hardware-related software, wherein the hardware-related software comprises simulated modules and non-simulated modules, the system comprising:
- a storage device for storing input/output information comprising hardware stimuli and outputs resulting from processing the hardware stimuli and hardware state information;
- an application programming interface for:
- (i) periodically saving the input/output information and the hardware state information during executions of the hardware-related software while the non-simulated modules are executed in parallel with the simulation of the simulated modules;
- (ii) detecting a divergence between the saved hardware stimuli and stimuli presented during a re-execution of the hardware-related software;
- (iii) halting the execution of the non-simulated modules at a point at which the divergence is detected;
- (iv) waiting until the simulated modules are synchronized with the point at which the divergence is detected;
- (v) reinstating the execution of the non-simulated modules in parallel with the execution of the simulated modules;
- (vi) initiating a subsequent re-execution of the hardware starting at an execution point prior to where the divergence was detected using the saved input/output information and hardware state information;
- and
- (vii) debugging the hardware-related software based at least in part based on the subsequent re-execution.
Dependencies are inferred from the claim text.