Home Get Informed Publications Presentations SNUG08: Verification Patterns in Addition to RVM

CMT Whitepaper

White Paper: Multithreaded Application Acceleration with Chip Multithreading (CMT)

This white paper highlights the technical benefits Sun's chip multithreading (CMT) UltraSPARC T2 processor delivers to multithreaded applications, and provides detailed examples of significant performance gains in three application workloads: telco, cryptography, and string searching.

White Paper: Multithreaded Application Acceleration with Chip Multithreading (CMT)

 

SNUG08: Verification Patterns in Addition to RVM

PDF Print E-mail
Written by Carl Cavanagh, Chris Sine and Lee Warner   
Monday, 31 March 2008 03:00

Presented at: Synopsys Users Group (SNUG) 2008, on March 31-April 2, 2008 at Santa Clara, CA.

Abstract: The foundation of RVM is based on the "GoF Design Patterns", for example generators are based on the "abstract factory" pattern and callbacks utilize the "facade and observer patterns". These base level components facilitate re-usability with powerful communication schemes. However the RVM manual is lacking details on the architecture of the next abstract layer of verification components such as checkers, error injectors, configurators and parameter management. This paper will explore verification architecture patterns that address these higher level abstract layers with particular focus on reuse and the "open closed principle". 

Bios: Carl Cavanagh - Carl graduated with a Masters of Engineering degree in Computer Systems Engineering from the University of Bristol in England. He worked for Ensigma Ltd as a research and design engineer for 2 years in Chepstow Wales, where he was the principle verification engineer for a digital radio receiver device. He subsequently moved to California and has spent the last 8 years working for Sun Microsystems. He spent his first 4 years at Sun developing a distributed simulation environment which was applied to server system verification and was awarded 2 US patents. For the past three years Carl was the principle full chip verification engineer for the memory controller in Sun's next generation of high end CMT servers. Currently he is involved in the block level verification of an I/O device.

Chris Sine

Lee Warner

Presentation: “Verification Patterns in Addition to RVM“

Paper: “Verification Patterns in Addition to RVM“

Comments (5)add comment
Geoff Hall: Verification Specialist
Congratulations on a great paper. It contains so much info it could
be made into a course on advanced verification. I'm still reading it
so I don't have any questions yet. Would this forum be the best way
to contact you if I do?
1

April 07, 2008
Votes: +0
Carl Cavanagh: Hardware Verification Engineer http://www.openSPARC.net
Hi Geoff,

Thanks for the feedback, I hope you find the ideas/solutions useful. I will keep an eye on this forum and respond when possible.

