| Verification Automation Management |
 |
1. vManager in context
It's a commonplace that functional verification dominates the project
plans of today's electronic systems, comprising more than 50% of the
overall effort. It's also a commonplace that systems grow larger every
day. Given that the difficulty of functional verification closure
rises exponentially with the growth in system size, verification teams
face an increasingly intractable verification problem. They struggle
to
- create and track extensive verification plans,
- architect and build multiple complex test benches,
- compile and execute thousands of simulation runs,
- collate and analyze large lists of failures,
- identify and analyze diverse gaps in verification progress (coverage
holes) and
- integrate and summarize large chunks of verification progress
(coverage) data.
Against this backdrop of unprecedented effort, the strain on current
verification processes is evident. Progress and quality metrics
are unreliable and schedule slips and bug escapes are the norm.
vManager in summary
vManager leverages automation and reuse to
enable verification teams to deploy a scalable, metric-driven process
that dramatically improves both schedule predictability and device
quality. It touches all the steps of the process, from upfront planning
to tapeout decision, and brings value to all members of the verification
team, from engineering to management.
Commonly realized benefits when applying vManager
in production environments:
- Over 5x improvement in predictability of schedule from planning
to verification closure
- Up to 3x increase in project-end verification closure rate by
disqualifying redundant simulations
- Over 10x decrease in effort to regularly generate and distribute
status reports
- More than 2x reduction in respins through introduction of metric-based
planning and tracking
- Over 10x increase in management effectiveness using metrics
that cannot be manipulated
At the engineering level, vManager enables
verifiers to focus their skills on the most important problems by
automating many of the mechanical tasks in the verification process.
vManager also offers engineers new analysis
tools, including failure analysis, coverage analysis, and planning
analysis engines that accelerate functional verification closure.
At the management level, vManager offers
project leadership multiple project-specific perspectives on verification
plan progress that facilitate better and more timely resource allocation.
vManager also offers project leadership a
number of reporting capabilities to facilitate communication of
verification status to all the stakeholders and decision makers.
This paper discusses vManager in detail
and supplies the background and motivations for its feature set.
Here are some highlights:
vManager and massive parallel verification
The verification engineer's productivity can be crushed under the
sheer weight of the repetitive and mechanical work required just
to administer thousands of simulation runs. vManager
greatly reduces this effort by first integrating with your simulation
runner through an interface that includes session input and output
formats, a verification attribute definition interface, and the
runner gasket itself. Then vManager enables
the verification engineer to easily specify, execute, and track
from hundreds to thousands of parallel simulation runs.
vManager and the annotated verification
plan
In the typical verification process, the verification team creates
a verification plan document that sets out coverage and checking
goals for the verification cycle With vManager,
the verification team can drive the verification process with the
vPlan, a reusable, machine-readable verification
plan. The vPlan is easily specified and maintained
throughout the project, and identifies the checking and coverage
goals at all levels of verification hierarchy, for each phase of
the project from module verification to system integration, for
each target customer, and more. As simulation runs are completed,
their results are automatically annotated into vManager's
vPlan view and made available for interactive
analysis and reporting.
vManager and coverage analysis
The verification team must repeatedly analyze the available coverage
information to guide the verification process to closure. vManager
leverages Specman's coverage and assertion interface (CAI) to integrate
and summarize multiple sources of coverage information to enhance
Specman's native functional coverage measurement. All of these sources
of coverage information are available to vManager's
coverage analysis engines which facilitate rapid coverage hole filling
and easy optimization of regression sessions.
vManager and failure analysis
When there are thousands of simulation runs and hundreds of failures,
failure analysis can overwhelm the verification effort. vManager
reduces the overall failure analysis effort and shortens failure
debug time. It rapidly separates design failures from tool failures,
sorting and grouping these failures for easy selection and action.
It quickly identifies the least costly simulation to exhibit failure
and the optimal case for repeated debugging.
2. The metric-driven verification process
As mentioned earlier, vManager touches your
verification process from upfront planning to tapeout decision. To
illustrate vManager's capabilities, we'll first
describe a verification process without vManager,
and then describe the same process with vManager.
vManager can make significant contributions
to any verification process, but to more clearly illustrate its capabilities,
let's start with a metric-driven verification process that deploys
directed-random verification with coverage measurement, and leverages
Verisity's e Reuse Methodology (eRM)
(please visit www.verisity.com
for further information on eRM.) We'll further
assume that the verification team tries to maximize the capabilities
of this process by executing many simulation runs in parallel during
each verification session.
Figure 1 shows a high-level, simplified view of this process. This
process diagram shows deliverables along the horizontal task progress
lines, with diamonds and vertical arrows showing the dependencies
between the artifacts. Now let's look at this process in detail,
summarizing not only what is accomplished during each task of the
process, but also citing some of the burdens and roadblocks along
the way.
Verification plan
Tasks
At the beginning of the verification cycle, the team develops a
plan consisting of an initial set of requirements for the verification
efforts that follow. Verification requirements detail the checking
and coverage requirements for each of the subsystems of the design,
and for the integrated system. The requirements also define other,
related goals for checking and coverage, along dimensions such as
project milestones and customer-related feature sets. The team captures
all these requirements in a document that it uses to guide later
efforts.
Burdens and roadblocks
One main problem the team faces is creating the connection between
the text-based verification requirements, specified as coverage
of varying kinds, and the actual data collected during the verification
cycle. This is a problem during the coverage reporting tasks described
below, but its source is here. The coverage data specified in the
plan may come from many tools and sources, and could include functional
coverage, code coverage, and assertion coverage, further complicating
the efforts required to report the actuals with respect to the plan.
Typically, verification teams must create custom scripts to obtain
the coverage reports they need.
Another of the problems the team faces with planning is that as
the verification cycle progresses, the requirements may change,
especially as the verification team's understanding of the DUT improves.
The plan documentation may be burdensome to maintain, and as a result,
it stagnates and can no longer inform interpretation of coverage
data, as the measurement models have evolved beyond what's documented.
Further, as the plan changes, any custom scripts that collect, analyze,
or report on the data will need to be updated to include the new
data as it is collected.

