以异步fifo为例使用vcs进行仿真(二):使用vcs对异步fifo进行仿真
对vcs需要掌握的东西:
一、使用vcs做仿真
二、使用vcs进行debug
三、使用vcd+file进行后仿
四、检测仿真不匹配
五、快速RTL级仿真
六、快速门级仿真
七、代码覆盖率
一、使用vcs做仿真
1、基础知识
vcs仿真分为两个步骤:1、编译;2、仿真
vcs编译命令格式:vcs sourcefile [compile_time_option]
sourcefile:包含所有的verilog/SV格式的DUT和testbench文件,文件之间以空格分开
compile_time_option:vcs仿真时的控制指令
vcs -help:列出所有的编译选项,运行时间选项和环境变量
主要编译命令选项:
-Mupdate:增量控制编译(只有改变了文件会再被编译)
-R:在编译之后之间运行
-gui:运行的时候启动dve
-l <filename>:改变运行日志文件名
-sverilog:支持system Verilog
-+v2k:编译支持verilog 2001
--debug_all:启用debug选项
库文件选项:
-v lib_file :在lib_file文件中搜索未解析的模块引用
-y lib_dir :在lib_dir目录中搜索未解析的模块引用
+incdir+inc_dir:在inc_dir路径中搜索`include文件
通过文件获取需要编译的文件列表:
-file filename:该filename中可以包含要被编译的文件列表和选项
输出自定义文件
-o outputfile:vcs默认输出的可执行文件为simv,加上该选项后,输出为outputfile,主要作用就是改了名字
宏定义选项:
+define+<macro_name>=value:可以在文件外宏定义一个值,主要作用就是开关
vcs命令格式:simv [run_time_options]
-s 仿真0时刻就停止
-l log 仿真输出到log
1、仿真
本次代码使用的是上次的异步fifo代码
文件建立格式如上图:flist存放file.list类文件,该文件中存放rtl设计文件和testbench文件的路径,在编译时输给vcs, 对应选项-f;rtl文件夹中存放设计文件;tb中存放testbench文件sim文件夹为编译仿真时的运行文件夹,用于存放makefile 和仿真产生的可执行文件、.o文件和log文件;work中主要用于综合。
编译指令如下:
编译后产生的文件:
sim.log文件编译信息文件,里面包含了版本信息,warning信息,如果出错也会报出错信息,以及编译过程中信息,如读 入的文件,调用的库,产生的.o文件;simv为可执行文件,是下一步仿真的文件;simv.daidir存放了db和sdb文件;crcs存 放了.o文件,是增量编译的关键。
运行指令如下:
该指令启动dve gui界面进行波形分析
选中波形加入波形窗口,即可看见波形
现在尝试其他选项:
连续两次使用该选项,可以看见编译信息输出如下:
其实该选项是默认的。
file.list内容如下:
其他选项不再赘述。
所有的命令都可以写成makefile的形式,我的makefile格式如下: