怎么debug testbench
以前是做设计的,如果我们design有错误了,就是把信号加到verdi 里面,通过波形去 debug 很方便。
现在转到做验证了,但是目前整个TB还非常的不稳定,用的是OVM ,以及一些SV,但RM 是用 c 写的,当前加入verdi的验证代码只要TB的top顶层,如果不熟悉项目的话,连TB哪些代码用到都不知道。而且在调试的时候,只能通过一些打印信息,感觉很不方便。
我想知道大家都是怎么做的?有什么比较好的建议吗?
测试平台是基于什么语言的?可以加入打印信息或者一些断言来进行调试,不过debussy软件好像可以支持class级的事务采样,就可以实现在对象窗口看到相应时刻的变量值,具体操作没有实现过,可以找找相关资料看看。
不知所云。
首先要知道你的testbench是用啥语言建的,如果是SV或者SC ,debussy可能需要加一些命令才能看信号,但是现在QUESTASIM都能直接看了!
感谢楼上的各位,第一次可能说得不清楚,编辑了一下。
基本上明白小编的意思了,小编是说Testbench中的变量/信号不能直接在波形中体现,对Testbench自身的debug不方便。
我的理解是:
(1)Testbench是过程性语言,小编可以去找软件工程师了解了解,比如C代码是如何调试的
(2)Testbench中的一些关键变量/信号我会直接送到interface中,在波形中可以看到
(3)Testbench中加入大量的assertion,用于Testbench的自检,在习惯了之后,就会发现比用波形调试简单快捷的多。尤其是对于一个有经验的验证工程师,就知道Testbench中哪个地方是容易出错的(比如存在死循环风险、错误导致阻塞程序等),然后在这些地方加上即时断言就可以避免
(4)如果使用了方法学,将log的sensitivity降低,详尽的打印信息有时很管用
(5)实在不行,可以break point 和 step-by-step。我初学时偶尔会用一用的。
(6)如果使用VCS仿真,DVE提供graphical user interface、UCLI提供interactive simulation,可以用于Debug。UCLI听说很牛X,反正我不用