Verification environment
Tasks
Next, the team architects and builds verification environments for
various levels and configurations of the design hierarchy. The generation,
checking, and coverage measurement capabilities of these environments
needs to support fulfilling the verification requirements outlined
earlier. These environments are comprised of the RTL models of the
DUT, the HVL models of the DUT's operating environment, and the
compile and execute infrastructure that integrates the models and
the tools needed to execute them. Since the team is using eRM,
their module-level environments are constructed from interface e
verification components (eVCs), obtained
either from previous projects or commercial offerings. Then, their
system-level environments are constructed by composing the components
of module environments.
Burdens and roadblocks
One problem with current practice is that the verification plan
is an important part of the overall verification component IP, but
it is not designed for reuse. There needs to be a way to encapsulate
and reuse the plan data, i.e. a modular and composable verification
plan component, that could be packaged with any verification component.
Coverage targeting
Tasks
Once the verification environments are in place, and based on the
requirements outlined in the verification plan, the team creates
and iterates a framework for running simulations that will achieve
maximal coverage throughput (coverage per simulation cycle). This
framework has two levels:
- Verification Environment-level (VE-level) controls
- Session-level controls
At the VE level, the framework consists of constraint-set files
that divide the behavioral space of the verification environment
into functional subspaces that will be easier to conquer. These
constraint-set files typically take advantage of specific stimuli
sequences out of the full set of stimuli sequence libraries that
is defined in the verification environment (for information on stimuli
sequences, please see the documentation of Verisity eRM
mentioned above). At the session level, the framework includes data
about random seeds, number of runs to execute, length of each run,
and more.
Burdens and roadblocks
The iteration of coverage targeting takes a substantial portion
of the overall verification effort, and there are many difficulties
associated with its administration. Chief among these is a lack
of standard ways to express the session-level and run-level control
inputs. Further, the ways that do exist are often not modular and
efficient, and as new environments, tools, or DUT representations
are added, there are heavy maintenance burdens.
Simulation
Tasks
The sets of runs that were specified during the coverage targeting
phase are executed on the compute grid, producing per-run failure
and coverage data.
Burdens and roadblocks
The lack of standard ways to manage large numbers of simulations
and their data at run time lead to ad hoc solutions that vary in
their effectiveness and in their maintainability.
Coverage analysis and reporting
Tasks
The coverage results from the simulation runs are collated and analyzed
to understand what has and has not been verified. The results of
the analyses support refinement of verification targeting to aim
at coverage goals not yet achieved, as well as the progress reports
discussed below.
Burdens and roadblocks
Creating useful coverage reports that actually achieve their ends
is a major time sink in the metric-driven verification process.
Teams typically address reporting with home-grown scripts and tools
that need frequent updating and maintenance. Moreover, without specific
tool assistance, understanding and prioritizing the coverage that
should be targeted next is a labor-intensive analytical exercise.
One especially difficult problem is understanding the commonalities
in holes in large cross coverage matrices. These matrices identify
new coverage requirements as the cross-product of previously identified
coverage items, and can become large very quickly, numbering into
the thousands of buckets. As coverage data is reviewed, the holes
in these crosses can appear, without analytical assistance, to be
atomized and unrelated, making it difficult to efficiently target
the holes in subsequent sessions.
Failure analysis and reporting
Tasks
The results of the simulation runs are reviewed and analyzed to
understand the failures that have occurred, and to decide which
ones to concentrate on debugging. Some of these failures may be
related to the verification execution itself, such as compile errors,
and should be referred to the tool czars. Others may be known bugs
and should be set aside.
Burdens and roadblocks
Sifting through all the failure data from a session consisting of
a hundred or more simulations is a time-consuming task, but proceeding
to debug without thorough analysis of the big picture leads to inefficiencies
as a non-optimum set of failures is debugged. Verification teams
spend more time and create non-optimal ad hoc scripts to help sort
and collate to get around this problem, creating additional maintenance
burden.
Bug reports and tracking
Tasks
Verification and design engineers work together on the verification
failures that have been selected for debug, tracking down the source
of the problem. Once diagnosed, the failures are filed as bug reports
and then sent to the design team for repair.
Burdens and roadblocks
One of the problems here is facilitating the easy recreation of
all the verification runs that produced the failure being debugged.
Once a failure has been selected for debug, all of the inputs necessary
to recreate it must be captured from the runs' various simulation
input controls and sent to the engineer responsible for debug.
Verification Progress reports
Tasks
Periodically, the verification team will generate reports about
progress towards the coverage and checking goals outlined in the
verification requirements. Project leadership reviews these reports
to help estimate the time remaining to verification closure, and
to support resource allocation decisions.
Burdens and roadblocks
Typically, the production of verification progress reports based
on the coverage data being collected during simulation is another
labor-intensive activity. There is a large effort involved in massaging
the data to connect it to the various dimensions of project goals
and requirements. For instance, the same data set may need to be
viewed and normalized to multiple sets of goals reflecting different
phases of the project or different customers for the DUT.
3. vManager in the metric-driven verification
process
Now let's look at a metric-driven verification process with vManager.
Figure 2 shows how some of the major features of vManager
fit into process. You can see that vManager
impacts verification planning, coverage targeting, simulation execution,
verification failure analysis, coverage hole analysis and progress
analysis, as well as project progress reporting.
Verification plan with vManager
At the beginning of the process, the verification team using vManager
captures their initial verification requirements using vManager's
vPlan human-readable and executable format.
vManager can read the vPlan,
automatically back-annotate its sections with the latest coverage
data from the simulation runs, and display the results in an interactive,
hierarchical format.
By capturing the requirements in the vPlan
format, the team overcomes many of the problems outlined in the
original metric-driven process. The vPlan
leverages Specman's CAI to bring together manifold sources of coverage,
and adds easy specification of multiple management dimensions such
as project milestones and customer feature sets. Since the vPlan
is machine-readable, when the plan changes, there are no reporting
scripts to be updated, as the reports are updated by construction
(see the vPlan chapter below for more details).
Verification environment with vManager
Because the vPlan format is modular and composable,
the team can build a project-level vPlan
by assembling vPlans from lower-level modules,
even reusing vPlans for module interfaces
from previous projects. Therefore, the addition of the vPlan
to the verification process adds another component that can be reused.
As environment construction proceeds, vPlan
components are packaged along with the other parts of the reusable
eVCs (see the vPlan
chapter below for more details).
Coverage targeting with vManager
Remember that, at a higher-level, coverage targeting inputs include
specifications of sets of runs including data about random seeds,
number of runs to execute, and the particular verification environments
to compile and execute. vManager makes it
easy to specify runs and to compose higher-order run specifications
from lower-order specifications with standard formats and a standard
simulation runner interface (see the massive parallel verification
chapter below for more details).

