Code coverage testing in hardware emulation
First Claim
1. A computer-implemented method of providing code coverage testing for use in emulation of a logic circuit design having a plurality of logic gates, the logic design represented as a plurality of modules in a source code design file, the method comprising:
- instrumenting a selected module of the source design file with coverage probes by instantiating a probe for each gate output;
generating a hierarchical name list comprising a hierarchical name for each instantiated probe;
generating a history template file from the hierarchical name list;
compiling/synthesizing the instrumented source file into an instrumented gate-level netlist;
generating two scripts using the list of hierarchical names from the history template file, wherein the two scripts comprise a reset trigger script and a probe value extraction script;
loading the instrumented gate-level netlist onto a hardware emulator;
initializing an emulation run and executing the reset trigger script to reset all branch and statement probes;
driving the fully initialized design in emulation by a simulated testbench;
running the generated extraction script to retrieve the probe values fromthe testbench emulation, wherein the retrieved probe values are used in code coverage testing;
generating a temporary file to hold the retrieved probe values;
populating the temporary file with the retrieved probe values;
merging the history template file with the retrieved probe values from the temporary file to produce a first history file;
finding unexercised logic using the instrumented gate-level netlist and generating a second history file;
merging the first history file with the second history file to produce code coverage results; and
producing a code coverage tool report using the code coverage results.
9 Assignments
0 Petitions
Accused Products
Abstract
Code coverage questions are addressed by a code coverage method that instruments an electronic module source design file with coverage probes and gives hierarchical names to the probes, then provides therefrom an instrumented gate level netlist. The instrumented netlist is run on a hardware emulator, executing reset trigger scripts to reset the branch and statement probes, and then a fully initialized design is driven in emulation on a simulated testbench from which the probe values are retrieved. These values can then be evaluated to determine the extent of code coverage. Various forms of coverage are supported including branch, statement, reset trigger and toggle coverage.
48 Citations
18 Claims
-
1. A computer-implemented method of providing code coverage testing for use in emulation of a logic circuit design having a plurality of logic gates, the logic design represented as a plurality of modules in a source code design file, the method comprising:
-
instrumenting a selected module of the source design file with coverage probes by instantiating a probe for each gate output; generating a hierarchical name list comprising a hierarchical name for each instantiated probe; generating a history template file from the hierarchical name list; compiling/synthesizing the instrumented source file into an instrumented gate-level netlist; generating two scripts using the list of hierarchical names from the history template file, wherein the two scripts comprise a reset trigger script and a probe value extraction script; loading the instrumented gate-level netlist onto a hardware emulator; initializing an emulation run and executing the reset trigger script to reset all branch and statement probes; driving the fully initialized design in emulation by a simulated testbench; running the generated extraction script to retrieve the probe values from the testbench emulation, wherein the retrieved probe values are used in code coverage testing; generating a temporary file to hold the retrieved probe values; populating the temporary file with the retrieved probe values; merging the history template file with the retrieved probe values from the temporary file to produce a first history file; finding unexercised logic using the instrumented gate-level netlist and generating a second history file; merging the first history file with the second history file to produce code coverage results; and producing a code coverage tool report using the code coverage results. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A computer-implemented method of employing code coverage testing of a logic circuit design comprising a plurality of logic gates, the logic design represented as a plurality of modules in a source code design file, the method comprising:
-
using a design source file and instrumenting the design with coverage probes; generating a hierarchical name list comprising a hierarchical name for each instantiated probe; generating a history template file from the hierarchical name list; compiling/synthesizing the instrumented design source file into a gate-level netlist, the list of hierarchical names from the history template file is used to generate two scripts comprising a reset trigger script to initiate coverage testing and a probe extraction script; generating a temporary file to hold extracted probe values; running the gate-level netlist in a hardware emulator with the two scripts saving the extracted probe values in the temporary file; merging the history template file and the extracted probe values from the temporary file to produce a first history file; finding uncovered logic using the gate-level netlist and generating a second history file; merging the first history file with the second history file to produce code coverage results having a valid input format for use by a code coverage tool; and producing reports by the code coverage tool. - View Dependent Claims (17)
-
-
18. A software storage disk comprising computer-executable operating instructions adapted to configure a computer system already capable of running a hardware emulation of a logic circuit design as a code coverage tool when loaded into said computer system, when said computer system is so configured, being operable as a code coverage tool during running of said hardware emulation and in such operation, determining which logic being so emulated is covered, and specifically wherein the operating instructions comprise instructions which, when executed, perform operations comprising:
-
instrumenting a design source file with instantiated coverage probes generating an instrumented design source file; generating a hierarchical name list comprising a hierarchical name for each instantiated probe; generating a history template file from the hierarchical name list; compiling/synthesizing the instrumented design source file into a gate level netlist, the hierarchical name list names from the history template file used to generate two scripts comprising a reset trigger script to initiate coverage testing and a probe extraction script; generating a temporary file to hold extracted probe values; running the gate-level netlist in a hardware emulator with the two scripts saving the extracted probe values in the temporary file; merging the history template file and the extracted probe values from the temporary file to produce a first history file; finding uncovered logic using the gate-level netlist and generating a second history file; merging the first history file with the second history file to produce code coverage results having a valid input format for use by a code coverage tool; and producing reports by the code coverage tool.
-
Specification