A Decade of SystemVerilog: Unifying Design and Verification?

It’s hard for me to believe that SystemVerilog 3.1 was released just over 10 years ago. The 3.1 version added Object-Oriented Programming features for testbench development to a language predominately used for RTL design synthesis. Making debug easier was one of the driving forces in unifying testbench and design features into a single language. The semantics for evaluating expressions and executing statements would be the same in the testbench and design. Setting breakpoints and stepping through the code would be seamless. That should have made it easier for either a verification or a design engineer to understand a complete verification environment. Or maybe it would enable either one to at least understand enough of the environment to isolate a particular problem.

Ten years later, I have yet to see that promise fulfilled. Most design engineers still debug their simulations the same way they debug in the lab: they look at waveforms. During simulation, they rarely look at the design source code, and certainly never look at the testbench code (unless it’s just basic pin wiggling like a waveform). Verification engineers are not much different. They rely on waveform debugging because that is what they were brought up on, and many do not even realize source-level debugging is available to them. However the test/testbench is more like a piece of software than a hardware description, and there are many things about a modern testbench that is difficult to display in a waveform (e.g. call stacks, local variables, and random constraints). And methodologies like the UVM add many layers of source-level complexity that most users do not have the time to wade through.

Next week I will be presenting as part of an Industry Special Session during the Forum on specification & Design Languages (FDL September 24-26,2013) that will discuss these issues and try to get more involvement from the academic and user communities to help resolve them. Was combining constructs from many languages into one a success? Can tools provide representations of source-level constructs in an easier graphical form? We hopefully will not need another decade.

Post Author

Posted September 19th, 2013, by

Post Tags

, , , ,

Post Comments

8 Comments

About Verification Horizons BLOG

This blog will provide an online forum to provide weekly updates on concepts, values, standards, methodologies and examples to assist with the understanding of what advanced functional verification technologies can do and how to most effectively apply them. We're looking forward to your comments and suggestions on the posts to make this a useful tool. Verification Horizons BLOG

@dennisbrophy Tweets

  • Loading tweets...

@dave_59 Tweets

  • Loading tweets...

Comments

8 comments on this post | ↓ Add Your Own

Commented on September 19, 2013 at 11:01 am
By AgileSoC

[...] up from Dave Rich at Mentor. He’s got a post on their verification horizons blog called A Decade of SystemVerilog: Unifying Design and Verification? to announce an upcoming conference talk. Glossing over just the title, you’d hardly expect [...]

Commented on September 19, 2013 at 3:16 pm
By Chris Higgs

“the test/testbench is more like a piece of software than a hardware description”

I couldn’t agree with this more.

Why do we continue to attempt to bolt-on newer software constructs to Verilog rather than just using an existing software language for what is essentially just software? Why try to compete with C, C++, Python etc? These languages have vast amounts of cumulative investment resulting in efficient execution, thousands of open-source third-party libraries and are more accessible. If SV was any good as a software language in its right it would be adopted outside of EDA.

Commented on September 19, 2013 at 4:07 pm
By Dave Rich

The questions raised by Neil and Chris are good questions to be asking. They go much deeper than the debug specific area I was focused on.
Coincidentally, I’m in the middle of taking a full C++ class after years of sporadically using SystemC. One of the topics is comparing the OOP model of C++ versus languages Java, C#, and others. The question that always comes up is: “What is the best language?” and the answer is” The one you are not using!”
HDLs certainly do handle single bit manipulations and massive amounts of parallelism more efficiently than most other programming languages.
And although tesbenches are more like software than hardware, the people writing the code are more disciplined in hardware than software. If I ever thought the errors coming out of a SystemVerilog compiler like Questa were not helpful, I’m now so thankful I’m not using a C++ compiler daily after taking this class.

Do read Neil’s post. It’s not really the language the code is written in, but the development process used to write the code. http://www.agilesoc.com/2013/09/19/a-decade-of-systemverilog-driving-design-and-verification-apart/