Simulation with vManager
vManager makes it easy to track all the runs
executing on the compute grid with its session tracking capabilities
(see the massive parallel verification chapter below for more details).
Coverage reports with vManager
With vManager, the coverage results from
the simulation runs are automatically collated and back-annotated
onto the vPlan-based verification plan. Then,
simply by opening a vPlan window, the verification
engineer can instantly begin to understand what has and has not
been tested. Moreover, easy navigation from the vPlan
window to coverage hole analysis engines makes identifying holes
and how to target them in the next verification runs direct and
fast (see the vPlan chapter below for more
details), thereby improving the efficiency of subsequent sessions.
Failure reports with vManager
With vManager, all of the results from each
of the simulation runs in a session are collated and ready for analysis
as soon as a session is loaded. vManager
presents a spreadsheet of run data, where the rows are the runs
themselves, and the columns show any user-selected run attributes,
from run time to coverage score to, of course, failure messages.
The verification engineer uses a complete set of analysis tools,
including filtering, grouping, and sorting, to divide the runs into
categories for handoff to debug (see the failure analysis chapter
below for more details).
Bug reports with vManager
With vManager, all of the data necessary
to recreate a failed run is available in the runs database, and
vManager offers automatic creation of simulation
inputs for one or more runs to speed the path to completing debug.
Progress reports with vManager
With vManager, progress reports are quick
and easy. Since the vPlan is automatically
back-annotated with progress data each time a session is loaded,
sending a report to management is a matter of selecting a predefined
vPlan perspective and a level of detail,
and then clicking a button to create an HTML report. In addition,
vManager can graph progress in a number of
ways (see the vPlan chapter below for more
details).
4. vManager and massive parallel verification
vManager is designed to be open and flexible
so that it's easy to integrate with the other tools in your verification
work flow, and so that it can scale to the size of any verification
project. vManager works with requirements tracing
tools, defect tracking tools, and simulation runners, among others.
(vManager is not currently supplied with any
of these tools, with the exception of an example simulation runner.)
The verification engineer using vManager needn't
worry about the details of these integrations; she just works with
the flow. The integrations are accomplished either by the suppliers
of the other tools or by the local tool czars.
Massive parallel verification, i.e. running sessions consisting
of thousands of directed-random simulation runs on a verification
farm, has become a pre-requisite for effective ASIC verification.
Thus, integrating with simulation runners is central to vManager.
vManager provides a number of standard interfaces
and file formats to make it easy to accommodate any kind of simulation
runner. The screen shot below shows vManager's
Session view controlling a vManager compliant
simulation runner. The verification engineer has initiated two sessions,
and one has completed with no failures.

