UVM Test
作者:互联网
UVM Test
用户自定义 test 是从uvm_test 派生的,uvm_test是从 uvm_component 继承而来的。
- test 定义了testbench的测试场景
- test 类包含env、配置属性、类覆盖等
- 在 test 中创建并启动一个/多个 sequences
调用 run_test() 方法时会激活 UVM testbench,全局 run_test() 任务应在 initial 块内指定。
可以有许多用户定义的测试用例。在多个测试用例中,可以选择一个特定的测试用例并使用两种方法执行,
1. 通过将 test 名称指定为 run_test() 的参数;
example: run_test("mem_model_test");
2. 通过提供 UVM_TESTNAME 命令行参数
example: <SIMULATION_COMMANDS> +UVM_TESTNAME=mem_model_test
Writing Test
1. test 是通过扩展UVM_TEST来编写的
class mem_model_test extends uvm_test;
`uvm_component_utils(mem_model_test)
function new(string name = "mem_model_test",uvm_component parent=null);
super.new(name,parent);
endfunction : new
endclass : mem_model_test
2. 声明 env and sequence
mem_model_env env;
mem_sequence seq;
3. 创建 env and sequence
env = mem_model_env::type_id::create("env",this);
seq = mem_sequence::type_id::create("seq");
4. 启动 sequence
seq.start(env.mem_agnt.sequencer);
完整代码:
class mem_model_test extends uvm_test;
`uvm_component_utils(mem_model_test)
mem_model_env env;
mem_sequence seq;
function new(string name = "mem_model_test",uvm_component parent=null);
super.new(name,parent);
endfunction : new
virtual function void build_phase(uvm_phase phase);
super.build_phase(phase);
env = mem_model_env::type_id::create("env", this);
seq = mem_sequence::type_id::create("seq");
endfunction : build_phase
task run_phase(uvm_phase phase);
seq.start(env.mem_agnt.sequencer);
endtask : run_phase
endclass : mem_model_test
标签:mem,test,phase,UVM,env,Test,model,uvm 来源: https://www.cnblogs.com/fuqiangblog/p/16684675.html