Verification engineers: framework for efficient execution of any task

Over the last ten years I have been working on many different verification tasks. While no two tasks are the same, one cannot deny that some similarities or patterns do exist.

For some time I have been thinking whether I could somehow classify the typical verification tasks, in order to make it easier for younger engineers to execute them. However, I have not managed to do so. Then, I decided to move to a higher level of abstraction and it occured to me that while every verification task is unique in its own way, the typical challenges they pose, can in fact be classified.

It is my goal in this article to present and frame those challenges, in order to help everyone, but especially younger engineers out there, how to approach their tasks and better execute them.

Missing information

Being properly informed is most certainly prerequisite for doing anything properly, but there are certain tasks in which the only challenge is having the right information. I cannot recall how many times, especially when I was younger, was I bashing my head against the wall to solve some problem, but in reality the only thing I needed for the correct information.

Now, after many years of doing verification, I am able to recognize when missing information is the main challenge in the task. Not so long ago, the only thing I had to do in my task is to perform certain number of register writes. Requirement was specified in the very higher level of abstraction – I was supposed to initiate some complex process in the DUT I was verifying. When reduced to lower level, the only thing I was supposed to do is to write some registers. However, no one was sure exactly what registers and in what order.

Being aware that the only challenge in the task is obtaining this information, liberated me from feeling anxious and stressed, for not knowing how to do it. Rather, it allowed me to focus my energy into getting this information and soon after the task was finished.

When you are just starting your career, you may find yourself in this situation a lot. Don’t worry, realizing that you need more information is all you need to finish the task, will make it much easier for you to approach the prolem at hand.

Creativity

In some cases, you will have all specifications and information in front of you and your task will be to develop a whole verification environment. This may be a very complex block level verification and as such pose a significant challenge.

While there is no simple recipe which will make this kind of task easier, knowing that the main challenge here is development of creative and complex code, will help you focus your efforts. In this case, you may consult more experienced team members and ask them to guide and coach you. You may also look for some other complex code which exists in your organization, which will help you get more ideas.

Finally, this comes with experience. The more code you produce over the years, the better you will become at it.

Communication

This challenge may looks like a subset of the first challenge explained above – information, but it is in fact a whole different case.

I cannot recall how many times I was working on a task which involved a stakeholder (client in my case), with whom communication was not really as easy as I wanted it to be. Let’s be honest, we’ve all been there.

You may have complete documentation and all the information, but the nature of the task is such that RTL is still being developed, which means verification is dynamic. Designer keeps adding features, you keep running simulations on them, and then result is being reviewed. Main challenge in this kind of task is this bouncing communication, between you and the client.

This may be a huge challenge, especially if your mother tounges are different, however being aware that this part of the task is critical one, you may focus your efforts into countering it. This may be done by involving more persons in your conversation (for example, someone on their side closer to them), or by talking openly and trying to find a way to establish a better way of comunicating. There is no single best solution, but again, it helps to know if this is the task bottleneck.

Time limitation

Who doesn’t like deadlines? The nature of our job requires that quite often we work under the strict schedule. You may have all the information you need for the task execution, but you have very tight deadline.

While there is no solution to counter the strict schedule itself, being aware that this is the critical part of the task, you may talk with your team leader and inform him of this and ask that you are not disturbed in the next period. Say that you need high levels of concentration in order to deliver your client’s requests on time. You may even ask to be excused from some of the meetings, if they are not critical. Before pandemic, I would throw in advice suggesting you could also ask to work from home for a week or two, until you get the work done. Nowdays however, that’s already what we’re doing. But still, the point is clear. Clearly communicate that you need some time being focused and isolated, so that everyone in your team is aware.

If you are required to provide the estimate, and are not sure how, I have written a dedicated article about that. You can read it here.

Missing knowledge

Not very often, but it may happen that you will be working on the task which requires you to have the knowledge you at that time do not have. For example, you may be required to produce a python script to automate certain part of data processing. Simply enough? Not if you don’t know Python. In another instance, you are moved to a differnet project which now works in differnet tool, which you didn’t use before.

If this is the case, don’t despair, as situations like this are those which will stretch you and allow you to grow by a large margin. However, it is important to communicate clearly this, so that everyone involved is aware that you will need some time to learn the required skill.

Conclusion

My goal in this article was to present the most common challenges I have faced again and again over the years, while doing my job as a verification engineer.

These are by all means not the only challenges you will face as a verification engineer, however they are what I noticed to be most frequent. Not to mention they usually come in pairs. 🙂 Oftentimes, your task will have all these challenges at the same time, in which case, special kind of attention and awareness is needed.

If you train yourself to become aware what is the main challenge in the task you’re doing, you will be able to better organize and coordinate execution. In addition, it will save you from stress of not knowing how to proceed or where is the problem.

I invite you to share with me in the comments what challenges you face in your tasks and to explain your strategies of dealing with them.

You may also like

Uncategorized
Milos

How I Made Reading Books Easy

“He will have to start reading books to improve his writing.”   It was late 1999, and I had just started my 5th grade of primary school. Back at the time, it meant that I was getting a new professor

Read More »
Join my Mailing list!