1、源码存放在hdl路径下,将hdl路径下所有的.v文件加入到filielist中,新建file.f文件
file.f 文件如下:
+define+FPGA //预编译宏
./hdl/*.v //加入所有.v文件
-f fpga_lib.f //也可以filelist文件的形式引入,
2、makefile的编写,新建makefile内容如下:
#+neg_tchk setup hold支持负值
FUNC_DEF = +neg_tchk
COMPILE_TOOL = vcs +systemverilogext+.sv+vpi -ntb_opts dtm
#生成vcd格式,-R 编译完成后立即执行,不必再单独执行./simv
COMPILE_OPTS = +vcsd +vcs+lic+wait -lca -R
#定义PLI接口的列表,verdi查看波形及uvm验证时都会用到
COMPILE_OPTS += -full64 -P /tools/synopsys/verdi/vL-2016.06-SP2-7/share/PLI/VCS/LINUX64/novas.tab
COMPILE_OPTS += /tools/synopsys/verdi/vL-2016.06-SP2-7/share/PLI/VCS/LINUX64/pli.a
COMPILE_OPTS += -negdelay
#预编译宏设置
COMPILE_OPTS += +define+FSDB
#保存所有log到日志文件
COMPILE_OPTS += -l ./hello.log
COMPILE_OPTS += $(FUNC_DEF)
.PHONY:clean run_all
run_all:
${COMPILE_TOOL} ${COMPILE_OPTS} -f ./file.f {tc}.v #tc是测试用例的名称,执行make时指定
clean:
rm -rf *.log *.sdf.X log* verdiLog simv.daidir novas.* csrc sdf_* simv ucli.key *.fsdb *.vf data *.f *.v
3、测试例top层中加入verdi的相关指令,生成fsdb格式的文件,方便仿真结束后查看波形
//500是每个fsdb文件的最大值,单位为M,100是数量
$fsdbAutoSwitchDumpfile(500,"./test.fsdb",100,"test.log");
//将rtl中想看的模块加入到波形中
$fsdbDumpvars(1,"tb");
$fsdbDumpvars(1,"tb.u0");
$fsdbDumpvars(0,"tb.u0.module0");
$fsdbDumpvars(0,"tb.u0.module1");
4、执行makefile
5、打开verdi,加入file.f文件及测试例文件;打开生成的fsdb文件,crl+w加入要查看的数据波形。