Simulation runner integration
Figure 3 shows a typical vManager / simulation
runner integration. The verification engineer has written a session
input file specifying the simulation runs she would like to run.
This session input file can specify multiple simulation runs for
multiple combinations of , among others
- device under test (DUT),
- simulation and verification environment (SVE),
- coverage targeting constraint-set input (often called test files),
- random or specific seed.
The vManager reads in the session input
file and passes this information to the simulation runner. The simulation
runner has responsibility for initiating simulation runs and keeping
track of their results by writing the session output file. There
are hooks in vManager to facilitate automating
session execution activities, including managing file relocation
as the runs progress, as well as merging coverage data on the fly
and compressing the results databases as needed. When the simulation
runs have completed, vManager reads the session
output file to access the results for analysis. Let's dive a little
deeper to understand these components in more detail.

Session input file
The session input file specifies the simulation runs that the user
wants initiated by the simulation runner. Figure 4 shows a simple
example. Session input files use a standard format, called .esif.
(As we'll see below, the .esif has a companion format, the .esof,
used in the session output file) The format consists of simple containers
that hold attribute-value pairs. vManager
has the capability to read the .esif format and make the data available
for the user's integration with any simulation runner (see below).
As you can see in the figure, one container is the session container.
The session container holds attribute values that pertain to all
the simulation runs the runner will initiate, such as the path to
a directory for all session work.

