Académique Documents
Professionnel Documents
Culture Documents
Successful Verification
Managing time and resources using advanced functional verification
By studying a number of successful advanced verification teams, a set of
common guiding principles emerge. These principles guide how teams perform the process of verification as well as manage their time and use their
resources. Throughout this book we present best practices used by advanced
verification teams that can all be traced back to these common guiding
principles.
TIME MANAGEMENT
Time management is an important part of any complex process. With
proper time management, verification teams can complete verification sooner
or perform more verification in the allotted time.
Start Early
Every development project is unique and often requires new approaches
for functional verification. Starting the process of verification early in the
project enables the team to plan for new approaches and to adapt to changing
environments. Starting early also allows verification to guide important early
decisions, such as IP selection and feature support. As verification becomes a
larger and larger portion of the development process, more decisions will
need to be made to weigh the trade-offs and effects.
Functional verification requires preparation. If the verification team waits
until the design has been implemented to begin, time is wasted developing
and debugging the verification environment and tests. Verification teams
need to be ready to test the implementation before it is received so that no
time is lost.
Successful verification teams start by demonstrating the value of having
verification knowledge early in the process. These teams become involved in
the development and testing of system models used by architects and system
designers. They also try to decouple the development of verification environments and tests from the implementation process so that they can be done in
parallel. Of course, it is impossible for teams to engage in new projects early
24
Professional Verification
Remove Dependencies
The time it takes to complete a complex process like functional verification can be reduced by speeding the individual subtasks of the process or by
removing the dependencies associated with the subtasks. Successful verification teams understand that time spent waiting for a deliverable from one task
to start another task is wasted time. Removing dependencies not only
decreases the amount of time to complete the overall project, it also uses the
resources more efficiently throughout the project. Waiting for deliverables
like HDL code or specifications leads to large spikes in resource utilization,
followed by lulls as the resources wait for the next key deliverable.
Removing dependencies from external teams that are waiting for deliverables from the verification team reduces project time and improves the
perception of the verification team. Implementation teams must wait for a
bug-free design, and software teams often wait for functional models before
beginning implementation. Staying off the critical path for the project should
be an important goal of any verification team.
Successful verification teams remove dependencies in a number of ways.
Many teams develop their own high-level system model to use in place of the
HDL for developing tests and environments. The same system models can
also be used as an executable specification, alleviating the need to wait for a
functional specification. External dependencies can be met by providing the
high-level model or an early prototype or emulation system to software and
system design teams.
25
RESOURCE USAGE
Managing resources within a verification process is not simply trying to
optimize and do more verification with fewer resources. Resource management also includes building teams and environments that facilitate efficient
high-quality verification.
26
Professional Verification
Build a Team
The goal in building a successful verification team is to have a team whose
total abilities are greater than the sum of its parts. Successful verification
teams most often consist of individuals who have a common baseline knowledge of verification as well as specialized knowledge in specific areas. Each
team member is familiar with basic test writing and debugging skills in addition to an in-depth knowledge in an area, such as software development,
testbench development, scripting, or emulation.
Just as engineers learn the profession of verification through experience
and mentoring, verification teams also are built through experience and
benchmarking. As a team works together, it learns to utilize the individual
skills to meet the goals in the most efficient manner. Successful teams also
benchmark themselves against other teams and learn from the best practices
of these teams.
Successful verification teams build a cohesive team by selecting the right
members and keeping them together. These teams select members with a
wide range of abilities and experience. The verification process has many
complex tasks that require experienced individuals, and it has many basic
tasks that can be performed by less-experienced members. Having a well-balanced team keeps everyone engaged in the process and provides a path for
development. A trademark of many of the most successful teams is that they
have worked together for many projects. Keeping a verification team together
is often difficult, but the benefits are enormous.
27
VERIFICATION PROCESSES
The verification process is made up of many smaller separate processes
and techniques. Each of these smaller processes has its own unique tools and
methods. Selecting these tools and techniques carefully results in the most
efficient overall process.
28
Professional Verification
detected faster with less effort with dedicated static tools. These are just a few
of the possible trade-offs teams should make.
Automate
Automating the various tasks of the verification process reduces the time
and effort the team spends on repetitive tasks. The verification process contains many individual tasks that might be repeated hundreds or thousands of
times during a project. Automating these tasks might not speed up the individual task, but it does free up valuable resources to concentrate on other tasks.
Resource loads can be balanced to utilize the available resources, such as
computers and software licenses. Automation can also facilitate higher quality results. Human error can easily enter long repetitive tasks, such as running
large test suites and collecting results. Removing the chance of human error
assures more consistent reliable results.
29
APPROACHES
Proper management of time, resources, and tools results in a highly efficient advanced verification process. The last group of principles encompasses
the overall verification approaches that successful verification teams use.
30
Professional Verification
gram streams, or traffic flows taken directly from real-world applications. The
teams also utilize tools, such as emulators that allow the design to be tested in
a real-world environment. This extra verification not only verifies that the
design works correctly, but also verifies that the testbench and models that
were used are correct for future use. Finally, these teams write their environments so that tests can be written at a higher application level and results can
be debugged at that same high level. Transactors or adapters are written to
translate between these higher level data abstractions, such as an image or a
packet, down to the signal level necessary for detailed verification.