UVM with Modelsim WORK FLOW basic
目標:對UVM實戰(zhàn)一書中2.5.2用例進行基本的命令行流程操作跑通。
代碼文件自張強書的example_and_uvm_source_code\puvm\puvm\src\ch2\section2.5\2.5.2
“在用的時候,記得將dut.sv和其他組件代碼放在同一個文件夾下,modelsim工程最好也建在這個文件夾下”(modelsim建立工程時的work文件夾與上述代碼組件保持一致)

注意,張強書中代碼并無dut.sv文件,可根據(jù)書本手動輸入,也可復制以下:
使用命令行形式在工程中完成UVM庫下的仿真:
第一句:將庫文件編譯到work目錄中
vlib work
此指令執(zhí)行時是在Library區(qū)域中創(chuàng)建一個工程目錄,一般默認有work,故輸入vlib work時可能會有:

若設置自定義名稱的工程目錄,例如work_test,則會有:

且Library中出現(xiàn)相應:

第二句:設置環(huán)境變量
UVM目錄,這個目錄是modelsim安裝的文件目錄,比如你的modelsim安裝在D:/modeltech64,這個就是:
set UVM_HOME?D:/modeltech64/verilog_src/uvm-1.1d
此處我的安裝包下是:D:\modeltech64_2019.2\verilog_src\uvm-1.1d
故指令:set?UVM_HOME?D:/modeltech64_2019.2/verilog_src/uvm-1.1d
注意反斜線改變了!

第三句:設置工作目錄,指的是工程文件的目錄
就是你的dut.sv和top_tb.sv放在哪里了。
set WORK_HOME E:/KTRTL\/VM_LEARN2

注意,有的modelsim可能有如下截圖問題!

此時按上圖所示將反斜線去掉,以“:”作為分割即可!

注意可看到在vlib句中,本工程所在目錄下同樣創(chuàng)建了work_test。
第四句:啟動編譯
vlog +incdir+$UVM_HOME/src?
?-L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF
$UVM_HOME/src/uvm_pkg.sv? $WORK_HOME/dut.sv top_tb.sv
注意以上三行指令是一行,空格隔開
如:
“如果前面兩句都對了,這個肯定也是可以的,如果這里提示file can not ……in read mode
那么一般是文件路徑錯了,再細心檢查一下。”
第四句:啟動仿真
vsim -novopt ?-c -sv_lib
D:/modeltech64_10.4/uvm-1.1d/win64/uvm_dpi
work.top_tb +UVM_TESTNAME=my_case0
注意以上三行指令是一行,空格隔開
如:
其中注意,-novopt是舊版本modelsim選項,在2019.2(筆者)附近及以后新版中會報錯:vlog-12110,刪去即可。
繼續(xù)注意:uvm_dpi處是dpi庫,在一般安裝目錄下

將指令的目錄地址改成自己的就可以,直到../uvm_dpi.dll,注意把".dll"刪去。
摘錄注意1:每步指令一行寫完,不可換行輸入;
摘錄注意2:
如果,在你的top_tb.sv中, 寫的是
run_test(“my_case0”);
這樣的句子,那么最后一句使用
vsim -novopt -c -sv_lib
D:/modeltech64_10.4/uvm-1.1d/win64/uvm_dpi? work.top_tb
這樣命令行就可以進入仿真。
但是如果是用
run_test();
這樣的句子,需要修改進入仿真的語句。
原語句:
vsim -novopt -c -sv_lib
D:/modeltech64_10.4/uvm-1.1d/win64/uvm_dpi? work.top_tb
改成:
vsim -novopt ?-c -sv_lib
D:/modeltech64_10.4/uvm-1.1d/win64/uvm_dpi
work.top_tb +UVM_TESTNAME=my_case0
這里是只有一個case0的情況,如果有另外一個case文件,文件名是my_case1,則將最后的名字改為my_case1即可,張強這里的例子應該是后者。
注:有人說這里run_test();可能是不對的,可以改成run_test(“”);試試,我這里run_test();是可以的。
參考連接: