I think it’s been about 9 months since Mentor Graphics announced UVM Express. While I hope people are seeing value in the idea of UVM Express, I haven’t heard much about it since it was announced which makes me wonder if it’s hit it’s mark.
Here’s an excerpt from one of the seminar descriptions they have on verification academy…
UVM Express is a collection of techniques, coding styles and UVM usages that are designed to increase the productivity of functional verification… UVM Express makes it easier to adopt key pieces of UVM in a much more straightforward manner, while leaving open the opportunity to adopt full UVM in the future.
Sure… I’ve tried the approach and I agree.
Increasing “the productivity of functional verification” is a worthy objective even though, in my opinion, the fact that everyone and their dog offers ways to increase productivity has desensitized us to the point that’s no longer tangible. The second part, however, is new value. That’s what I’ve been excited about since the original announcement… a low barrier to entry for those new to UVM with no competing solution that I’m aware of. That’s a good idea.
Now let’s look at the descriptions of each step in UVM Express. For the recorded video on Mentor’s Verification Academy, here’s a snapshot of what they propose:
Again… good ideas that support their intentions… but let’s play devil’s advocate for a moment. Pretend you’re a person that’s never used UVM but you’ve drank the kool-aid and you’ve finally got the chance to use it. You’re thinking, “I’ve been left behind for too long. I know I’m going to use UVM – all of UVM – so why are these guys offering me a way to avoid it”? For this guy, the future is now; he doesn’t want to wait.
Then there’s the guy that’s used UVM several times; he already “knows” UVM and taking a step back isn’t overly appealing.
I’m guessing neither of these guys would give UVM Express much thought, which is too bad since it covers probably 90% of the people working as functional verification engineers.
So how do you target a real audience for UVM Express? I think you need to look at UVM Express a little differently. UVM Express is not a way to increase functional verification productivity nor is it a way to adopt UVM piece-by-piece.
UVM Express is a technique for staged testbench implementation where each stage addresses the specific needs of developers and product; needs that naturally vary over time.
In that description I think there’s value for newbies, experts and everyone in between; we’ve gone from a very small potential audience to a very large potential audience. Now the details. Let’s take my proposed description of UVM Express, rebuild the steps accordingly and pretend we’re re-releasing the videos. Here’s what I think the session descriptions should be.
Overview and Task Based BFMs: This session introduces UVM Express, talks about getting organized with test environments, and suggests creating BFMs (Bus Functional Models) with tasks in order to facilitate directed test writing.
Pretty sure this is already the intention, but let’s be clear, at first we’re using directed tests. We don’t need a fully functioning constrained random testbench to tell us the happy path of our design is severely broken. Directed tests with the minimum testbench subset (i.e. BFMs) offers support that is concise, to the point and perfectly suited to the early stages of verification. Mentor has it right here.
Automated Checking (Not Functional Coverage): This session describes how to add transaction monitors, reference models and scoreboards to automate checking of directed tests.
Here’s the first major change. If you’re writing directed tests, the functional coverage you’re collecting is already implied so step 2 and the addition of functional coverage collection is a no value upgrade as they have it. Instead, step 2 is an opportunity to automate the checking of your growing suite of directed tests. The objective of step 2, therefore, is a fully functioning model, a large suite of directed tests and a solid design (as you’ll see, the model is required for step 3).
Constrained-Random Stimulus: This session describes how to add constrained-random stimulus generation and functional coverage components to an existing BFM based testbench, in order to exhaustively verify the state space.
The way they have it, the addition of constrained-random stimulus is another no value upgrade mainly because Mentor offers no advice as far as when to automate your checking (sure you can generate a bunch of random transactions but how do you know what’s happening is correct??). Because we’ve added automated checking at step 2, constrained-random stimulus now makes sense as does the addition of functional coverage.
To summarize…
- UVM Express is a technique for staged testbench implementation where each stage addresses the specific needs of developers and product; needs that naturally vary over time.
- The objective of UVM Express step 1 is to verify happy path functionality in your design with the minimum necessary testbench implementation.
- The objective of UVM Express step 2 is completion of automated checking paths and directed tests that cover the known state space of a design
- The objective of UVM Express step 3 is the addition of constrained-random stimulus and functional coverage collectors that allow for exploration of the unknown state space.
No more increased verification productivity and forget about the the low barrier to entry, the new definition and changes at each step bring value to anyone doing functional verification.
I think with UVM Express they almost had it so the people at Mentor who thought of it deserve credit for going in a different direction. But I think minor changes in intent are required to legitimize the approach for the broader verification community.
That’s my thought anyway 🙂
-neil