Another container is the test container that specifies the one
or more simulation runs. Test containers typically specify some
files to load on top of the baseline verification executable, and
the either the number of runs to executed with random seeds or the
random seed to use for a single run.
The attribute-value pairs in containers include predefined attributes,
which vManager understands out-of-the-box,
as well as user-defined attributes.
vManager includes more than 30 predefined
attributes that can be used as needed to communicate with any type
of simulation runner. Some basic predefined attributes are shown
below:
| top_dir: |
directory in which session occurs |
| sve_name: |
simulation and verification environment |
| top_files: |
top-level constraint files |
| count: |
the number of times to run a verification with random seeds |
| seed: |
the seed to use for a single run |
User-defined attribute interface
While vManager tries to accommodate any simulation
runner with its predefined attributes, there can be a need for attributes
not included with vManager. For instance,
a particular simulation runner may need a watchdog timeout value
for each run that it uses to stop the verification if a user-specified
time has passed. vManager's attribute interface
makes it easy to declare new attributes like timeout that vManager
can then interpret when it reads the session input file.
User-defined attributes are captured in e and loaded on top of
vManager. This can be as simple as instantiating
a newly named attribute from the rich set of attribute classes provided
with vManager. This attribute will then be
automatically recognized by the .esif or .esof reader. Or if the
application demands that the attribute receive special handling
in the .esif or .esof reader, the integrator can have her attribute
inherit from the one of the attribute classes and modify its behavior
as needed. Making it easy to declare new attributes and read them
from the session input and output files is one way vManager
streamlines integration with other tools in the verification workflow.
The simulation runner
A simulation runner is a tool that, given a request of what to run,
causes multiple simulation runs to happen. A simulation run is an
activation of Specman Elite, a simulator, and any other runtime
tools. Simulation runners are typically sets of shell or perl scripts
that set up verification directories, build executables, and run
simulation runs. They range in complexity from simple serial runners
that execute simulation runs one after the other on a single machine
to integrations with the compute grid's load balancing system that
manage multiple simulation runs in parallel.
Communicating with the runner
Just what's going on along that path from the session input file
through vManager to the simulation runner?
As mentioned earlier, vManager includes a
.esif reader that makes the session input file's contents available
to the test runner integration code. Specifically, vManager
includes an empty e method, start_session(),
that the tool czar will use to implement the communication between
vManager and the simulation runner. start_session()
first reads the session input file using the built-in read_esif()
method, and then is free to implement, in e,
any type of communication with the runner.
For instance, many simulation runners that predate vManager
will have their own text file input for specifying what to run.
In this case, the start_session() method may simply translate the
information from the session input file into the format required
by the legacy runner, write this information to a file, and launch
the runner. This would complete the front end of the simulation
runner integration.
To accommodate the backend simulation runner integration, the tool
czar would modify the runner itself to write the session output
file. vManager includes a number of perl
scripts to make it easy to accomplish this backend integration,
including writing the session output file in its standard .esof
format.
Session Output File
The simulation runner is responsible for writing entries to the
session output file at the end of each run.
As you can see in Figure 5, session output files are similar to
session input files, and are written in the human-readable standard
format called .esof. Session output files have three containers,
session, run, and failure. As in the session input file, the session
container holds attribute-value pairs that pertain to all the simulation
runs in the session. The session output file contains one run container
for each verification initiated during the session. Run containers
hold attributes that contain all the information needed to reproduce
the run, that point at all the log and coverage results files from
the run, and a failure container for each failure logged. The simulation
runner is responsible for writing entries to the session output
file at the end of each run.

