UVM中base_test的作用

base_test所做的事情因公司而异,常见的使用如下:

(1) 实例化top-level env(top_tb主要的作用是实例化平台和设计,就是把他俩包起来

,若没有base_tb顶层的env就没有例化);

(2) 通过config_db设置验证平台中某些参数的值,或使用factory override机制配置环境;

(3) 通过调用UVM sequences施加激励;

(4) 在report_phase根据UVM_ERROR的数量打印不同信息;

注1:注意uvm_report_server的使用;

(5) 设置整个验证平台的超时退出时间;

通常,只有一个uvm_base_test,在其中实现env以及其他组件的例化; 其他tests均派生于base_test;

class base_test extends uvm_test;
    my_env env;

    function new(string name="base_test", uvm_component parent=null);
        super.new(name,parent);
    endfunction

    extern virtual function void build_phase(uvm_phase phase);
    extern virtual function void report_phase(uvm_phase phase);

endclass

function void base_test::build_phase(uvm_phase phase);
    super.build_phase(phase);
    env=my_env::type_id::create("env",this);         //实例化env
    uvm_config_db#uvm_object_wrapper)::set(this,"env.i_agt.sqr.main_phase","default_sequence",my_sequence::type_id::get());                       // 启动sequence
endfunction

function void base_test::report_phase(uvm_phase phase);  //report_phase根据错误打印消息
    uvm_report_server server;
    int err_num;
    super.report_phase(phase);

    server=get_report_server(); //uvm_report_server srvr; srvr=uvm_report_server::get_server();
    err_num=server.get_severity_count(UVM_ERROR);

    if(err_num!=0) begin       //通常不这么使用,而是使用UVM_MAX_QUIT_COUNT,一旦由多少个错误,就退出仿真;
        $display("TEST CASE FAILED!");
    end
    else begin
        $display("TEST CASE PASSED!");
    end

endfunction
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值