vcs与verdi的简单使用

Step1:配置环境变量

根据verdi和vcs安装的位置配置环境变量

#synopsys
export SYNOPSYS=/usr/synopsys

#vcs 
export VCS_HOME=$SYNOPSYS/vcs_L-2016.06-SP2-12

#dve
export DVE_HOME=$VCS_HOME/gui/dve
export PATH=$PATH:$DVE_HOME/bin:$VCS_HOME/bin

#verdi
export VERDI_HOME=$SYSNOPSYS/verdi3_L-2016.06-SP2-12
export NOVAS_HOME=$SYSNOPSYS/verdi3_L-2016.06-SP2-12
export LD_LIBRARY_PATH=${NOVAS_HOME}/share/PLI/VCS/LINUX64
export FSDB_HOME=$VERDI_HOME/share/PLI/VCS/LINUX64
export PATH=$PATH:$VERDI_HOME/bin:$VERDI_HOME/platform/LINUX64/bin

实际的路径需要根据软件安装的实际位置做调整。(如果有其他人配置好的bashrc,可以直接赋值过来使用)
修改成功后,执行如下命令,让bashrc生效

source ./bashrc

Step2:编写Makefile脚本

Makefile脚本一般包含四个部分:
vcs编译
vcs仿真生成fsdb波形文件
verdi打开波形文件debug
clean部分,清除仿真中产生的文件,便于重新仿真


1. VCS 编译部分:

com_vcs:
	vcs \
	-sverilog \
	-debug_all \
	-l com.log \
	+v2k \
	-P $(VERDI_HOME)/share/PLI/VCS/LINUX64/novas.tab \
	${VERDI_HOME}/share/PLI/VCS/LINUX64/pli.a \
    	-f ../Source/file.list \
	-top TopLevel_tb \
	+vcs+lic+wait 

vcs:调用vcs软件
-sverilog:让vcs支持system verilog的文件
-debug_all: 生成fsdb波形的时候必须加上,不然无法产生波形
-l com.log: 生成log文件,用于保存仿真中出现的信息
+v2k:支持verilog2001

  • P ${VERDI_HOME}/share/PLI/VCS/LINUX64/novas.tab \ ${VERDI_HOME}/share/PLI/VCS/LINUX64/pli.a : 使用verdi与vcs仿真的必要文件,生成verdi接口能够识别的文件
    -f …/Source/file.list : 指定需要complie文件的路径,file.list是所有文件的集合(如下图)

file.list 可以使用find命令产生: find -name “*.v” > file.list
-top TopLevel_tb : 指定文件的顶层,一般为testbench. TopLevel_tb为使用的testbench module的module name,而不是testbench文件名,一定要区分开。如果写了文件名,打l开Verdi时会报错,出现unrecognized signal的错误,或者是log文件中出现指定错误的toplevel的错误
+vcs+lic+wait:如果没有可用的通知,则告诉VCS等待网络许可证;

补充说明:

  1. vcs还有其他编译选项,可以根据情况选择
  2. 碰到不知道的编译命令,可以使用vcs -full64 -help来查看帮助
  3. vcs安装目录下的doc中会有VCS的User Guide,可以查看User Guide

2. 仿真部分:

sim: 
	./simv \
	-l sim.log \
	-ucli -i ./run.tcl \

./simv : vcs complie后生成二进制可执行文件,执行二进制可执行文件
-l sim.log: 生成sim.log文件记录仿真中出现的信息
-ucli -i ./run.tcl : 仿真中使用tcl脚本,生成fsdb波形,相较于在testbench中使用系统函数,使用tcl更灵活方便
run.tcl 脚本

global env
fsdbDumpfile "TAGE.fsdb"
fsdbDumpvars 0 "TopLevel_tb" 
run

global env:表示使用global 的环境
fsdbDumpfile :用于指定生成fsdb文件的文件名
fsdbDumpvars([depth, instance][, “option”])*
depth表示要加载波形的层次;0表示当前instance下的所有变量一级其他module实例的波形,1表示当前instance中的变量的波形,不包括当前instance中的其他module实例的波形,2表示包含当前instance以及其中的第一级子instance的波形;以此类推。
instance指定要加载波形的module名。
option加载波形的选项,如:
+IO_Only – 只加载IO port信号;
+Reg_Only – 只加载reg类型信号;
+mda – 加载memory和MDA信号;
+packedmda – 加载packed MDA;
+struct – 加载structs;
+parameter – 加载parameter;
run: 开始仿真

在testbench中添加了$finish信号及 #5000 用于控制仿真时间。也可直接使用run + 时间控制仿真


3. verdi的使用

verdi:
	verdi \
	-sv \
	-f ../Source/file.list \
	-nologo \
	-ssf TAGE.fsdb \

verdi:生成fsdb文件后,使用make verdi打开verdi查看波形
-sv :支持system verilog
-f …/Source/file.list : 添加file.list中的文件
-nologo: 关闭打开软件的logo
-ssf TAGE.fsdb:自动加载波形


4. clean

clean:
	rm -rf *.vpd csrc *.log *.key *.vdb simv* DVEfiles coverage *.fsdb

使用rm -rf命令清除仿真中生成的文件

你可能感兴趣的:(vcs与verdi的简单使用)