Win10+Questasim UVM驗證環(huán)境Running

很多朋友已經(jīng)習慣了在工作站跑VCS+UVM驗證;
本文簡單地介紹如何在個人PC(OS:Win10)上利用Questasim/Modelsim運行UVM環(huán)境;并且盡可能的與工作站使用UVM一致。

1. 工具準備

  • 安裝Questasim/Modelsim.
    • 本文使用的版本為QuestaSim-64 10.4e;
    • 這個版本的UVM不需要gcc編譯等一堆操作,直接使用很方便;
  • 下載FPGA eda編譯庫
    • 本文附帶介紹如何聯(lián)合編譯Altera家的FPGA IP

2. 工作目錄準備

目錄準備

在work_space下建立3個文件夾:

folder名稱 存放內容
IP_LIB 存放FPGA產(chǎn)生的IP,如RAM,ROM,F(xiàn)IFO,CLKCTRL等;
RTL 存放設計人員開發(fā)的verilog代碼[1];
verification 存放驗證環(huán)境[2];

IP_LIBRTL內直接存放著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路徑存放著驗證環(huán)境和testcase,這些和在工作站操作時建立的路徑一樣:

  • 各種agent存放在xxx_agent路徑下;
  • env中可以存放scb文件;
  • testcase存各個testcase文件;

sim路徑下是我們主要介紹的內容,所有的準備工作都圍繞著run.do這個file展開,請看下一章節(jié)重點介紹:

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

  1. 本文只支持verilog做為RTL開發(fā)語言,不支持VHDL; ?

  2. 本文只支持systemverlog做為驗證開發(fā)語言; ?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容