Transaction Level Debug with SystemVerilog VMM & Verdi

download Transaction Level Debug with SystemVerilog VMM & Verdi

If you can't read please download the document

Transcript of Transaction Level Debug with SystemVerilog VMM & Verdi

Transaction Level Debug

Transaction Level Debug Demo with VMM & Verdiwww.cvcblr.com/blogRejuvenating VLSI Design-Verification!

Case Study: Transaction Level Debug with VMM Transactions higher level of abstractionMay span across several tens/hundreds of clock cyclesDetailed clock-by-clock info available via HDL Debug waveformsHigher level debug across transactionsAbstract information about various transactionsTools not mature yet (NOVAS has some interesting features)VMM Callback provides a means of doing thisIdea is still maturing from CVCPrototype available on requestCVC Copyright Protected Material, www.cvcblr.com2www.cvcblr.com/blog

2

Transaction debug whats interesting?Not bit-by-bit, clock-by-clock infoJust payload, Transaction IDENTIFIERSStart time, End time etc.February 22, 2007(3) 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; ...www.cvcblr.com/blog

3

CVC Copyright Protected Material, www.cvcblr.com4Transaction debug through callback in VMM

class s2p_cov_cbk extends extends vmm_xactor_callbacks; virtual task before_sending ( s2p_cmd_xactor xactor, s2p_xactn x0); endtask : before_sending

virtual task after_sending ( s2p_cmd_xactor xactor, s2p_xactn x0); endtask : after_sendingendclass : s2p_cov_cbk Update DBG_IFUpdate DBG_IFwww.cvcblr.com/blog

4

Transaction debug

February 22, 2007(5)

www.cvcblr.com/blog

5

Transaction Debug - summaryPowerful application of callbacksMinimal (or no) changes to the existing BFM (if VMM compliant)HUGE productivity benefit moves debug abstraction level higher upMore automation possible via scripts and new VMM macros (CVCs roadmap)February 22, 2007(6)www.cvcblr.com/blog

6

Verdis $fsdbLog featureSpringSoft (erstwhile Novas) recently added transaction debug capability to VerdiUse $fsdbLog wherever a transaction can be seen/captured

February 22, 2007(7) msg = $psprintf("# %0d %0d %0d \npld: %0d, kind : %s \nstart_time: %0t \nend_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);www.cvcblr.com/blog

February 22, 2007(8)

Detailed clock-by-clock infowww.cvcblr.com/blog

February 22, 2007(9)

Textual transaction browser all from single $fsdLog call!www.cvcblr.com/blog