当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

分享一些Verdi实用技巧

时间:2023-06-09 | 栏目:接口/总线/驱动 | 点击:

Bus Operations总线操作

一个多比特的bus拆分成几个位宽较小的bus:

Signal -> Bus Operations -> Expand as Sub-bus

4f4b2f68-05e7-11ee-962d-dac502259ad0.png

例如将128bit分成32bit:

4f5a27ca-05e7-11ee-962d-dac502259ad0.png

结果:

4f67d4e2-05e7-11ee-962d-dac502259ad0.png

Logical Operation逻辑运算

可以通过对现有信号执行的逻辑操作创建新信号,或者搜索信号值。

Signal -> Logical Operation

4f748bd8-05e7-11ee-962d-dac502259ad0.png

逻辑操作

两信号进行与运算,也可以进行其他运算:

4f803384-05e7-11ee-962d-dac502259ad0.png

相与之后得出新信号:

4f8a45ea-05e7-11ee-962d-dac502259ad0.png

数值搜索

输入搜索的值,点击create,该值位置会拉高.

4f95820c-05e7-11ee-962d-dac502259ad0.png

4fa0d94a-05e7-11ee-962d-dac502259ad0.png

Set SearchValue数值搜索、上升沿和下降沿搜索

进行数值搜索、上升沿和下降沿搜索

4fa87740-05e7-11ee-962d-dac502259ad0.png

选中信号,按n向后搜索,N向前搜索;

数值搜索:

4fb937b0-05e7-11ee-962d-dac502259ad0.png

上下沿搜索:

4fc38f62-05e7-11ee-962d-dac502259ad0.png

自动计数

方法一:Grid Options网格计数

可以指定在波形窗中绘制网格线。选项包括Rising Edge, Falling Edge和 Both Edges。

View -> Grid Options

4fd167b8-05e7-11ee-962d-dac502259ad0.png

选中grid和grid counter with start number:

4fe14d86-05e7-11ee-962d-dac502259ad0.png

如图:信号下方出现了数字,可以用于计数。

4fec69b4-05e7-11ee-962d-dac502259ad0.png      

方法二:自动计数器

右击PCLK信号,选择Add Counter Signal by,选择上升沿、下降沿、任意沿中的一个。

4ffbd688-05e7-11ee-962d-dac502259ad0.png5013a7fe-05e7-11ee-962d-dac502259ad0.png

Signal Event Report统计

统计出某个信号在特定时间段内的跳变的次数。

View -> Signal Event Report

501cc096-05e7-11ee-962d-dac502259ad0.png

Rising:指的是指定Marker时间段内上升沿数;

Falling:指的是指定Marker时间段内下降沿数;

50288214-05e7-11ee-962d-dac502259ad0.png

备注:利用Logical Operation和Signal Event Report可以统计非连续有效信号

Waveform Compare比较波形:

nWave提供了一种综合比较自动比较不同结果的能力。在比较完成后,nWave以图形方式显示波形窗格中的任何不匹配,然后可以通过每个不匹配来分析差异。

Tools -> Waveform Compare

50393e38-05e7-11ee-962d-dac502259ad0.png

50475f9a-05e7-11ee-962d-dac502259ad0.png

Reverse回退仿真

makefile中加上-lca -kdb -debug_access+all+reverse

5051d420-05e7-11ee-962d-dac502259ad0.png

运行 ./simv –verdi &启动verdi之后,需要打开verdi的回退仿真功能:

tools->Preferences中设置

50641220-05e7-11ee-962d-dac502259ad0.png

506ec940-05e7-11ee-962d-dac502259ad0.png

设置几个断点;在verdi的console中,输入run,启动仿真;

507a36a4-05e7-11ee-962d-dac502259ad0.png

点击run/continuereverse回退仿真

50903634-05e7-11ee-962d-dac502259ad0.png

509d2fec-05e7-11ee-962d-dac502259ad0.png

此时,执行的光标,回到了断点代码的前一行。此时仿真的状态就回到了执行上一条指令的状态。

因此可以利用reverse功能,实现回退式仿真。这样当仿真不小心过了我们的设定点,可以使用reverse功能,回退到这个点。从而避免重新启动仿真。





审核编辑:刘清

您可能感兴趣的文章:

相关文章