Commented on September 20, 2013 at 12:13 pm
By neil johnson

dave,

Off topic a bit here, but I always find it interesting when I hear people say that hardware developers are more disciplined than software developers. I wonder why we think that’s the case? My opinion (for the little it’s worth) is that we *think* we’re more disciplined because we have to be more disciplined… in asic dev anyway with the cost of failure supposedly being higher than it is with catastrophic software failure.

From what I’ve learned the last few years, I feel comfortable suggesting high-end software teams are far more disciplined than high-end hardware teams. Example: teams deploying features several times a day without issue. another example: teams that operate without bug tracking tools b/c defects are fixed on the spot. Then there’s the teams that use atdd/bdd/tdd. The structure and discipline required to do those types of things is quite incredible and something I’ve not seen or heard of from hardware organizations. Certainly, I’ve heard the stories on the lower end as well of manual testing and regression so obviously there’s no blanket statement to be made. On average, I think we’re probably equally disciplined. But in terms of structure, discipline and overall effectiveness of top-end sw v. top-end hardware teams, it sure feels like they’re leading us as opposed to the other way around.

Thanks for posting the agilesoc link. one suggestion I forgot to add in there is pulling in psychologists along with academia and user communities. Seems the software folks have also figured out there’s a human component to design (and usage). seems we’re so fixated on the technical that the human aspects that drive productivity are completely underestimated. the human component eventual trickles down to language.

-neil

Commented on September 21, 2013 at 3:49 pm
By Chris Higgs

> The question that always comes up is: “What is the best language?” and the answer is” The one you are not using!”

For any given task we should be asking some basic questions and evaluating what is the best tool for the job. Do we favour development speed or execution speed, what skillsets are available, how much are the licenses, what third-party libraries are available, do we have to interface to other systems etc. For most software tasks it is extremely unlikely that SystemVerilog is the optimal language. For verification of hardware designs it may or may not be the best option but it seems that a full evaluation of the options is a rarity.

> HDLs certainly do handle single bit manipulations and massive amounts of parallelism more efficiently than most other programming languages.

I’m not the software industry would agree with that statement. Let’s take a common massively parallel task like a webserver. There are many companies with deep pockets and highly talented engineers continually researching ways to serve greater numbers of simultaneous connections efficiently and I’m not aware of anybody using SV as a webserver!

> And although tesbenches are more like software than hardware, the people writing the code are more disciplined in hardware than software.

In the same way that 93% of drivers consider themselves to be above average ;)

I don’t think SW or HW can claim to be more disciplined – there are all types of engineer – slow, brilliant, sloppy, methodical – in both hardware and software. We should bring HW and SW teams together more often to compare notes on how best to tackle various problems, both sides might learn a thing or two.

Commented on September 25, 2013 at 2:31 am
By Dave Rich

Chris,

There will always be domain specific languages, and there will always be some overlap between those languages. The key is to make sure those domains can communicate and the people in those different domains communicate. That is the crux of Neil’s comments.
BTW, there is a big difference between a web-server servicing many independent connections versus the highly synchronized threads involved when describing hardware.

Commented on September 25, 2013 at 4:21 am
By Stuart Hodgson

Dave, Chris,

The language of choice is quite important as you have all recognized. I’d like to make the point thought that although the HDL have the programming constructs to describe parallelism when it comes to the hardware this is quite different to what occurs when the design is simulated. At this point it seems the default is drop down to a linear processing route. As such a language that has more efficient/usable/tested world brings greater benefits to the verification problem.

Stu

Commented on September 25, 2013 at 12:23 pm
By Chris Higgs

Dave,

I agree that domain specific languages are necessary. I suppose my question is why do we assume we should use the same language for verification that we use to describe the hardware? I don’t think this is a rational decision but it just happens to be the default industry position. Personally I think this hinders our progress.

