转载:Verdi Transaction Debug Mode 简单使用_Holden_Liu的博客-CSDN博客
文档与源码:
User Guide: Verdi_Transaction_and_Protocol_Debug.pdf in $VERDI_HOME/doc
Verdi online doc: https://solvnet.synopsys.com/dow_retrieve/latest/verdi/verdi_olh/index.htm#page/ //need log in SolvNet before
testbench使用的是《UVM实战》的6.5.3章节源码:
源码地址:http://www.hzcourse.com/web/refbook/detail/5651/229
介绍:
Transaction and Protocol Debug:主要功能是基于UVM验证平台,图形化方式展现transaction,UVM messages,以及SNPS VIP protocol information等,便于进行debug。
准备:
环境变量: $VERDI_HOME, $LD_LIBRARY_PATH 等
TB: 示例TB包含两个ENV,只有一个testcase: my_case0.sv。在vseqr上启动vseq,vseq中首先发送一个tr(env0-seqr中),再启动两个seq(分别在env0-seqr和env1-seqr中各发送10个tr)。
top_tb.sv:
add dump wave
my_monitor.sv:
Verdi 默认只将sequencer中的Transaction dump到FSDB文件中,如需在non-sequencer,如monitor中dump Transaction,需加上如下两行代码,且成对存在。除此之外,还有SNPS VIP,SystemVerilog API其他方式。
Makefile:
-debug_access+cbk:
-ntb_opts uvm : uvm-1.1d
使用:
1.env0-sqr上一共11个tr,选中相应tr,右侧显示具体值。
2.sqr第一个tr, 是在vseq中创建的,所以选中后,v_sqr的stream变红,其为parent关系。(可在tr上右键->Highlight Relation)
3. mon上的红色感叹号是因为最后一个tr并没有采集到,因为上述的写法,导致begin_tr()与end_tr()并不是成对存在,最后一个tr缺少end_tr()。
4. 选中第一个tr,左侧栏选择Quick Fliter tab,可以进行条件过滤显示。只有一个tr的 $lable=="tr", 其他的被过滤掉,不再显示。
5.显示详细内容
6. 添加tableview, 更多设置见 User Guide.
7. Ctrl+Alt+T : 在波形上标注tr的时间
待续:
Interactive Debug