5. vManager and the annotated verification
plan
As we have seen, vManager helps the verification
team execute a large number of simulation runs in a single session,
store and display the output data efficiently, and measure the results
of one or more sessions against the goals of their annotated verification
plan. Let's examine the annotated verification plan in more detail.
What is the annotated verification plan?
The annotated verification plan, or vPlan,
is a standard, human readable format for describing the verification
plan for a DUT or a group of related DUTs. The primary goal for
the vPlan is to be the top-level framework
for organizing and managing the entire verification process, including
hardware and software, from high-level modeling to RTL to post-silicon,
and from module to system. To accomplish this, it provides
- a hierarchical description of the DUT features, corresponding
to sections in the plan, that should be verified,
- a description of the desired checking and coverage goals to
be achieved at each hierarchical section,
- and a description of how the sections and goals relate to the
various phases of the project and to various project deliverables.
The vPlan format
The vPlan format describes a forest of sections.
Each such section typically describes one functional part of the
verification plan. Figure 6 shows part of an SoC vPlan
that we'll use to describe the vPlan format
in this section:

From this first example, you can see:
- the vPlan consists of a hierarchy of
sections,
- the "description" attribute contains an informal text
description of the section which is ignored during vManager
processing,
- the "coverage" attribute specifies a set of coverage
items relevant for that section,
- the "checks" attribute specifies a set of checks relevant
for the section in a format that use string matching to identify
the checks by their text messages and
- other vPlans can be declared and instantiated.
Here is how this vPlan might look in vManager:

Once the section hierarchy of the vPlan
is displayed, the annotated results can be viewed to any level of
detail simply by pointing, clicking and expanding (or contracting)
the scope of the tree view. The user also accesses the coverage
analysis engines through this view (see below).
Perspectives
Given a project vPlan, project leadership
may need to define different perspectives on the plan, where each
perspective has the opportunity to modify the checking and coverage
goals of each section.
Here are some typical dimensions of the vPlan
perspective:
- The "project phase" dimension, which has phases such
as "Ready for integration", "Ready for prototype",
and so on,
- The "DUT representation" dimension. Typical representations
are "HLM" (High Level Model), "RTL", "Post
silicon", and so on,
- The "DUT subsystem" dimension. For instance, the team
may be verifying separately block by block, or a set of blocks,
or the full SoC without this SW, and so on. Typical names in this
dimension would be "DSP", "Controller", "GPIO",
"USB", "I/O Subsystem" (containing the previous
two), "SoC HW", "SoC HW and SW drivers", "Full
system with SW", and so on.
Other dimensions are also possible. For instance, the project may
have an important customer X who is only interested in a subset
of the device's features. Project leadership can create a "Customer
X" perspective which gives very high weights to those features
only, so management can evaluate verification progress from vantage
of customer X sales.

Perspectives and verification goals
Each vPlan perspective can change any or
all of the goals, weights, and at_least number of the coverage items
that comprise some or all of the sections.
The goal is simply a number between 0 and 100. Essentially, this
is the expected grade in percentage for that section, or the word
NA for "Not Applicable". When the perspective is selected,
the coverage results will be presented relative to this goal, rather
than the default 100%.
The weight is a non-negative number that describes the relative
importance of the section. It gives a weight to the section relative
to other sections. The default weight is 1.
The at_least is a non-negative number that specifies the minimum
number of times each coverage item in the section needs to appear.
It influences all coverage under the current section.
Representing perspectives in the vPlan
format
Perspectives are represented in the vPlan
format using the perspective container and the section extension.
Figure 7 shows a simple excerpt from a perspective definition for
the previous SoC example.
Loading these perspective definitions on top of the previously
defined section hierarchy allows project leadership to selectively
view progress normalized to two different goals. In this way, the
coverage holes that are important to the project from different
perspectives can be highlighted and targeted.
Coverage progress reporting
vManager not only helps management understand
the current situation, it also helps analyze the project trends.
By loading the results from any selection of session data, project
leadership can graph the progress from any perspective. vManager
can graph the progress towards vPlan goals
with the data grouped by dated session and with all the runs coverage
data summarized as the verification status for that project date.
vManager can also graph the progress towards
vPlan goals with the data grouped in many
other ways, including by individual run as shown below.
In addition to its own graphing and reporting capabilities, vManager
can export data in the industry standard .csv format for import
into existing management reporting applications.

