Testbench logging is front end of the debug. These logging guidelines are designed to help make debug effective, not only for selected geniuses in team but also for everyone. Debug activity affects entire team and carried out throughout product’s life cycle. Logging is one of the very important contributors in making debug efficient and simple.
Some of the following guidelines for easing the debug may require additional code implementation beyond normal testbench or test functionality. But this additional effort pays off by saving the valuable engineer’s time during debug throughout product’s life cycle. Let machine’s do bit extra work to reduce the human effort. What do you say? (more…)
Verification project management gave an overview of the six essential parameters and three phases of the verification project. This article will focus on applying the six essential parameters to regression phase which follows planning phase and development phase.
This is the final phase and climax of the verification. It’s a highly intense phase of verification. Regression phase duration cannot be controlled. It’s extremely difficult to plan for it and make this schedule bound. A general rule of thumb is, it will take about 1x-3x of the time it has taken for the development phase based on the quality of planning and development phase. Regression is highly reactive phase. Only quick response with the dynamic adaption is the way to closure. (more…)
Verification project management gave an overview of the six essential parameters and three phases of the verification project. This article will focus on applying the six essential parameters to development phase which follows planning phase.
Development is a steady phase of the verification project. Development schedule will remain mostly in control as long as the good job is done in planning. It should be done. A good task management system is central for the development activity. Verification team expands during this phase. Process should be put in place for productive absorption of engineers in to team. Development phase well executed will make verification team to look forward for regression phase. Development and regression phase repeat for every milestone.
Key objectives of this phase:
Get the internal BFMs development done
Get the test bench development and DUT integration done
Get the most of the test writing completed
Get the sanity tests passing for all major features
Development phase: Clarity
Verification team size starts growing. New members come in. Make sure the team is aware of the relevant parts of the specifications, verification plans and test bench architecture
Clarity about the verification strategy by every team member in verification team is extremely important
Specification experts, technical leads should present about the specifications, verification plans and test bench architecture to accelerate the ramp up
Test bench architect should have one-to-one sessions with the major block implementers to explain the abstract classes. Interfaces and functionality should be covered. The expectations should be clearly called out.
Technical lead or verification manager should then discuss the milestones and tasks lined for the milestones. The tasks should be assigned out engineers. Schedule buy-in should be obtained from engineers at ballpark level
Discussions about the abstract classes which architect has implemented for guiding the implementation and milestones should be series of discussion throughout this phase to maintain the clarity between architect, engineers and manager
Various processes, simulators, proprietary tools, pointers to documentations, tasks tracking system, bug modules, code repositories, recorded trainings, FAQs should be introduced and pointers should be passed to development verification team coming on board.
More importantly any internal methodology wrappers, reusable code libraries, code reuse from other projects should be clearly called out to the verification team
Our engineers are smart they will figure everything out. Sure, it will waste their finite precious energy on stupid things and then don’t complain about the delayed poor results where it matters. Don’t complain about the rules broken and stupid mistakes. Make it easy wherever possible so that engineers can stretch where it matters. Please do
High level verification language and verification methodologies are projected as big challenges in implementation, They are not as big challenges as establishing clarity on above points
Development phase: Metrics
Full development
Total milestones
Completed milestones
Percentage completion in current milestone
Total development man days pending
Tasks
Total tasks
Completed tasks
Pending tasks
Current milestone
Total tasks of this milestone
Completed tasks of this milestone
Total tasks per engineer this milestone
Total completed tasks per engineer this milestone
New tasks added to milestone
Development phase: People
Test bench development has some areas where you want to your expert engineers handling it. They are, in stimulus generation constrained random control event generation, in checks implementation scoreboard and bus functional models if they are being developed in house
An enthusiastic engineer should be encouraged to ensure productive development environment for everyone. This role can be played by the technical lead as well partly along with junior engineer. It involves hooking everything and getting simulations up and running, keeping check-in regressions healthy, setting up flows for compile, simulation, full regression ownership and any productivity enhancements. This is a key role and tough one. It should be well supported and appreciated by everyone in team
When team grows beyond four members create smaller teams with the enlarged scope of tasks under a theme. For example a layer ownership in protocol based BFM. Smaller teams or would call them tribes work very well. This also creates the support system by creating the knowledge pipelines. It helps in covering one another during vacations or attritions
Group the related tasks and help engineers build the expertise. They love to meaningfully develop themselves. Help them to develop mastery and become better
Verification lead should be available any time when needed by verification team for discussions, brain-storming sessions, to help engineers when they get stuck with some problems, clearing day-today issues or working knowledge related questions. This will ensure development engine keeps running at full steam
Load balance based on the tasks per engineer to avoid burn out of the engineers
Development phase: Tracking
Development is also creative work. Some of the blocks need time to build them well. To make the code reusable. Use the medium level of follow up for best results
A good task tracking system is key to development management. Task management system should be able to generate most of the metrics listed automatically
It’s not just sufficient to set up the tasks. Periodic scrub of the tasks is equally essential. Scrub to discover if tasks are blocked for information or dependencies. Keep clearing obstacles to ensure continued progress
Tasks lists are mainly owned by the verification manager or verification lead. Encourage team to add new tasks discovered to task management list. Task lists are also assets. Task lists provides good understanding of work to be completed and load on engineers. Tasks worked without being on tasks management system can mislead the total project work and individual engineer’s workload
Weekly meetings should be utilized as opportunity to assess how the closure on the current milestone is coming up. This should be used as opportunity to bring up the surprises and to identify the areas that need more attention
Not every development task or engineer requires equal attention. Identify critical tasks and complex tasks that need attention. Verification lead should pay more attention to those tasks
Verification leads should invest more time with the engineers who need it rather than disturbing star engineers. They will take it to closure to faster if they are left undisturbed and they will appreciate the autonomy
Blocks that are slipping schedules or getting many new tasks than average across other blocks are also candidates for the special attention. This is the area for architects to review as to what is missed in the initial assessment. It may be possible major chunk missed in architecture and engineers are discovering it in small pieces at time. Architects should analyze and get to root of it
Development phase: Review
Code reviews for every code check-in is great but may be an overkill. Of course nuclear weapon can also kill mosquito if you have that luxury. Code reviews at certain milestone points are very productive. Invest in the code when it has proven to be useful by meeting functionality of the milestones. Premature code reviews are waste of precious energy
Code reviews are best done as a code walkthroughs between developer and reviewers. This provides opportunity to developer to provide the context behind the functionality of the code. This ensures the time is optimally utilized for everyone and best from the code reviews can be extracted
Code reviews are also opportunities for providing short customized feedback to the developers on the areas for the improvements and learning’s
Code review actions should not be left floating in email or code review system. Code review actions which require more than couple of hours of time for fixing should go in the task tracking system
Alignment with the architectural intent, functional correctness, adherence to standard coding practices and ease of understanding and maintainability should be accessed as part of review
One of the ignored parts of verification planning is verification of checks itself. This should be questioned as part of the review
Development phase: Closure
All the developed code should pass the sanity tests. It’s understandable that the detailed verification will be carried out in regression phase. All code developed should be compiling and sanitized with the basic tests.
All critical code review actions should be addressed. If its not completed the same should be added to the task tracking system
Compile warnings and run time warnings should be periodically reviewed and should be fixed unless its an approved as exception. These lead to failures to be painfully debugged as programming errors
Any code limitations or parts of the features planned but not implemented should be documented. Tasks to fix these later should be added to the task tracking system
Some times even when milestone approaches not all the tasks planned may be completed. Make an evaluation if the milestone needs to be extended or remaining tasks be moved to next milestone. Some times, it may make sense to move remaining tasks to next milestone and adjust the schedule accordingly rather than squeezing it and doing a poor quality job in rush. This provides the closure and provides sense of progress
Verification project management gave an overview of the six essential parameters and three phases of the verification project. This article will focus on applying the six essential parameters to planning phase.
Planning is very important phase of the verification project. Verification plan and test bench architecture are created during this phase. It sets the foundation for the development phase and regression phase. Entering execution with weak plan is like taking a route of slippery slope. Once taken there isn’t much chance of recovery and it takes you down for deep fall.
Get the detailed tasks list for the test bench development
Milestones lists and division of the tasks per milestone
Next let’s look at what each of the key management principles identified in the verification project management translate to in the planning phase.
Planning phase: Clarity
Following four elements should be clear during planning phase. Overall work scope clarity needs to be established during this phase.
Scope understanding: Scope of the verification is based on the specifications. Key prerequisite for planning phase is specifications. Specifications mean both the standard requirement specifications and implementation specifications. Most of the today’s designs deal with multiple specifications. It’s very important to identify the list of all the specifications applicable.
Specifications understanding: Clear understanding of the specifications both the requirement specifications and micro-architecture specifications
Verification strategy understanding: A clear verification strategy needs to be established based on the specification scope and understanding. This forms the basis for the verification plan and test bench architecture creation
Team understanding: Clear list of the contact persons in architecture, design and verification team at one place
Planning phase: Metrics
Metrics during planning phase are meant to provide the idea about the completeness of the verification plan, test bench architecture and development task lists creation.
Total number of features
Verification plan completeness percentage
Number of tests identified
Number of checks identified
Number of the functional coverpoints identified
Test bench architecture completeness percentage
Overall architecture completeness
Major blocks of test bench
Total number of major blocks identified
Total number of major blocks for which interface and functionality is defined
Abstract classes
Total number of classes identified
Total number of abstract classes coded and compiling
Development tasks lists
Total number of blocks for which task list is identified
Total development tasks
Planning phase: People
Best of your experienced engineers should be working on verification plan and test bench architecture development. There have been misconceptions to get this done by the relatively inexperienced engineers with perception that all we are producing is a document finally. This is totally a wrong perception to follow
Technical leader of the project should be involved in this activity very actively. He should be one of the key contributor to verification plan and test bench architecture
Engineers with natural attraction for the engineering depth are well suited for this activity. Both the verification plan and test bench architecture requires someone to put his heart into activity and go deep in the details. Figure out as many things as possible
Engineers working on plan should be allowed to think theoretically enumerating all the verification scenarios without worrying about the resource and schedule content. Think theoretical and execute practical approach should be followed
Planning phase: Tracking
Planning phase involves one of the highest levels of creative work. Out of box thought process may be required to set the verification strategy. Good test bench architecture requires fairly deep and creative ideas. Make sure it’s not rushed through. It’s easy to rush and create half-baked plans as it’s difficult to judge if it’s complete in early stages of the project
Put your best team in action and trust them to use their best judgment. Agree we do not want paralysis by analysis situation but at the same time high pressure to close can result in premature closure. Premature closing of planning phase will result in costly reworks later. Its pay now or later with huge interest rates
Put your team working on planning and architecture in an island. Talk to them only when needed. Allow the team members to get into flow state for best work to emerge. Instead of weekly consider biweekly or monthly status tracking of the metrics identified.
Planning phase: Review
Verification strategy should be carefully reviewed. It sets the basis for the verification plan and test bench architecture
Verification plan structure review has to be conducted periodically. This ensures no big ticket items are missed
Review of the verification strategy, verification plan and test bench architecture should be conducted with the architecture and design teams
Verification plan should be executable. It should not be limited to a very high level plan. A junior verification engineer should be able to pick up the test plan and should be able to write a test, implement a check from checks plan and write cover points from functional coverage plan with very little interaction with the verification plan owner
Verification managers should pick a feature and question it for its consistency in thought process across all three test plan, checks plan and coverage plan
Architecture should be questioned for flow from normal operation, error injection, control event generation and processing, various checks implementation and ease of functional coverage collection point of view
Alignment of the verification plan and test bench architecture to the verification strategy should be reviewed
Review actions should be tracked and closed. It’s possible that certain areas are going to remain open for a while till the further understanding is developed. This is fine as long as they are clearly documented and tracked
Planning phase: Closure
All the specifications applicable are identified and made accessible in a global shared location for verification team
Code repositories for development, email aliases for the communication and discussions, Task tracking system for project and bug database are setup
All three plans test plan, checks plan and coverage plan constituting the verification plan in executable form should be checked-in under code repository
Detailed test bench architecture in place and checked-in under code repository
Reviews of the verification strategy, verification plans and test bench architecture completed. Major review items addressed and open items documented and put in a task tracking system for closure
Tasks list for all the development activities captured in the task management system. Tasks grouped under the functional milestones
Schedule forecasts made created based on tasks lists. Based on the forecasted schedule, deadlines and current team availability hiring or external contractors required for the next phases should be identified
Decisions regarding the exploration and evaluations of third party Bus functional model(BFM )s, verification solutions or tools should be short listed
Simulator licenses and compute resource requirements should be checked for sufficiency based on the forecasted verification plan’s requirements. If additional upgrades are needed the procurement process should be started
It’s possible verification plan and test bench architecture is not 100% complete. It’s hard to achieve that unless its repetition. Focus during planning phase should be on completeness of major sections in verification plan and major blocks in test bench. Second level of sub-sections in verification plan and details of blocks in test bench architecture can be complete any where between the 60-80 %. This provides good visibility and rest can be figured out as part of development phase. This achieves balance between waiting too long vs. starting too early
Verification project management is a set of process and principles to achieve high quality verification results. These process and principles are anchored around six essential generic parameters. Six essential generic parameters are Clarity, People, Metrics, Tracking, Review and Closure. Verification project consists of primarily three phases. They are planning, development and regressions. All six essential generic parameters are applicable to all three phases of verification.
This article is organized as:
Brief introduction to six essential generic parameters
Brief overview of three phases
Brief introduction on people management
Brief introduction on role of Verification manager
Applying these managmement concepts in all three phases
Clarity:Identifying the aspects that should be clear. It can be clarity of goals, tasks, timelines and process. Clarity is not absence of ambiguity but a constant battle against the ambiguity.This is asingle most important factor that keeps team motivation levels up and translates to results.
People: Right person for right job is half the job done. Bad engineers are rare. Most are just mismatches in assignments.
Metrics: Management guru Peter Drucker quoted “If you can’t measure it, you can’t manage it”. Metrics provide indication of how the project execution is progressing. Right metrics provide insights to improve the execution.
Tracking:Tracking is a process of collecting metrics and using metrics to tune the processes to achieve the desired results.Tracking provides the push required for closure.
Review: One of the popular Russian proverb says “Trust, but verify”. Review is a process to guard the quality in each of the tasks to achieve overall quality goals.
Closure:ABC of verification project management is “Always be closing”. FunctionalVerification is never ending process. Unless you close it, it will go on.
ABC of verification project management
Three phases of the verification project:
The three major phases of the verification project are planning, development and regressions.
Planningphase primarily focuses on creating verification plan and test bench architecture. Verification plan consists of test plan, checks plan and coverage plan. Based on verification plan and test bench architecture detailed task lists are created.
Developmentphase focuses on building the bus functional model(BFM), test benches and tests. HVLs and Verification methodologies play a major role in building these.
Regressionphase is about executing all tests and its variants to catch the issues and meet the coverage goals.
These phases do not have very precise boundaries. Only the focus moves from one phase to another during project cycle. The phase under focus gets more attention and resources.
Planning phase gets highest attention during the initial part of the project. Planning activity mostly completes about 70-80 % during planning phase. Remaining part of planning activity completes within first 50 % of the development cycle.
After the initial planning phase completes, the verification project execution is divided into multiple milestones for making feature verification time bound. Every milestone starts with brief planning activity mainly consisting of scheduling of tasks subsequently it’s dominated by development and regression phases. Milestones early in verification project are development dominated and towards end it’s dominated by the regression phase.
People management
People management aspects are not covered in detail as part of this article. This is the only paragraph on people management aspects. Quoting some of points from Dan Pink’s TED talk on puzzle of motivation. Extrinsic motivation works great for left-brain tasks made up of clear set of rules and have a single solution to problem. Functional verification does not fall in that category. It does not mean there aren’t any tasks of this nature. But it’s dominated by the tasks that require some level of creativity and ability to deal with ambiguity.
Extrinsic motivators of the type carrot and stick alone cannot provide results. Management is for compliance. Self-direction is for engagement. New age mantra for driving teams is to create environment of autonomy, mastery and purpose.
Ending this topic, by quoting Sahil Gupta, aspire to be a leader whose legacy is not just the products delivered but also the teams created. These form principles for people management.
Verification manager
Verification manager plays a key role in the verification project management. Look at the composition of the successful verification teams to understand the roles and responsibilities of the verification manager further.
One of the key responsibilities of the verification manager is to define, refine and improvise process to achieve sustained high quality verification results. We have developed a framework to help you do a quick audit of your constrained random stimulus. This will help you make your stimulus work hard for you and helping you meet your verification quality goals.
Take care of process and results will take care of themselves. – MS Dhoni (Captain of Indian cricket team)
Project manager is an owner. An owner who needs to ensure the quality of the verification meets the requirements and results are delivered in time. Project should not be organised around project manager. Project manager should organise project around sound principles and processes.
There are multiple phases of the verification project. Each phase has it’s own challenges. Each phase has it’s own of best practices suitable for it. Each of the generic essential parameters identified should be viewed in the light of requirement of verification project phases. Be it tracking, metrics used, reviews conducted, follow up styles should be adapted to meet the objective of respective phase.
Inspite of all the efforts some times its challenging to meet the verification quality goals. Our services can help you quickly spot the coverage gaps in your constrained random verification.
Let’s now look at how to apply six essential generic parameters in each of the planning, development and regression phases.