Diagnostic database
A diagnostic database (DDB) is used in the functional verification flow for microprocessors to keep diagnostic programs together with analyzed information about how those programs behaved during simulation.
Purpose
As the number of accumulated diagnostics grows, it becomes harder to choose tests that cover a specific case. The DDB addresses this by storing test programs along with information characterizing their run-time behavior, so that diagnostics with particular characteristics can later be retrieved. The same analysis is also useful when deciding which generated diagnostics should be run on the RTL model, since RTL simulation is comparatively expensive and only a limited number of diagnostics can be simulated daily.
How information is produced and stored
In the described methodology, diagnostic programs are executed on simulators that generate trace files. A Profiler-based analysis step is then run on the trace for a particular simulation. The analysis results are represented as values for a prespecified attribute set that is common across diagnostics, and those results are stored in the DDB.
Examples of stored attributes mentioned in the paper include:
- number of instructions executed
- cache hits and misses
- exception-related information
- lengths of various queues in the microprocessor
Retrieval model
The DDB is meant to support systematic storage and retrieval of diagnostic characterization data. Retrieval is based on conditions over stored attributes, typically expressed as equalities or inequalities. The paper gives an example query that selects diagnostics with an instruction count below a threshold and a floating-point exception count at or above another threshold.
Tool support
The cited work states that Ans stores this information in a highly efficient, object-based diagnostic database (ODDB). Ans both updates the database and queries it to return diagnostics that satisfy user-specified criteria.
Role in verification feedback
The database is not only a repository. The stored analysis and evaluation results are used later to improve the quality of generated code and the effectiveness of the code-generation tools used in the verification flow.