In order to deliver ever increasing performance at bounded clock frequencies, processor vendors have turned to multicore designs that allow many programs to execute in parallel on a single chip. Verification of a multicore design is substantially more complex than a single core design because access to shared resources, such as the memory and I/O subsystems, requires arbitration and coherency. Not only general purpose processors, but embedded and application-specific processors such as graphics processing units (GPU), must be verified using large regression suites.
AMD continually pushes the technology envelope to develop highly complex multicore processor chips. Verification of such multicore processors involves the execution of tens of thousands of tests in a typical regression. As this regression can take a week or more to execute, there is a need for designers to have available a highly optimized test list that maximizes line and toggle coverage. It is important that this test list can be run and graded in a matter of hours. The optimized list must be bounded by a predefined number of tests, such that the run time of the resultant mini-regression can be modified to meet scheduling needs.
The test list can then be used as a tool to qualify major design and environment changes in addition to being used for gate-level regressions. Traditional grading methods, while highly effective and highly optimized, can take several months of run time to grade the multitude of tests. Project schedules do not allow for such a large length of time. AMD, in fact, requires that the graded test list be online within a month of the completion of the code coverage regression. This graded test list must retain a great deal of optimization and an accurate view of code coverage. This article describes a customized coverage grading solution that was jointly developed by AMD and Synopsys, which has saved AMD several months of run time by providing an alternative grading methodology.
The standard grading algorithm in Synopsys tools, ‘greedy grading’, computes a very good ordered solution using a powerful but expensive heuristic that does n² incremental coverage comparisons, where n is the number of tests. As each test comparison is expensive, the algorithm, while very effective, does not allow for expedited results. A trade-off was required to meet AMD’s timeline goals.
Synopsys provides an API, the Unified Coverage API (UCAPI), which is an interface for programmatic access to the coverage information collected during run time. Using the API, the coverage database is fully traversable allowing direct access to the coverable points and statistics for each test. Using this approach, the designers at AMD are able to develop specialized algorithms for coverage calculation.
The algorithm developed requires a starting point for a user-defined base test. The base test is then used as a comparison point for further tests. Each successive test in the list to be graded is analyzed for covered versus coverable status. All tests in the list are graded based on their incremental score on top of the base test and previous analyzed tests. The tests that provide a positive contribution to the score can then be used to create the final graded test list. The goal for this algorithm is to provide an efficient grading solution that minimizes compute time. The program which implements this algorithm is called Quickgrade.