Proven Strategies for Better Verification Planning
We have found over the years that design projects face unnecessary risks and inefficiencies due to insufficient or ineffective verification planning. A poor (or missing) plan does not allow the team to easily track actual progress towards the planned schedule. On many projects, verification plans are often written early in the project, and then completely ignored by the team, never getting updated or revised as the project changes and progresses. Additionally, it is rare to find training on how to do verification planning, resulting in ad-hoc approaches. The following consequences are typically seen as a result:
There is ambiguity on the verification status throughout the project. The team is unable to accurately articulate where the project is in the development cycle, which can cause mistrust from management.
Tasks are given inappropriate priority, often block-based instead of feature-based.
There is poor communication within the team. Without clearly defined deliverables and schedules from the verification team, the rest of the project members can’t plan their work.
There is a lack of risk management for common surprises, such as requirements changes, unclear specifications, blocking bugs, and implementation challenges.
Ultimately, these problems will reduce design quality, result in missed milestones, and generally make everyone’s lives unnecessarily stressful.
In this lecture-style workshop, we will address some common problems we have seen faced by verification teams, and provide techniques and guidelines based on extensive project experience. Attendees will learn how to identify common pitfalls that can doom a verification plan, and how to avoid them. These include the following:
Focus on Features: We will demonstrate techniques for feature identification that allow us to be more strategic and accurate in our planning. These techniques produce better plans than the common approach of merely dividing a design by RTL blocks. We show how to break features into smaller sizes for more accurate scheduling, define agile-based user stories, and apply Mutually Exclusive, Collectively Exhaustive (MECE)
Linear Progress: Attendees will learn how to divide work based on incremental sections, building on what is already completed. By verifying smaller sets of features, we can break away from the restrictions of block-based testbench features that limit our progress.
Actionable Definitions of Done: Defining deliverables in terms of what will be demonstrated provides more clarity and accuracy over the lax definitions of done that are commonly used. It reduces the chance of work falling through the cracks and ensures the team is in alignment from the beginning. Attendees will learn how to craft deliverables that clearly communicate what feature is being verified without ambiguity from project changes.
Modern Methodology: New standards and larger chip sizes mean greater reuse than ever, both of the RTL components as well as the testbench. Modern verification means that it is necessary to address items such as UPF, PSS, emulation, as well as requirements tracing in addition to the traditional tasks like scheduling and coverage planning.
Efficiency: Our techniques help to simplify and compartmentalize verification plans. This can assist in getting work started sooner, as well as avoid documentation rot and allow the verification team to be more responsive to changes during the project.
By combining these techniques teams will be able to plan more efficiently, begin verification more quickly, and progress more steadily. They will also be better able to communicate their progress and status with the rest of the development team.
The techniques we will be teaching are compatible with, but do not depend on, agile development, UVM/SV, or any particular vendor’s tools. The techniques will touch on how to plan the development of various blocks of the testbench in a UVM style testbench, including TB infrastructure, sequences, coverage and checking.