上一篇文章IC君跟大家分享了Verdi使用技巧——连续有效信号量测方法。 有不少网友在文章后留言或者微信给我留言,提供了一些其它方法。 不得不说广大人民群众的智慧才是无穷无尽的,大家一起交流才能取得更大的进步!
首先补充一下其他网友给我提供的测量连续有效信号的一些方法。
网格法:
点击菜单里面的view选项,选择Grid Options,如下图所示:
选中选项Grid on 以及选项 Grid Counter with Start Number,如下图所示,点击Apply或者OK之后,就可以看到波形里面出现了网格,最下面有数字出现。 这种方法还有一个好处是鼠标左键点到CLK信号的任意位置,计数都是从新的地方开始,具有很强的灵活性。
自动添加计数器:
右击CLK信号,选择Add Counter Signal by,选择上升沿、下降沿、任意沿中的一个,
就会自动产生一个16进制的计数信号,不过它的计数起点是从CLK的0时刻开始,不能选择任意时刻,所以缺乏灵活性。
这两种方法更推荐第一种网格法,看起来很强大,大家可以继续探索探索。
但是实际debug过程中,更常遇到的场景是非连续有效的信号,如下图所示:CLK并不是在每个时刻都是有效的,这时我们又该如何比较快速准确的获知某个时间段内有效信号(CLK)个数呢?
跟获取连续有效信号个数一样,如果某个时间段内有效信号个数较少(比如少于10个),直接手动数就可以了。 当有效信号toggle次数比较多时,肉眼无法快速看出数量的时候,我们可以利用Verdi nWave里面的Logical operation 和Signal Event report 这两个功能来实现。
对于非连续有效数据传输,通常会有一个信号来标志哪笔数据是有效的,如上图中的valid_in信号为1时表示data_in数据有效。 利用这个标志信号跟时钟进行“与”操作,就得到一个新的时钟。 这个新的时钟只有在数据有效时才有,在数据无效时被遮掉了。 再通过Signal Event report获知指定时间内新的时钟个数,就可以知道有效数据的个数了。
具体操作步骤如下:
1.鼠标选中时钟信号clk和数据有效标志信号valid_in;
2.点开nWave 菜单里面的Signal,再选择下拉菜单里的Logical Operation,如下图:
3.在弹出的对话框里面,如下图所示,确认Expression 里的信号操作是”&”; 把Name改成valid_in_clk; 然后点击Create/Modify按钮;
再回来看波形,如下图所示,就会发现多了一个信号valid_in_clk,这个信号就是我们需要的新时钟信号。
4.接下来就是Signal Event Report闪亮登场了。 选中valid_in_clk, 然后在View下拉菜单里面选Signal Event Report。 如下图所示,在弹出的对话框里,找到Falling#这一列,里面列的数字16就是我们指定的时间段内有效的数据个数了。
如果还是半信半疑的同学,可以手动数一数,看看Logical Operation加Signal Event Report这套组合拳的结果是否正确,哈哈~
用Logical Operation和Signal Event Report来量测非连续有效信号的方法就介绍到这里了,大家都学会了吗?
-
信号
+关注
关注
11文章
2779浏览量
76611 -
计数器
+关注
关注
32文章
2253浏览量
94343 -
Verdi
+关注
关注
0文章
22浏览量
8760 -
signal
+关注
关注
0文章
110浏览量
24878 -
时钟信号
+关注
关注
4文章
445浏览量
28506
发布评论请先 登录
相关推荐
评论