PDA

View Full Version : ovm debugging



skootamota
03-06-2008, 10:29 AM
Anyone have any tips on debugging? There is a lot going on in the OVM, so when things go wrong, where do you start?

Matt Graham
03-10-2008, 07:48 PM
I've had success doing a couple of things w.r.t. debugging OVM environments:
- Liberal use of messaging. This can be as simple as $display() statements. More ideally use some of the messaging facilities built into OVM, i.e. `message(OVM_LOW,("Driving Signal High")) Messaging facilities should allow you to easily enable/disable messages as you need to debug or not.
- The key in distributed, threaded environments (like, well, large scale verification environments in general) is figuring out which thread is causing you the issue. Once you do this (see above) you can set break points and use good old software debugging techniques (single step, watch variables, etc).
- Depending on which simulator you use, there may be some specific features you can utilize to help with SV OO debug in general (see you Friendly Neighbourhood AE for these).

No magic bullets in here, but maybe something helpful.

-Matt

umery
03-11-2008, 08:22 AM
As Matt said, there are debug aids in the library for debugging various built-in facilities. For example, the configuration mechanism and the factory.

We'd like to get your feedback on where you spend time debugging. We may be able to point you to something that already exists or consider it for future improvements.

Thanks,

Umer
Cadence

ajeetha
03-13-2008, 11:35 AM
Anyone have any tips on debugging? There is a lot going on in the OVM, so when things go wrong, where do you start?

We at CVC have developed few small/medium OVM env (I2S, I2C etc.) and with Questa, the single stepping worked reasonably well. Questa seems to have built it on the well established Modelsim GUI and has same look and feel for SV/OVM too. Give it a try if you have it. Also one thing I encourage my team members is to use the modularity of any methodology (OVM/VMM/AVM) for debug. For instance we first make sure the connectivity is fine - through a quick env-structure printing. Then comes the channel/TLM hook up. Novice users usually make mistakes there. Other common one is abrupt sim-end.

For some of these, tools have thread debug related features (for instance VCS thread debugger is pretty good I must admit). I heard Verdi is building specialized support as well, so lot more in pipeline. Few months back CDN mentioned SimVision will have class dumping - some thing that I really look forward to (though I personally don't see that as the best debug method, typical HDL users do).

If you can elaborate on your debug-scenarios, I can recommend some suggestions. FYI, me and my team are working on SystemVerilog debug related paper, maybe in few weeks from now. It will have to be customized for various tools, current plan is to do it for VCS and Questa (as that's what we have access to right now).

HTH
Ajeetha, CVC
www.noveldv.com
ajeetha <> gmail.com