UVM Is Not A Methodology (The TDD Remix)

Forgot about this in last week’s post! Another interesting question from the functional verification seminar I delivered in Mountain View a few weeks ago was: if you could only pick one or the other, would you rather use UVM or test-driven development? Of all the great questions that came up, that was by far the easiest to answer. My response…

I’d take TDD over UVM any day. No contest.

Continue reading

The First Step is Acceptance (Hardware Verification is Broken)

A couple weeks ago, I had the chance to do a lunch-n-learn seminar for about 20 verification engineers in Mountain View. It was an hour talk about an incremental approach to functional verification; one that I’ve given about a half a dozen times to various teams.

I like giving this talk because I find people on the whole are surprisingly receptive to the ideas. There’s also been some skepticism, though, that I’ve seen more than once. Seeing as how it’s still fresh in my mind, I figured now would be a good time to pass some of this skepticism on as food-for-thought. Continue reading

How UVM-1.1d Makes The Case for Unit Testing

The point of the open-source UVM-UTest project we’ve been working on is to demonstrate how unit tests can be used to lock down the functionality of legacy code. Being able to run the unit tests means that when you’re changing code you can verify existing features won’t break during maintenance. We think that’s valuable. A nice side benefit of the project is that we can also show unit testing as being effective for increasing the quality of code hardware engineers write. How can we say that? Because over a 5 week period we found 10 defects in the UVM 1.1d release. Continue reading

Are You Ready for the UVM-UTest Challenge?

We did our first UVM-UTest challenge on Friday. It went surprisingly well so now we’re going out on a limb by inviting others to take the challenge.

The “rules” of the challenge are:

  • A team of 3 has one hour to break our unit tests (we used a lunch hour so it was like a lunch-n-learn… except it wasn’t boring).
  • If a team can make functional changes to the uvm-1.1d library that our tests do not detect, you win. If our unit tests detect the functional changes you make, the unit tests win. Pretty simple.
  • We guide you through the challenge so you know what code/classes you’re able to change (we also keep notes for where we can improve our test suite). Continue reading

UVM-UTest is Ready for Download

After less than a month of development, the open-source UVM-UTest project is ready for download by the masses. If you care about code quality and maintainability, you’ll be interested in what we have.

For instructions on how to download and run UVM-UTest, take a look at the UVM-UTest Getting Started page. If this is the first you’ve heard of UVM-UTest, you may also want to check out the original UVM-UTest announcement to see what we’re up to. In that announcement you’ll see links to the project charter and progress page. Also be sure to check out The Most Descriptive UVM Tests Ever Written. Those and others like it are part of today’s release.

The next step for us comes this Friday at Noon EST when we have our first UVM-UTest challenge. That’s where we challenge some of our colleagues to find holes in our unit test suite. If they can break the UVM library without our unit tests detecting it, they win. If our unit tests detect all the changes they make, we win. We’ll keep you posted on how that turns out!

..and of course… if you’re interested in taking the challenge, we’d be happy to hear from you :)!


The Most Descriptive UVM Tests Ever Written

If you want to know how the uvm_printer works, in detail, I don’t think you’ll find a better explanation anywhere than my unit tests. This comes after I went through a refactoring exercise in our open-source UVM-UTest project – that’s where we’re unit testing the code in the UVM framework – specifically for the purposes of making my code more readable.

Here’s one of the tests I’ve written to get the idea of where I’m going:

Screen Shot 2013-05-28 at 4.02.11 PM

Continue reading

We’re Unit Testing UVM

A colleague and I have just started a new open-source project that we think will demonstrate the merits of unit testing in hardware. It’s quite an ambitious project called UVM-UTest. The framework-under-test, in case it’s not obvious, is UVM.

The project is hosted on Github. If you’re interested in knowing more about what we’re doing, here’s a link to our UVM-UTest project charter. The entire project charter is one hand-written page so reading it won’t take long. It’ll give you a better idea of what we’re doing and why we’re doing it. If you’re interested in the abbreviated version, I’m comfortable paraphrasing it as:

We’re unit testing UVM.

We have a progress page that shows you how far we’ve come so far. It shows classes and class members that we’ve unit tested. We update that a few times a day so it’s always quite current.

We’re about 3 weeks in and the project is going well. We’ve got about 250 unit tests that take about 10sec to run and we filed our first issues in the eda.org mantis database last week (you can filter out the issues filed by ‘Neil_Johnson’ to see what they are).

There’s a first planned release of UVM-UTest scheduled for June 7. That’s when you’ll be able to download the code and run the tests we have for yourself!


MiniTB: Finally… a Testbench Framework for Designers

Get the latest version of MiniTB

[CSSBUTTON target=”https://github.com/nosnhojn/miniTB/archive/master.zip” color=”000000″ textcolor=”ffffff” float=”left” newwindow=”true”]Download MiniTB[/CSSBUTTON]

Through the hardware industry’s continuing infatuation with leading verification technologies – constrained-random verification, functional coverage, numerous fancy methodologies, intelligent testbenches and a host of others – the needs of designers have been thoroughly ignored. That changes with MiniTB. Continue reading

UVM Report Mock Update

Get the latest version of SVUnit from GitHub

[CSSBUTTON target=”https://github.com/nosnhojn/svunit-code/archive/master.zip” color=”000000″ textcolor=”ffffff” float=”left”

newwindow=”true”]Download SVUnit[/CSSBUTTON]

I’ve had some good feedback from a couple fellows using the report mock and today I released a new version to start incorporating it. SVUnit v1.4

includes a new UVM report mock.

Two significant changes… Continue reading