Transaction Level Debug with SystemVerilog VMM & Verdi
1. Transaction Level Debug Demo with VMM & Verdi www.cvcblr.com/blog Rejuvenating VLSI Design-Verification!
2. Case Study: Transaction Level Debug with VMM Transactions – higher level of abstraction May span across several tens/hundreds of clock cycles Detailed clock-by-clock info available via HDL Debug waveforms Higher level debug – across transactions Abstract information about various transactions Tools not mature yet (NOVAS has some interesting features) VMM Callback provides a means of doing this Idea is still maturing from CVC Prototype available on request CVC Copyright Protected Material, www.cvcblr.com 2 www.cvcblr.com/blog
3. Transaction debug – what’s interesting? Not bit-by-bit, clock-by-clock info Just payload, Transaction IDENTIFIERS Start time, End time etc. February 22, 2007 (3) www.cvcblr.com/blog class s2p_xactn extends vmm_data; rand logic [31:0] pkt_pld; rand logic err_pkt; rand bit [7:0] pkt_length; ... class s2p_dbg_xactn extends s2p_xactn; time start_t, end_t; // Conceptually: data_id, stream_id, scenario_id; pkt_pld, err_pkt, ipg; ...
6. Transaction Debug - summary Powerful application of callbacks Minimal (or no) changes to the existing BFM (if VMM compliant) HUGE productivity benefit – moves debug abstraction level higher up More automation possible via scripts and new VMM macros (CVC’s roadmap) February 22, 2007 (6) www.cvcblr.com/blog
7. Verdi’s $fsdbLog feature SpringSoft (erstwhile Novas) recently added transaction debug capability to Verdi™ Use $fsdbLog wherever a transaction can be seen/captured February 22, 2007 (7) www.cvcblr.com/blog msg= $psprintf("# %0d %0d %0d pld: %0d, kind : %s start_time: %0t end_time: %0t“, stream_id, scenario_id, data_id, pkt_pld,s_err_pkt, start_t, end_t); $fsdbLogInit(); $fsdbLog("XN_at_BFM","xaction_capture",0,$psprintf("%m"),msg);
8. February 22, 2007 (8) www.cvcblr.com/blog Detailed clock-by-clock info
9. February 22, 2007 (9) www.cvcblr.com/blog Textual transaction browser – all from single $fsdLog call!