Reusability of the testbench

UVM claims that I can reuse the testbench across different projects.
But I found out that each time I switch to a new project, I have no idea what can be reused and end up with writing new driver, agent, building a new testbench…
I have reused nothing from my previous testbench!

what can be the potential cause?

The UVM promotes two different kinds of reuse: vertical and horizontal.

Vertical reuse is within the same project. You start with lower level unit testbenches and integrate the same components as you build up your system-level testbench.

Horizontal reuse is from project to project. The general assumption is there are similarities between multiple projects and you can use inheritance to extend your components to capture the differences. If you are working at the same company, there ought to be similarities in the design, either in interfaces that could use the same agents, or in requirements that could use the same scoreboards and coverage collectors.

Thanks Dave for your response.

Regarding the inheritance in horizontal reusability. Do you agree that we need to have a careful definition and implementation of classes and components to achieve that? If we define our components poorly, even though the next project is similar, we won’t be able to reuse the testbench.

I mean if we want to achieve horizontal reuse, we need to anticipate the future project. I think that requires a lot of experience.

Yes, it will take some experience to understand the best way to incorporate horizontal reuse. A couple of links you might want to look at.:

1 Like