I see that Synopsys has finally released VMM1.2. Congratulations, guys. There will be plenty of opportunity over the coming weeks to discuss the relative merits of OVM vs. the OVM features that have been “borrowed” and jammed into this new version of VMM, (factory, phasing, hierarchy…) but I’d like to talk a bit in this post about Synopsys’ unique approach to version numbering.
Let me just say that it’s patently obvious that Synopsys chose to hide the fact that this is a dramatically different VMM by calling it version 1.2 instead of 2.0, which is what they should have called it. Even though the accepted practice in our industry is to increase the major version number for a change of this magnitude, Synopsys is trying to convince everyone that it’s an incremental change to the methodology.
The fact is that the biggest advantage VMM had over OVM was the fact that it had been around longer. OVM has the advantages of being more full-featured, flexible, modular and reusable. Once VMM users understand the extent to which they’re going to have to rewrite their existing VMM code to take advantage of the new 2.0 features, the continuity argument will be gone and they may as well take a look at OVM too. And new users will now choose between a stable, proven OVM and a brand-spankin’-new VMM. The tables have turned, and Synopsys doesn’t want you to know this.
In fact, we’ve already had one customer try and compile their existing VMM1.1 code against the VMM2.0 (I mean 1.2) library without success – not a good sign for backward compatibility. A quick look at the first three lines of the sv/std_lib/vmm.sv file shows why:
In other words, if you want to use your existing VMM1.1 code, you +define+VMM_11 to get the old library code, otherwise you get a completely different library! Tell me that’s not a major release!
Perhaps an alternate metric would be helpful. I have, sitting on my desk, a copy of the Verification Methodology Manual for SystemVerilog. It is 503 pages long. The VMM1.2 User Guide, which incorporates the original book, along with all the new 2.0 (rats, did it again) features, weighs in at a whopping 1408 pages! That’s nearly a 3x increase in material.
By contrast, the OVM User Guide is only 158 pages, so even when combined with the OVM Reference Guide (384 pages), you’ve still got nearly 2.5x more stuff to go through with VMM. We could even throw in The OVM Cookbook (235 pages) and OVM is still half the size of VMM2.0.
It will be up to you to decide whether to take a chance on the new VMM2.0 or go with the more stable OVM. By the way, don’t be surprised to see an OVM2.1 rather soon <!–[if gte mso 9]> Normal 0 false false false MicrosoftInternetExplorer4 <![endif]–><!–[if gte mso 9]> <![endif]–> soon that adds some new features to address user requests we’ve gotten. These new enhancements are completely backward-compatible with existing code, unlike VMM2.0.
Come to think of it, the only justification for calling VMM1.2 a minor release is that it doesn’t really advance the state of the art at all. Since all they’re doing is adding functionality to VMM that OVM has had for over a year, I guess it’s OK to call it VMM1.2 after all.
As they say, “Imitation is the sincerest form of flattery.”