Coverage hole analysis
As mentioned above, viewing the coverage data through the lens of
the vManager vPlan
sections and perspectives help the verification engineer identify
and prioritize unachieved coverage. However, large coverage cross-products
with widely-scattered holes still present a problem for coverage
targeting. Typically, cross-product coverage models include hundreds
to thousands of buckets to fill, and large numbers are unfilled.
vManager's vPlan view
makes sessions more efficient by analyzing and grouping cross holes
to facilitate more direct targeting. The screen shot below shows
the results of such an analysis. This example shows that a 32 bucket
cross coverage space with 18 atomized holes can be reduced to just
two holes for the purposes of coverage targeting.

6. vManager and failure analysis
As the number of verification runs per session grows into the hundreds
and beyond, processing of the failures that these runs produce becomes
a major bottleneck in the verification process. As noted earlier,
vManager provides a number of tools to facilitate failure analysis
based on the attributes collected in the .esof file, including sorting,
grouping and filtering. The screen shot below shows a typical runs
spreadsheet.
Sorting
The data in the rows can be sorted interactively by one or more
columns simply by clicking on the column header. Sorting is useful,
for example, in identifying the failed run from a set of failed
runs with identical errors that exhibits the failure the earliest
during the run.

Grouping
One of the common requirements when analyzing sessions is finding
similarities between runs. Those similarities can be very simple,
such as all runs that were completed successfully or all runs that
failed. The similarities can also be very complicated, such as all
runs whose coverage grade on a specific item is more than zero,
had no warnings, and took less than 1000 cycles to run. Finding
such commonalities, either simple or complex, is enabled by the
grouping feature.
Filtering and context
In many cases, analysis needs to be performed only a subset of the
runs in a session or sessions. For example, a verification engineer
may want to filter out any failed runs that he is not responsible
for debugging. To enable selecting and using a subset, vManager
provides a filtering tool that lets you drop runs from the display.
The filtering tool can filter based on the values of one or more
attributes. Each filtering action can be applied so that all matching
elements are either included or excluded.
Filtering establishes a context for other analyses. The runs that
remain after a filtering action are the only runs that subsequent
analysis engines, such as coverage analysis, will operate on.
7. Custom process automation
Throughout this paper we've seen how vManager
helps automate the entire verification process. Beyond the capabilities
already discussed, vManager provides three
additional facilities that offer verification engineers and managers
the opportunity to customize the automation offered by vManager.
Automating the routine tasks of any verification process is furthered
by vManager's configuration save, gui-based
batch macros, and database API.
Configuration
The grouping, filtering, and sorting rules, as well as the current
run attribute set, is called the vManager
configuration. Configurations can be named and saved, and then recalled
instantly. During analysis, the user can switch between alternative
configurations as needed, and then continue analysis on top of the
selected configuration.
For instance, a verification engineer could define the my_failures
configuration that combines the filtering rule of "include
only runs associated with my name", the grouping rule "first
error" and a set of attributes relevant for failures. Then
this engineer would load the my_failures configuration each time
she entered vManager for failure analysis.
GUI-based batch macros
Any action that can be accomplished through the vManager GUI can
be easily scripted in e and played back at any time. In this way,
a user's common analyses can be scripted and replayed without having
to use the mouse.
Database API
Deeper access is available through the vManager Database API. This
API makes available all the data stored in the current sessions
to user e-code. By using the API, the user can create any kind of
analysis engine on top of vManager.
8. Conclusion
vManager brings automation to a broad range
of tasks in the verification process. For the verification engineer,
vManager eases the administration and analysis
of large simulation sessions, speeds the analysis of failures, and
enhances all aspects of coverage analysis. For the verification manager,
vManager's vPlan analysis
and reporting brings greater insight into verification progress and
finer grain control of resource allocation and schedule predictability.
Overall, vManager enables a metric-driven verification
process that can scale to the large designs being verified today and
the larger ones to be verified tomorrow. |