I think there are other drawbacks to blurring the HDL/HVL distinction which aren’t mentioned – for example some features are added to the language to assist verification and happen to be synthesisable but it’s hit-and-miss whether that feature was supported. We have a well defined and all-encompassing language but varying (and sometimes unpredictable) levels of support in different tools.

> BTW, there is a big difference between a web-server servicing many independent connections versus the highly synchronized threads involved when describing hardware.

But we’re discussion about verification, not describing hardware (for which I do not doubt HDLs and a modern simulator are very efficient). Unless you’re delving into the realms of synthesisable protocol checkers or similar, verification is entirely software.

Add Your Comment

Archives

September 2014
  • Portable and Productive Test Creation with Graph-Based Stimulus
  • Supporting A Season of Learning
  • August 2014
  • DVCon Goes Global!
  • Better Late Than Never: Magical Verification Horizons DAC Edition
  • July 2014
  • Accellera Approves UVM 1.2
  • May 2014
  • Getting More Value from your Stimulus Constraints
  • The FPGA Verification Window Is Open
  • April 2014
  • UVM DVCon 2014 Tutorial Video Online
  • Mentor Enterprise Verification Platform Debuts
  • March 2014
  • New Verification Academy ABV Course
  • DVCon 2014 Issue of Verification Horizons Now Available
  • February 2014
  • DVCon–The FREE Side
  • More DVCon–More Mentor Tutorials!
  • UVM 1.2: Open Public Review
  • DVCon 2014: Standards on Display
  • Just because FPGAs are programmable doesn’t mean verification is dead
  • January 2014
  • Managing Verification Coverage Information
  • November 2013
  • Epilogue: The 2012 Wilson Research Group Functional Verification Study
  • New Verification Horizons Issue Available
  • October 2013
  • Happy Halloween from ARM TechCon
  • IEEE Standards Association Symposium on EDA Interoperability
  • STMicroelectronics: Simulation + Emulation = Verification Success
  • September 2013
  • A Decade of SystemVerilog: Unifying Design and Verification?
  • Part 12: The 2012 Wilson Research Group Functional Verification Study
  • August 2013
  • Part 11: The 2012 Wilson Research Group Functional Verification Study
  • Part 10: The 2012 Wilson Research Group Functional Verification Study
  • Part 9: The 2012 Wilson Research Group Functional Verification Study
  • Part 8: The 2012 Wilson Research Group Functional Verification Study
  • July 2013
  • Part 7: The 2012 Wilson Research Group Functional Verification Study
  • Walking in the Desert or Drinking from a Fire Hose?
  • Part 6: The 2012 Wilson Research Group Functional Verification Study
  • A Short Class on SystemVerilog Classes
  • Part 5: The 2012 Wilson Research Group Functional Verification Study
  • Part 4: The 2012 Wilson Research Group Functional Verification Study
  • June 2013
  • Part 3: The 2012 Wilson Research Group Functional Verification Study
  • Part 2: The 2012 Wilson Research Group Functional Verification Study
  • May 2013
  • Texas-Sized DAC Edition of Verification Horizons Now Up on Verification Academy
  • IEEE 1801™-2013 UPF Standard Is Published
  • Part 1: The 2012 Wilson Research Group Functional Verification Study
  • What’s the deal with those wire’s and reg’s in Verilog
  • April 2013
  • Getting AMP’ed Up on the IEEE Low-Power Standard
  • Prologue: The 2012 Wilson Research Group Functional Verification Study
  • March 2013
  • Even More UVM Debug in Questa 10.2
  • IEEE Approves New Low Power Standard
  • February 2013
  • Verification Horizons DVCon Issue Now Available
  • Get your IEEE 1800-2012 SystemVerilog LRM at no charge
  • IEEE 1800™-2012 SystemVerilog Standard Is Published
  • See You at DVCon 2013!
  • Get Ready for SystemVerilog 2012
  • January 2013
  • VHDL Update Comes to Verification Academy!
  • December 2012
  • IEEE Approves Revised SystemVerilog Standard
  • November 2012
  • Coverage Cookbook Debuts
  • October 2012
  • IoT: Internet of Things
  • Check out the October, 2012 Verification Horizons
  • Improving simulation results with formal-based technology
  • Introducing “Verification Academy 2.0”
  • September 2012
  • OVM Gets Connected
  • August 2012
  • OpenStand & EDA Standardization
  • July 2012
  • Synthesizing Hardware Assertions and Post-Silicon Debug
  • Virtual Emulation for Debugging
  • Verification Academy: Up Close & Personal
  • SystemC Standardization Cycle Completes
  • Verification Standards Take Another Step Forward
  • New UVM Recipe of the Month: Scoreboarding in UVM
  • June 2012
  • Intelligent Testbench Automation – Catching on Fast
  • May 2012
  • Two Articles You Need to Check Out
  • Off to DAC!
  • Dave Rich Featured on EEWeb
  • March 2012
  • How Did I Get Here?
  • February 2012
  • Expanding the Verification Academy!
  • Get on the Fast Track to Advanced Verification with UVM Express
  • Introducing UVM Connect
  • Tornado Alert!!!
  • UVM: Some Thoughts Before DVCon
  • UVM™ at DVCon 2012
  • January 2012
  • SystemC 2011 Standard Published
  • Verification solutions that help reduce bug cost
  • December 2011
  • Instant Replay for Debugging SoC Level Simulations
  • 2011 IEEE Design Automation Standards Awards
  • November 2011
  • Getting started with the UVM – Using the Register Modeling package
  • TLM Becomes an IEEE Standard
  • October 2011
  • Worlds Standards Day 2011
  • VHS or Betamax?
  • Verification Issues Take Center Stage
  • September 2011
  • New UVM Recipe-of-the-Month: Sequence Layering
  • July 2011
  • Combining Intelligent Testbench Automation with Constrained Random Testing
  • Going from “Standards Development” to “Standards Practice”
  • Verification Academy Now Includes OVMWorld Content
  • June 2011
  • Intelligent Testbench Automation Delivers 10X to 100X Faster Functional Verification
  • Part 9: The 2010 Wilson Research Group Functional Verification Study
  • Verification Horizons DAC Issue Now Available Online
  • Accellera & OSCI Unite
  • The IEEE’s Most Popular EDA Standards
  • UVM Register Kit Available for OVM 2.1.2
  • May 2011
  • Part 8: The 2010 Wilson Research Group Functional Verification Study
  • Getting Your Standards Update @ DAC 2011
  • April 2011
  • User-2-User’s Functional Verification Track
  • Part 7: The 2010 Wilson Research Group Functional Verification Study
  • Part 6: The 2010 Wilson Research Group Functional Verification Study
  • SystemC Day 2011 Videos Available Now
  • Part 5: The 2010 Wilson Research Group Functional Verification Study
  • Part 4: The 2010 Wilson Research Group Functional Verification Study
  • Part 3: The 2010 Wilson Research Group Functional Verification Study
  • March 2011
  • Part 2: The 2010 Wilson Research Group Functional Verification Study
  • Part 1: The 2010 Wilson Research Group Functional Verification Study
  • Prologue: The 2010 Wilson Research Group Functional Verification Study
  • Language Transitions: The Dawning of Age of Aquarius
  • Using the UVM libraries with Questa
  • February 2011
  • DVCon: The Present and the Future
  • Free at Last! UVM1.0 is Here!
  • Parameterized Classes, Static Members and the Factory Macros
  • IEEE Standards in India
  • January 2011
  • Accellera Approves New Co-Emulation Standard
  • December 2010
  • New Verification Horizons: Methodologies Don’t Have to be Scary
  • The Survey Says: Verification Planning
  • October 2010
  • Towards UVM Register Package Interoperability
  • IEC’s 47th General Assembly Meeting Opens
  • UVM: Giving Users What They Want
  • September 2010
  • UVM Takes Shape in the Accellera VIP-TSC
  • Accellera VIP-TSC Selects RAL for UVM 1.0 Register Package
  • OVM Cookbook Available from OVMWorld.org
  • UVM Register Package Candidate News
  • August 2010
  • Redefining Verification Performance (Part 2)
  • July 2010
  • Making formal property checking easy to use
  • Redefining Verification Performance (Part 1)
  • SystemVerilog Coding Guidelines: Package import versus `include
  • June 2010
  • The reports of OVM’s death are greatly exaggerated (with apologies to Mark Twain)
  • New Verification Academy Advanced OVM (&UVM) Module
  • OVM/UVM @DAC: The Dog That Didn’t Bark
  • DAC: Day 1; An Ode to an Old Friend
  • UVM: Joint Statement Issued by Mentor, Cadence & Synopsys
  • Static Verification
  • OVM/UVM at DAC 2010
  • DAC Panel: Bridging Pre-Silicon Verification and Post-Silicon Validation
  • Accellera’s DAC Breakfast & Panel Discussion
  • May 2010
  • Easier UVM Testbench Construction – UVM Sequence Layering
  • North American SystemC User Group (NASCUG) Meeting at DAC
  • An Extension to UVM: The UVM Container
  • UVM Register Package 2.0 Available for Download
  • Accellera’s OVM: Omnimodus Verification Methodology
  • High-Level Design Validation and Test (HLDVT) 2010
  • New OVM Sequence Layering Package – For Easier Tests
  • OVM 2.0 Register Package Released
  • OVM Extensions for Testbench Reuse
  • April 2010
  • SystemC Day Videos from DVCon Available Now
  • On Committees and Motivations
  • The Final Signatures (the meeting during the meeting)
  • UVM Adoption: Go Native-UVM or use OVM Compatibility Kit?
  • UVM-EA (Early Adopter) Starter Kit Available for Download
  • Accellera Adopts OVM 2.1.1 for its Universal Verification Methodology (UVM)
  • March 2010
  • The Art of Deprecation
  • OVM 2.1.1 Now Ready for Download
  • February 2010 Verification Horizons Newsletter Now Available
  • IEEE Standards Meetings in India
  • February 2010
  • I Do It …
  • SystemVerilog: A time for change? Maybe not.
  • Partners Offer Support for OVM 1.0 Register Package
  • SystemC Day at DVCon
  • OVM/VMM Interoperability Kit: It’s Ready!
  • January 2010
  • Three Perfect 10’s
  • OVM 1.0 Register Package Released
  • Accellera Adopts OVM
  • SystemC (IEEE Std. 1666™) Comes to YouTube
  • Debugging requires a multifaceted solution
  • December 2009
  • A Cliffhanger ABV Seminar, Jan 19, Santa Clara, CA
  • Truth in Labeling: VMM2.0
  • IEEE Std. 1800™-2009 (SystemVerilog) Ready for Purchase & Download
  • December Verification Horizons Issue Out
  • Evolution is a tinkerer
  • It Is Better to Give than It Is to Receive
  • Zombie Alert! (Can the CEDA DTC “User Voice” Be Heard When They Won’t Let You Listen)
  • DVCon is Just Around the Corner
  • The “Standards Corner” Becomes a Blog
  • I Am Honored to Honor
  • IEEE Standards Association Awards Ceremony
  • ABV and being from Missouri…
  • Time hogs, blogs, and evolving underdogs…
  • Full House – and this is no gamble!
  • Welcome to the Verification Horizons Blog!
  • September 2009
  • SystemVerilog: The finer details of $unit versus $root.
  • SystemVerilog Coding Guidelines
  • July 2009
  • The Language versus The Methodology
  • May 2009
  • Are Program Blocks Necessary?