vlambda博客
学习文章列表

【开发工具】Verdi使用

1. Verdi入门

Verdi Automated Debug System是一款非常强大IC前端工具,几乎占据了波形定位工具的半壁江山,但是以前在学校里用的最多的还是Modelsim,现在是从头开始学习,所以说的应该都是很基础的东西,其他复杂的功能以后用熟了再说吧。
Verdi一般作为IC验证工程师(Debug)、 I C设 计工程师(Review)会经常使用的工具。用于查看设计思路和找设计漏洞。

入门学习目标主要以下三条:
  • 能够生成fsdb波形;

  • 能够查看fsdb波形;

  • 能够追踪RTL代码。



1.1 verdi简介

VCS和Verdi这两个工具目前都属于Synopsys(新思)公司,其中Verdi的来源可谓一路坎坷,Synopsys在收购Verdi之前是用的自己的DVE工具,这也是后面收购Verdi以后,旧版本的VCS编译的时候,还必须加上-P(VIP环境中常见)参数指定Verdi的PLI接口,这么麻烦的原因就在这两个软件本来就不是一家公司设计的。

1997年,台湾的SpringSofe(源笙)公司在硅谷创建Novas Software,Verdi最初就是由Novas Software公司开发(现在使用Verdi的时候会产生novas.rc和novas.conf这两个临时文件。),曾用名Debussy,和Verdi一样,这两个都是用的19世纪音乐家的名字。

在2008年,台湾的EDA厂家SpringSoft收购,并将其合并为SpringSofter USA全资子公司。

在2012年,Synopsys收购了spring soft公司,所以此时Verdi才正式属于Synopsys,DVE中的很多功能就此整合到Verdi中。


ps:VCS编译时加入-kdb(整合Verdi后推出),可以生成simv.daidr文件,使用这个Verdi可以秒开波形,不再浪费编译时间(支持Makefile)

Verdi Knowledge Database (KDB) is supported in both VCS two-step and three-step flows. In the VCS two-step flow, add the - kdb option to the command line to generate Verdi Knowledge Database (KDB).



1.2 Verdi的实用技巧

调出信号列表


波形文件保存.rc

使用Verdi定位问题,调出波形,为方便下次使用,按键shift+S可以将波形保存为xxx.rc格式文件,使用波形文件时,按快捷键r打开界面,选择波形。
打开.rc,使用快捷键R(restore signal)

这个教程是没问题的,但是我在刚刚使用Verdi的时候还是遇到了坑,要使用这个快捷键的时候必须要鼠标选定波形串口,如果鼠标选中其他地方的话,调用的就是verdi的主菜单,主菜单的shift+S是保存界面,生成.ses保存整个窗口,虽然也能包括波形但是如果一开始保存了.rc那就只能restore signal,而不能通过restore session来操作了,我就是这样...不过后面终于找到了restore signal在哪里,网上根本没有讲过这个东西的资料。


放大缩小波形

【开发工具】Verdi使用

可以点击这两个标志。也可以使用快捷键shift + Z和z。

但是我自己的很少这么使用,我一般更懒一些直接全鼠标操作,在nwave波形界面拖动鼠标:

【开发工具】Verdi使用


【开发工具】Verdi使用

水平左右是选中一段波形放大,垂直上下总览全局,还有4个45度方向,其中就包括了刚刚上面提到的2倍放大缩小,这个操作就很方便


重新加载波形

使用shift + L可以重新加载波形,这样如果有信号更新就没必要关闭verdi窗口再打开了


mark标记功能

为方便波形定位,按键shift+M使用mark功能标记一下,可以自定义波形的名称和颜色,方便查找。


显示波形信号全路径

按H显示波形信号全路径,再按H撤销


拖动信号到目的位置

长按鼠标中键,当然鼠标左键也可以,但是从代码signal list中往nWave中移动的话还是中键好用一些


改变信号和波形颜色

按C或者T修改信号或者波形颜色,方便查看


从代码中找到对应波形

选中信号ctrl+w


在所有文件中查找信号

按快捷键“/”,会跳出 Find string 对话框,输入需要查找的信号名。


在scope of search 选项点击 in all files, 点击find即可。


也可以通过点击图形界面source--->find string弹出


窗口操作撤回

【开发工具】Verdi使用

如果在调试过程中不小心误操作把窗口拉到了奇怪的位置,我就经常干这样的事...可以通过window选项中的previous layout(ctrl + alt + R)和next layout(ctrl + alt + E)来进行撤销还原。


如果错太离谱,要直接初始化页面的话,就点第一个hardware debug mode(ctrl + alt + H)


保存当前调试的所有设置和界面

在调试波形的过程中进场需要设置分组,调整顺序什么的,如果中途退出后面再导入波形不会记录这些操作,你可以保存当前的调试环境,并在下次重载。verdi自动把当前的调试环境保存在工作目录下的VerdiLog 的autoload.ses 中。File->Save Session 保存当前调试状态,下次启动后File->Restore Session.

实际上波形中的变动verdi会自动保存到默认的ses中。只不过手动保存可以定义不同的调试版本。


灵活使用calling/definition

【开发工具】Verdi使用

在代码中定位信号的上下层,以及同信号的其他位置


信号值查找

把模式选定为bus value,然后在右边窗口输入要查找的数值,选中信号后点击右边的左右方向键就可以找到输入值在信号中的位置了。


在verdi中编辑代码

编辑完后记得点击代码界面右上角的保存,一般适用于改一些小错误,一两句话这种,如果大修还是去vim比较方便。


进制切换

在nWave界面,选中要求切换进制的信号右键,选择第一个 set radix,默认16进制。



参考资料:

[1] https://blog.csdn.net/fengxiaocheng/article/details/106615840

[2] https://blog.csdn.net/darknessdarkness/article/details/105003185

[3] https://blog.csdn.net/immeatea_aun/article/details/80961258
[4] https://blog.csdn.net/zhajio/article/details/109450216

[5] 维基百科