标签:mem test phase UVM env Test model uvm
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。