There is already a lot of knowledge and literature on verification technologies available of the web today. Today I wanted to write about the planning and management aspects of verification.
In any kind of project, planning plays an important role. All military missions are backed by solid planning. The foundation of sound verification is built by a sound verification plan.
What are the ingredients of a sound verification plan :-
1) Schedule - A tentative estimate of the timelines and schedule for the complete project helps you to understand how much effective time you have to perform comprehensive verification of your module
2) What to Verify : Testplan - An understanding of the "What to verifiy (Verification Goals)" or feature sets and scoping is the primary requirement in verification. Depending upon whether you are doing IP level/subystem level or SoC level verification, your scoping and feature set differs. Same is applicable for your coverage criteria.
3) How to Verify : Architecture - Your verification architecture determines the how part of verification. A simple, user-friendly and yet powerful architecture of the verification testbench determines greater efficiency and efficacy of verification. Needless to say, your verification architecture is the foundation of your success in verification. This includes the flows and methodologies as well.
4) Tools, Flows and Methodologies - Depending upon the above two criteria, you decide what tools and technologies you want to employ in order to achieve your verification goals.
It has been a cliche nowadays to have very sophisticated flows for verification which are very complex and not at all user friendly. The principles of great flow design are :-
1) Simplicity
2) User-friendliness
3) Systematic and methodical
6) Linux resources - You also need to estimate the disk space needed for your team and also for performing regressions
7) Team Demographics - Now that you know the what and how of verification, you need to decide your team structure. This is a critical aspect of verification.
To give an example of the same, I would relate it to the recent surgical strikes by India on terrorists.
Each team of special forces was comprised of specialists in different areas e.g., there were snipers, medics, close combat specialists, communication experts etc. etc.,
Similarly a strong verification team should consist of experts in different areas who work together to execute the project with absolute perfection. Sometimes you may not have experts, in that case you need to develop expertise through learning sessions for the entire team.
8) Knowledge Management - that brings us to the next topic, how to develop/ build expertise to execute the project and also have a mechanism to capture this knowledge in tangible form so that it is not lost and can be passed on to posterity.
A systematic ramp-up plan is essential for sound project execution. Here I would refer to the Japanese word "Nemawashi", which means groundwork.
9) Metrics Generation - every project is essentially tracked by senior management in terms of its progress. You need to decide how you are going to generate the metrics for your progress tracking, and you need to build in those hooks early in your verification plan and methodology so that the metrics tracking data can be generated seamlessly. For example coverage data is one such metrics.
10) "The Parkinsons Law" - This famous law from economics states that " Every work expands itself to fit in the available time". We need to be very aware of this phenomenon. The antidote to this phenomenon is to divide all the macro tasks to micro-level tasks and allocate time for them in an atomic manner. So that would effectively mitigate the Parkinson's Law.
These are some of the salient points that one can take into account for an effective verification plan. In my next note, I would discuss about verification management.
In any kind of project, planning plays an important role. All military missions are backed by solid planning. The foundation of sound verification is built by a sound verification plan.
What are the ingredients of a sound verification plan :-
1) Schedule - A tentative estimate of the timelines and schedule for the complete project helps you to understand how much effective time you have to perform comprehensive verification of your module
2) What to Verify : Testplan - An understanding of the "What to verifiy (Verification Goals)" or feature sets and scoping is the primary requirement in verification. Depending upon whether you are doing IP level/subystem level or SoC level verification, your scoping and feature set differs. Same is applicable for your coverage criteria.
3) How to Verify : Architecture - Your verification architecture determines the how part of verification. A simple, user-friendly and yet powerful architecture of the verification testbench determines greater efficiency and efficacy of verification. Needless to say, your verification architecture is the foundation of your success in verification. This includes the flows and methodologies as well.
4) Tools, Flows and Methodologies - Depending upon the above two criteria, you decide what tools and technologies you want to employ in order to achieve your verification goals.
It has been a cliche nowadays to have very sophisticated flows for verification which are very complex and not at all user friendly. The principles of great flow design are :-
1) Simplicity
2) User-friendliness
3) Systematic and methodical
6) Linux resources - You also need to estimate the disk space needed for your team and also for performing regressions
7) Team Demographics - Now that you know the what and how of verification, you need to decide your team structure. This is a critical aspect of verification.
To give an example of the same, I would relate it to the recent surgical strikes by India on terrorists.
Each team of special forces was comprised of specialists in different areas e.g., there were snipers, medics, close combat specialists, communication experts etc. etc.,
Similarly a strong verification team should consist of experts in different areas who work together to execute the project with absolute perfection. Sometimes you may not have experts, in that case you need to develop expertise through learning sessions for the entire team.
8) Knowledge Management - that brings us to the next topic, how to develop/ build expertise to execute the project and also have a mechanism to capture this knowledge in tangible form so that it is not lost and can be passed on to posterity.
A systematic ramp-up plan is essential for sound project execution. Here I would refer to the Japanese word "Nemawashi", which means groundwork.
9) Metrics Generation - every project is essentially tracked by senior management in terms of its progress. You need to decide how you are going to generate the metrics for your progress tracking, and you need to build in those hooks early in your verification plan and methodology so that the metrics tracking data can be generated seamlessly. For example coverage data is one such metrics.
10) "The Parkinsons Law" - This famous law from economics states that " Every work expands itself to fit in the available time". We need to be very aware of this phenomenon. The antidote to this phenomenon is to divide all the macro tasks to micro-level tasks and allocate time for them in an atomic manner. So that would effectively mitigate the Parkinson's Law.
These are some of the salient points that one can take into account for an effective verification plan. In my next note, I would discuss about verification management.