Verdi 基础教程

一、Verdi 功能

  • 查看设计
  • debug
  • Verdi不能自己产生波形

二、Verdi使用流程

1、Verdi环境配置

.bashrc中配置

export Verdi_HOME=$Synopsys_Dir/Verdi2015
#export NOVAS_HOME=$Synopsys_Dir/Verdi2015
export PATH=$Verdi_HOME/bin:$PATH
export LD_LIBRARY_PATH="/opt/Synopsys/Verdi2015/share/PLI/lib/linux64"$PATH
export LD_LIBRARY_PATH="/opt/Synopsys/Verdi2015/share/PLI/VCS/linux64"$PATH
//设置为verdi的安装目录

2、VCS产生Verdi波形

·tb文件中加入相应的系统函数

initial begin
$fsdbDumpfile("fifo.fsdb");
$fsdbDumpvars(0);
end

·makefile中加入相应的选项

#************parameter input*************

#※prepare the source list file and then make add the soucefile name

#for example ,the Verilog source file's name is vlog_list.f then :make norsim src_list=file_list src_list = sim

simv_name = simv vpdpluse_name = vcdpluse cov_file_name = coverage vdb_name = $(simv_name)

#************constant command************ 

#compile
NOR_VCS = vcs -full64 -sverilog +v2k -timescale=1ns/1ns            \
-debug_all                                                         \               
+notimingcheck                                                     \
+nospecify                                                         \
+vcs+flush+all                                                     \
-o $(simv_name)                                                    \ 
-l compile.log                                                     \
-f $(src_list).f

#coverage compile switch
COV_SW = -cm line+cond+fsm+branch+tgl

#verdi dump wave compile option
VERDI_SW = -P /opt/Synopsys/Verdi2015/share/PLI/VCS/linux64/novas.tab \
/opt/Synopsys/Verdi2015/share/PLI/VCS/linux64/pli.a

#run option
RUN_GUI = -R -gui -l run.log
RUN_VPD = -R +vpdfile+$(vpdpluse_name).vpd -l run.log

RUN_COV = -R $(COV_SW) -cm_name $(vdb_name) -cm_dir ./$(cov_file_name) -l run.log RUN_VER = -R +fsdb+autoflush -l run.log

#************command***********************
#normally sim
norsim:
$(NOR_VCS) $(RUN_GUI)

#post-process
postsim:
$(NOR_VCS) $(RUN_VPD) dve -vpd $(vpdpluse_name).vpd

#coverage
covsim:
$(NOR_VCS) $(COV_SW) $(RUN_COV) dve -covdir $(cov_file_name).vdb

#verdi
versim:
$(NOR_VCS) $(VERDI_SW) $(RUN_VER) verdi -sv -f $(src_list).f -ssf *.fsdb -nologo

#rm
clr:
rm -rf *csrc ./*.daidir $(simv_name) *simv* DVE* ucli* *.vpd *.vdb *.log *.fsdb *novas* *.dat *Log *rc *conf

3、Verdi使用

1.打开Verdi

  1. verdi -nologo
  2. makefile 命令

2.nTrace使用

  • 查看包含的设计架构

Verdi 基础教程_第1张图片

  • 查寻模块实例化的位置

①在设计结构中双击实例化模块的名字->源代码窗口高亮了模块名
②再双击高亮的模块名->看到在上层模块中的哪一行被调用了

  • 在nTrace中查找模块和信号
  • Verdi 基础教程_第2张图片
  • 查寻字符串

Verdi 基础教程_第3张图片

  • 查看驱动信号相关

         

3.nSchema使用

  • 查看原理图

Verdi 基础教程_第4张图片

  • 显示原理图各信号名

Verdi 基础教程_第5张图片

RTL级

  • 在当前的层次中查找某个信号

Verdi 基础教程_第6张图片

Verdi 基础教程_第7张图片

  • 使用Fan-In Cone追踪某个信号的驱动逻辑

①首先要用上面的办法来查找信号
②调用该工具:

Verdi 基础教程_第8张图片

  • 产生partial hierarchy schematic

用来查看与选择特定信号有关的逻辑/模块
①选择需要查看的信号(可以通过shift键来选择多个信号)

Verdi 基础教程_第9张图片

4.nState使用

  • 查看状态机视图?

Verdi 基础教程_第10张图片

  • 查看状态的执行语句和转移条件

Verdi 基础教程_第11张图片

  • 查看某个状态的执行次数

Verdi 基础教程_第12张图片

Verdi 基础教程_第13张图片

5.nWare使用

  • 添加波形到nWave

①我们要打开.v文件
②打开nWave然后打开.fsdb波形文件

③正式添加波形:
-快捷键G或者:

Verdi 基础教程_第14张图片

Verdi 基础教程_第15张图片

-在nTrace中选中信号后,鼠标中键拖拽,或者ctrl+w进行添加

  • 查找某信号,添加到nWave中

①通过nTrave查找到该信号

②通过上面的方法进行添加

或者通过get signal来查找

  • 给Group重命名,排序,以及调整信号位置

(1)重命名:

Verdi 基础教程_第16张图片

 

(2)信号的拖拽:

通过鼠标中键进行拖拽。

(3)缩小:

快捷键z,或者100%匹配:F

(4)放大:

左键拖选放大范围

shift+Z

ctrl+滑轮:进行放大或者缩小

(5)移动:

鼠标中键按住信号拖拽中键选择位置:

Verdi 基础教程_第17张图片

 

(6)复制:

ctrl+P,或者右击信号,选择复制的选项

(7)粘贴:

ins键,或者右击信号,选择粘贴的选项

(注意:可以通过鼠标中键选择粘贴的位置)

(8)删除:

delete键

  • 改变信号的颜色:

第一步:Tools->preferences->waveform->viewoption->waveformpane->general->paint waveform with specified color/pattern

Verdi 基础教程_第18张图片

 

第二步:选中信号,然后按快捷键C改变信号颜色:

  • 查看信号及变化:

Verdi 基础教程_第19张图片

任意值:所有信号变化,一般会应用到组合逻辑的指示信号信号沿:用于查找有效指示信号,比如使能信号

总线值:主要是用来查找数据信号

模拟值:查看比如函数发生器产生的正弦波信号

进制之间的转换:

Verdi 基础教程_第20张图片

符号数之间的转换:

Verdi 基础教程_第21张图片

状态寄存器显示为状态名字:

nTrace:

Verdi 基础教程_第22张图片

或者nWave:

Verdi 基础教程_第23张图片

可以通过移除关联从状态机名字恢复到原来的进制显示:

Verdi 基础教程_第24张图片

可以看到,我们打开过状态机视图之后,我们也就可以在状态名和进制之间转换了:

Verdi 基础教程_第25张图片

  • 如何通过逻辑操作创建新信号?

Verdi 基础教程_第26张图片

Verdi 基础教程_第27张图片

  • 如何添加marker?

shift+M

  • 总线操作:

Verdi 基础教程_第28张图片

Verdi 基础教程_第29张图片

  • 如何查找信号的某个值、某个值跳转到某个值?

Verdi 基础教程_第30张图片

Verdi 基础教程_第31张图片    Verdi 基础教程_第32张图片

  • 如何对比两个波形?

Verdi 基础教程_第33张图片

你可能感兴趣的:(数字IC)