如果问广大的ICer一个问题,大家在日常仿真中用的最频繁的工具是什么?
我相信绝大多数人的答案是Verdi ——Synopsys旗下的一款功能强大的工具:
Verdi自动化调试系统是Verdi SoC调试平台的核心,它支持对所有设计和验证流程进行全面的调试。它包括强大的技术,帮助您理解复杂和不熟悉的设计行为,让困难和乏味的调试过程自动化,并能让多样和复杂的设计环境一致化。
如上面的官方定义所示:
在IC设计中,可以根据仿真结果检查或者理解设计;
在IC验证中,常常用来调试(debug)一些错误的情况。
在IC君的眼中,Verdi既可以阅读调试代码,又可以查看波形(Verdi里面的nWave工具),包括数字设计的波形和模拟设计的波形,确实是居家旅游、工作赚钱的必备利器。
下面分享一些在实际做项目过程中verdi在debug时的小技巧:连续信号有效数量的测量。
如下图所示,clk是输入时钟信号,data_enable_in是输入数据有效标志信号,y_in则是输入数据。在debug的时候,有时我们想要知道白色光标和黄色光标时间内有多少个连续有效的数据y_in。我们该如何做到呢?
一般可以使用以下3种方法:
方法1:最直接也是最笨的办法,当然是手动去数,1、2、3…;如果该时间段内,数据量较少,很快就可以数出来了。当数据量较多时,只要你有足够的耐心和时间,有时还需要一副好眼睛,最终也是可以得到正确的结果。不过效率非常低下,比较麻烦的是还容易数错。
方法2:如果已知时钟周期(本例子中clkp=6.736ns),则可以计算该时间段内时钟个数来获知数据量;上面例子的图中两个光标之间的时间差delta=188.608ns,delta/T=28,因此就是28个数据了。是不是要比直接用手动数快很多了?这个办法虽然准确,但是每次都要计算一次,如果需要频繁的获知不同时间段内的有效数据还是太麻烦了一点。
方法3:本文重点要介绍的方法。该方法是通过把时钟周期设置为时间单位,这样两个光标之间的时间差就是该段时间内的有效数据量了。具体操作方法如下:
如下图用鼠标点击1,会弹出对话框;点击2位置倒三角形,下拉选项中选时钟周期单位是ns;然后再把timeunit
改为clock周期6.736ns,点击OK
再看delta显示出来的值,已经变成28了,即为我们要数的数据量了。
这个方法对于一段时间内的连续有效数据来说,应该是最简单有效的获取数据个数的方法了。任意改变两光标的距离或位置,都很直接的得到该段时间内的连续有效数据量。该方法在debug过程中常常会用到,请大家善加利用。
另外还有一个比较有效的办法是利用verdi的nWave里面的Signal Event Report
功能。该方法虽然稍显麻烦,但善于利用,也可以变得非常好用。方法如下图:
a.鼠标点击选中clk 这个信号;
b.点击view菜单,选择下拉菜单里面的SignalEvent report,就会弹出对话框;
c.进度条往后拖,会看到Falling#这一栏显示的数据28就是我们要的数据量了。
以上就是一段时间内连续有效数据的几个测量方法。debug的时候方法3最简单便捷,应用频率也较高;但是其他几个方法在特定的场景下也可以发挥出自己的作用,需要根据实际debug的时候灵活应用。
全部0条评论
快来发表一下你的评论吧 !