UVM学习(1)uvm_test
这个例子主要是在平台中使用run_test启动uvm_test
uvm_test.sv如下:
package test_package;
import uvm_pkg::*;
`include "uvm_macros.svh"
class test_base extends uvm_test;
`uvm_component_utils(test_base)
function new(string name="test_base",uvm_component parent=null );
super.new(name,parent);
endfunction
endclass
endpackage
module uvm_test;
import uvm_pkg::*;
`include "uvm_macros.svh"
import test_package::*;
initial begin
int a;
`uvm_info("UVM_TOP", "test started", UVM_LOW)
run_test("test_base");
`uvm_info("UVM_TOP", "test finished", UVM_LOW)
end
endmodule
需要注意的是,最后一行的打印是无法执行的,因为平台在执行完test_base后就退出了。
UVM也提供对不加参数的run_test的支持,在这种情况下,UVM会利用UVM_TESTNAME从命令行中寻找测试用例的名字,创建它的实例并运行,代码如下:
uvm_test.sv
package test_package;
import uvm_pkg::*;
`include "uvm_macros.svh"
class test_base extends uvm_test;
`uvm_component_utils(test_base)
function new(string name="test_base",uvm_component parent=null );
super.new(name,parent);
endfunction
endclass
endpackage
module uvm_test;
import uvm_pkg::*;
`include "uvm_macros.svh"
import test_package::*;
initial begin
int a;
`uvm_info("UVM_TOP", "test started", UVM_LOW)
run_test();
`uvm_info("UVM_TOP", "test finished", UVM_LOW)
end
endmodule
sim.do如下:
stasim64_2020.1/uvm-1.1c/win64
vlib work
vlog +incdir+D:/uvm1.1/1800.2-2017-1.1/src -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF +incdir + D:/questasim64_2020.1/examples/lab1_uvm_test/uvm_test.sv
vsim -sv_lib $UVM_DPI_HOME/uvm_dpi work.uvm_test +UVM_VERBOSITY=UVM_HIGH+UVM_TESTNAME=test_base