fifo的源码:https://github.com/dadongshangu/async_FIFO
一、VCS+Verdi使用流程(快速入门)
1.1 环境配置
在终端中输入:vim ~/.bashrc进入.bashrc文件,添加如下路径:
其中,
VCS_HOME:VCS路径
UVM_HOME:库的路径
WORK_HOME:工程的路径(此代码没用到WORK_HOME可不设置)
NOVAS_HOME:Verdi的安装路径
1.2 makefile文件
makefile文件如下,可参考:
case0: simv
./simv +UVM_TESTNAME=asyncf_case0 -l case0_run.log
case1: simv
./simv +UVM_TESTNAME=asyncf_case1 -l case1_run.log
simv:
vcs +v2k -debug_acc+all -full64 \
-fsdb\
-ntb_opts uvm-1.1\
-sverilog\
-timescale=1ns/1ps\
-f ../flist/filelist_uvm.f \
-cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed\
+incdir+../tb \
+notimingcheck \
+nospecify \
-l vsim.log \
-top top_tb
verdi:
verdi -f ../flist/filelist_uvm.f -ssf top_tb.fsdb -nologo &
.PHONY: case0 clean verdi
clean:
-@rm -rf novas.* verdiLog *.log simv simv.daidir *.fsdb *.key csrc *.h
1.3 通过VCS生成Verdi需要的fsdb波形文件
添加如下代码段,仿真后可以产生.fsdb文件:
initial begin
$fsdbDumpfile("top_tb.fsdb");//top_tb.fsdb为文件名
$fsdbDumpvars(0);
end
1.4 运行
最后输入指令:make case0(即运行case0指令,编译方针VCS);输入make verdi(运行verdi指令),如下是Verdi的页面:
二 Makefile语法
2.1 Makefile语法格式
- 目标(target): 依赖(dependencies
命令(command)目标是 Makefile 中的执行对象,依赖是目标所依赖的文件或目标,命令是执行生成目标所需要的操作。
- 目标: 依赖1 依赖2 …
命令1
命令2
…目标可以有多个依赖和多个命令。命令前必须使用 Tab 键进行缩进!!!
应用案例:
simv:
vcs +v2k -debug_acc+all -full64 \
-fsdb\
目标:simv
依赖:空
命令:vcs +v2k -debug_acc+all -full64
-fsdb\
2.2 Makefile命令执行
(1)make会按顺序一条一条的执行命令。每条命令必须以Tab键开头,如果命令过长,可以使用反斜杠“\”作为换行符。
(2)而当一个target下有多条命令时,就会有两种可能:
- 当希望后一条命令是接在上一条命令执行之后,再执行。此时需要用分号 ; 连接两个命令,这与管道 | 类似。
- 当希望两条指令并行执行,直接换行即可。
(3)如果命令执行到当期行,发现命令出错了(如cd命令时不存在目标目录)。假如我们不希望整个make动作因为命令错误而停止,可以再命令行TAB键之后加一个减号“-”,表示不管命令是否出错,都认为是成功的。
2.3常用命令
命令 | 描述 |
---|---|
-sverilog | 支持systeverilog语法 |
+v2k | 支持 Verilog 2001 语法 |
–fsdb | 调用Verdi PLI 库,支持fsdb 波形 |
-timescale = 时间单位/精度 | 设置仿真的时间单位、精度; |
-debug | 使能DVE、VERDI波形调试和UCLI命令行调试等 |
-debug_all | 使能所有的debug调试功能 |
-debug_pp | 同-debug_all,但是更加节约资源 |
–full64 | 调用Verdi PLI 库,支持fsdb 波形 |
–ntb_opts UVM-1.1 | 表示加载UVM-1.1库文件 |
-l filename | 指定vcs编译信息的存储文件 |
-f filename | 指定源文件的路径名列表 |
–ntb_opts UVM-1.1 | 表示加载UVM-1.1库文件 |
–ntb_opts UVM-1.1 | 表示加载UVM-1.1库文件 |
–ntb_opts UVM-1.1 | 表示加载UVM-1.1库文件 |
–ntb_opts UVM-1.1 | 表示加载UVM-1.1库文件 |