其他分享
首页 > 其他分享> > UVM Test

UVM Test

作者:互联网

UVM Test

用户自定义 test 是从uvm_test 派生的,uvm_test是从 uvm_component 继承而来的。

调用 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