小白UVM实战学习笔记——环境搭建
初学UVM,记录一下,姑且是搭建好了环境。
虚拟机&操作环境参考这篇: IC_EDA_ALL虚拟机
目前只用了vcs,这个虚拟机上的内容比较全,留用。
vscode的配置可以参考: vscode搭建Verilog HDL开发环境
由于不建议虚拟机联网,所以目前没有在虚拟机上装vscode。在win系统上写代码,然后到ubantu上编译…
参考书籍是张强的《UVM实战》,书中源码以及UVM源码在这里拿到的: github
文件准备
除了需要用到的sv代码外,还需要两个比较重要的文件:makefile 和 filelist.f
1.makefile
这个文件无后缀,和sv代码放一起就行,使你避免冗长复杂的输入,可以直接用封装好的命令。看到网上做UVM的makefile文件大多都比较类似,一般不需要轻易改动。目前没有做更多了解。
makefile:
.PHONY:vcs sim verdi clean
VCS = vcs -f filelist.f \
-timescale=1ns/1ns \
-full64 \
-R \
-debug_acc+all \
+define+FSDB \
-fsdb \
-lca -kdb \
-ntb_opts uvm-1.1 \
-sverilog \
+v2k
vcs:
${VCS}
sim:
./simv -gui
verdi:
verdi -ssf tb.fsdb &
clean:
rm -rf csrc verdiLog simv.daidir \
novas.* \
vc_hdrs.h \
simv \
*.key \
*.fsdb \
*.log \
inter.vpd \
DVEfiles
共提供了4个命令:(在工程目录下通过命令行输入)
make vcs: 使用VCS对代码编译,在没有filelist.f文件时是编译不了的。后面介绍
make sim: 用simv查看仿真波形
make verdi: 用verdi查看仿真波形,注意需要在顶层tb模块中添加语句:
initial begin
$fsdbDumpfile("tb.fsdb");
$fsdbDumpvars;
end
才能够运行,否则报错。
make clean: 编译完成后清理掉产生出来的无用文件,让你的文件目录更整洁。
2.filelist.f
上文提到的make vcs指令中,需要读取filelist.f中的文件。里面应包含uvm库的路径,以及项目里的所有.sv文件。该文件和makefile放一起即可。
这里需要提前设置一下UVM_HOME的环境变量。
在/home/ICer下打开命令行,输入
g .bashrc
在打开的bashrc中加一行
export UVM_HOME=/home/ICer/UVM_example/uvm-1.1d
注意,UVM_HOME的路径应当和你的实际路径一致。我的uvm版本是1.1d,存在了/home/ICer/UVM_example/这个路径下。
这样就将UVM_HOME添加至环境变量中了。
以《UVM实战》书中2.2.1的源码(详见文章开头的源码链接)为例,我的filelist.f如下:
+incdir+$UVM_HOME/src
$UVM_HOME/src/uvm_pkg.sv
/home/ICer/UVM_example/puvm/src/ch2/dut/dut.sv
top_tb.sv
# $UVM_HOME即刚刚在环境变量中指定的路径
# dut.sv是DUT
# top_tb.sv顶层testbech,由于该文件就在当前目录下,所以没有指定其路径
之后在工程目录里使用make vcs就可以编译了。
查看波形的话我用的是verdi:
make verdi
选择要查看的信号——右键——Add to Waveform——New Waveform即可将信号添加至输出波形。