Its interesting that you mention that the paper could lead to an advanced verification course, because some of the material in the paper is pulled from a verification tutorial I started writing last year. However, this paper was targeted to the Synopsys User Group (SNUG) conference so I chose to pull together the more advanced concepts that people are most likely considering in their current verification projects. I also tried to present practical solutions in the paper to real problems, rather than dream up designs and solutions (I'm an engineer... not a scientist :-). Feedback at SNUG suggested that a number of people appreciated the more hands on approach of the paper.

My ultimate goal is to put together a complete tutorial, probably using OpenSparc to demonstrate the concepts. There are some great books out there on verification, but I've found most are either very theoretical or they only address part of the effort, and even those are targeting over simplified designs. I've always struggled to find something that took me through a real life modern day verification effort. The tutorial would take a reader from specification/feature analysis, through test plan writing, to environment architecture, test/scenario writing, and to functional coverage analysis etc (I have a lot of work to do :-). With an eye on promoting tried and tested software engineering principles such as OCP, decouling, design patterns etc.

From my personal experience and interviewing NCG's over the last few years I get the feeling that college courses don't give verification adequate coverage (I'm willing to be corrected on this!?)... even though verification is one of our longest poles to getting quality designs out the door. It seams that people evolve into verification engineers over time, generally learning the trade on the job so to speak. The aforementioned tutorial might just provide the basis for a 2-3 week comprehensive college verification course, with a real life OpenSparc design at its core. That's my dream at least!

Thanks for the interest,
Carl Cavanagh
2

April 08, 2008
Votes: +0
Carl Cavanagh: Hardware Verification Engineer http://www.openSPARC.net
Hi,

If any SNUG attendees are reading this... I've started the paperwork with the Sun lawyers to provide open sourced example code, however I'm not entirely sure what this process entails so it could take a few weeks. In the meantime I believe the UML and the descriptions in the paper probably give enough information to recreate the solutions, there really isn't that much code especially when using the components/base classes provided by RVM/VMM. Once I get the green light to share code I plan to create an OpenSparc.net sub project where we can share our ideas and example code as a verification community. Note: I believe this will be complimentary to the Verification Guild in the sense that it is a fantastic resource for proactively asking questions, where as the OpenSparc.net community potentially gives us a non-proprietary platform to demonstrate and share our ideas.

Right now these are just pie in the sky ideas so we'll have to see how things shake out over time.

Thanks,
Carl Cavanagh
3

April 08, 2008
Votes: +0
Geoff Hall: Debugging a decoupled environment
Hi Carl,

Throughout your paper you are decoupling components to increase reuse. I think this is the right method but it does make the testbench harder to comprehend for someone new to the project. One would like the debug environment to step up to the challenge and provide some smarts to help traverse through the code structure. I see this happening with Java plugins for Eclipse. Are you using anything like this with your Vera code?

Along a similar line, all these classes can result in alot of files. Do these patterns come with a recommended file and directory structure? Are you using any special tool to automatically create this structure for you at the beginning of a project?

Do you know of any central repository for papers/ideas on verification patterns? It would be silly to keep reinventing the wheel.

Thanks.
4

April 09, 2008
Votes: +0
Carl Cavanagh: Re. Debugging a decoupled environment http://www.opensparc.net
Hi Geoff,

All good questions.

I've been struggling with the question of development environments for years. Vim and Emacs are great for raw file editing with syntax highlighting, but they really are like a woodworking chisel compared to a router. The best openly available code development environments out there are Eclipse and Netbeans (in my humble opinion), however I've struggled with Eclipse memory leaks and I just don't get the interface. Netbeans (again in my humble opinion) is a far better development environment, especially for people who are coming from a low level raw editing background. In my spare time (ha!) I've been developing a netbeans language plugin for OpenVera. Recently netbeans 6 included a great little addition called "Schliemann" or the "generic language module" which simplifies the addition of basic support for other languages than java (code folding, syntax highlighting, code completion, basic real time syntax checking, code navigation etc). However, the generic language module is really targeted at scripting languages hence it only supports LL(1) grammars.... from bitter experience dumbing down the OpenVera grammar to LL(1) is a pain in the butt especially when Synopsys don't provide a Backas Naur anymore, but I'm almost there (but then I got side tracked by looking at the SystemVerilog formal grammar which has Backas Naur, but that really needs work to dumb it down :-). The aim of adding OpenVera support to the Netbeans IDE is then you can add extras like project management!! Code templates... wouldn't it be nice to right click and choose "Create RVM Transactor Class for this data object"... Oooooo! If it happens and I will share assuming the Sun lawyers give me the go ahead, oh and I believe they are enhancing Schliemann to support LL(k) grammars so all of this pain might be moot.

Other options for code comprehension are tools like dOxygen and Javedoc, which will analyze your code and generate class hierarchies and extract the pragma'd comments. Sysnopsys apparently have an in house set of scripts held together with chewing gum and wire (so they said at snug) that preprocesses OpenVera/SystemVerilog into a form that dOxygen can understand (they probably strip out the code and keep the class declaration and comments in a CPP format that dOxygen can use out of the box). A proper solution would be to take the grammar developed for the netbeans plugin described above and build support into dOxygen (but it has its own lexer/parser requirements so that might be a little tricky). It would be good to play around with some preprocessor scripts for dOxygen and opensource them (hmmmm, that probably wouldn't be that difficult).

With regards to directory structure... yes, we shot ourselves straight through the foot when we started using RVM 4 years ago. We followed the guidelines but we really screwed it up. Before starting our current project I sat down and spec'd out with the group an improved directory hierarchy, which thus far appears to be holding up. I'll check with Sun and see if they have any issue with me publishing that (there is no proprietary information in it). To generate the directory structure I used a simple command line script since once created and placed under revision control it doesn't really change. One of the aims of the netbeans work would be create the directory structure for you when you start a new project.

Thus far I haven't found any central repository for verification papers/ideas... hence the reason I'm working to create a community out of the opensparc effort that might serve as a good place to start compiling this stuff.

A lot of pie in the sky ideas but if there is enough interest we might be able to get something moving.

Hope that helps,
Carl C.
5

April 09, 2008
Votes: +0

Write comment
You must be logged in to post a comment. Please register if you do not have an account yet.

busy
Last Updated on Tuesday, 29 April 2008 10:34
 
online pokies aussie South Africa bonus