Win10+Questasim UVM验证环境Running
2019-07-31 本文已影响0人
sarai_c7eb
很多朋友已经习惯了在工作站跑VCS+UVM验证;
本文简单地介绍如何在个人PC(OS:Win10)上利用Questasim/Modelsim运行UVM环境;并且尽可能的与工作站使用UVM一致。
1. 工具准备
- 安装Questasim/Modelsim.
- 本文使用的版本为QuestaSim-64 10.4e;
- 这个版本的UVM不需要gcc编译等一堆操作,直接使用很方便;
- 下载FPGA eda编译库
- 本文附带介绍如何联合编译Altera家的FPGA IP
2. 工作目录准备
目录准备在work_space下建立3个文件夹:
folder名称 | 存放内容 |
---|---|
IP_LIB | 存放FPGA产生的IP,如RAM,ROM,FIFO,CLKCTRL等; |
RTL | 存放设计人员开发的verilog代码[1]; |
verification | 存放验证环境[2]; |
IP_LIB和RTL内直接存放着verilog文件:
PS F:\work_space\IP_LIB> ls
目录: F:\work_space\IP_LIB
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2018/12/1 21:23 5284 alt_clkctrl.v
-a---- 2019/1/6 18:16 195 alt_rom.qip
-a---- 2019/1/13 11:08 6520 alt_rom.v
-a---- 2019/1/13 18:10 17421 fontlib.hex
-a---- 2019/1/12 20:02 1429 fontlib.mif
-a---- 2018/12/1 18:29 9591 video_tram.v
PS F:\work_space\RTL> ls
目录: F:\work_space\RTL
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019/3/19 21:03 35514 video_fpga.v
verification内的组织很简单:
PS F:\work_space\verification> ls
目录: F:\work_space\verification
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/7/31 19:27 sim
d----- 2019/7/31 19:21 tb
PS F:\work_space\verification\tb> ls
目录: F:\work_space\verification\tb
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/7/31 19:21 ad_agent
d----- 2019/7/31 19:21 avl_agent
d----- 2019/7/31 19:21 avm_agent
d----- 2019/7/31 19:21 dt_agent
d----- 2019/7/31 19:21 env
d----- 2019/7/31 19:21 hdl
d----- 2019/7/31 19:21 testcase
PS F:\work_space\verification\sim> ls
目录: F:\work_space\verification\sim
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2018/12/8 10:34 1999 add_signal.do
-a---- 2018/12/5 23:43 135 clear.bat
-a---- 2019/7/31 19:25 222 dut.f
-a---- 2019/7/31 18:55 152 filelist.f
-a---- 2018/12/4 20:57 17 run.bat
-a---- 2019/7/31 18:59 1095 run.do
-a---- 2018/12/5 18:47 19 wave_open.bat
tb路径存放着验证环境和testcase,这些和在工作站操作时建立的路径一样:
- 各种agent存放在xxx_agent路径下;
- env中可以存放scb文件;
- testcase存各个testcase文件;
sim路径下是我们主要介绍的内容,所有的准备工作都围绕着run.do这个file展开,请看下一章节重点介绍:
3. 运行UVM
3.1跑一个case
在sim路径下新建run.do这个文件,其内容如下:
#testcase name
set TEST "my_case"
#name related to the the dut
set TOP "top_tb"
set DUT_LIST "dut.f"
set FILE_LIST "filelist.f"
set WAVE_TOP "sim:/top_tb/inst_video_fpga/*"
set WORK_AERA "F:/work_space/verification/sim"
#PLI for dump fsdb
set PLI ""
#the uvm
set UVM_DPI_HOME D:/questasim64_10.4e/uvm-1.1d/win64
quit -sim
cd ${WORK_AERA}
if [file exists work] {
vdel -all
}
vlib work
vlog -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF -f ${DUT_LIST} -f ${FILE_LIST}
vsim -c -novopt +notimingchecks -t 1ps ${TOP} +UVM_TESTNAME=${TEST} +UVM_VERBOSITY=UVM_FULL -voptargs=+acc \
-solvefaildebug -uvmcontrol=all -classdebug -l sim.log -pli ${PLI} \
-sv_lib ${UVM_DPI_HOME}/uvm_dpi
add log -r /*
add wave ${WAVE_TOP}
run -all
新建run.bat文件,内容如下:
vsim -do run.do
双击"run.bat"文件,将完成vlog、vsim命令,同时生成默认的wave文件:
3.2 run.do浅析
请回看3.1章代码:
- "TEST"为testcase名字
- "TOP"为testbench top层名称(/tb/hdl顶层名称)
- "dut.f"为RTL路径和IP_LIB路径所有RTL代码(前两行为调用FPGA库):
D:/intelFPGA/eda/sim_lib/altera_mf.v
D:/intelFPGA/eda/sim_lib/cycloneive_atoms.v
F:/work_space/IP_LIB/alt_clkctrl.v
F:/work_space/IP_LIB/video_tram.v
F:/work_space/IP_LIB/alt_rom.v
F:/work_space/RTL/video_fpga.v
- "filelist.f"为TB文件列表:
- 这里将top_tb之外的文件封装在一个package中,如下:
F:/work_space/verification/tb/hdl/file_package.sv
F:/work_space/verification/tb/hdl/top_tb.sv
- "PLI"如要dump fsdb则需要指定对应PLI位置,这里不需要,设置为空;
- "UVM_DPI_HOME"将questasim中对应uvm路径指定就可以(这里选择使用UVM-1.1d);
- "WAVE_TOP"可以指定dump的信号范围;
3.3 其他
当我们quit当前simulation时,波形默认保存为vsim.wlf文件;
我们可以用一个命令文件随时打开查看波形,新建wave_open.bat,其内容如下:
vsim -view vsim.wlf
双击运行wave_open.bat,结果如下:
打开保存波形
如果想要load信号,新建add_signal.do文件,其内容如下:
add wave -position insertpoint \
vsim:/top_tb/inst_video_fpga/clk_27m_i \
vsim:/top_tb/inst_video_fpga/rstn_27m_i \
vsim:/top_tb/inst_video_fpga/ad_vsync_ff1 \
vsim:/top_tb/inst_video_fpga/ad_fid_ff1 \
vsim:/top_tb/inst_video_fpga/ad_hsync_ff1 \
vsim:/top_tb/inst_video_fpga/ad_yout_ff1 \
vsim:/top_tb/inst_video_fpga/eav_tag \
vsim:/top_tb/inst_video_fpga/sav_tag \
vsim:/top_tb/inst_video_fpga/row_cnt
通过"File"-->"Load",选择"add_signal.do"将被选信号加载到波形中观察;
新建"clear.bat"文件,双击清除一次运行结果:
@echo off
echo 开始清理......
del transcript
del *.log
del *.wlf
del *.xml
rd /s /Q work
echo 清理完成......
@echo on
pause