0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于base test如何来构造测试用例

lhl545545 来源:FPGA学姐 作者:FPGA学姐 2022-09-19 09:16 次阅读

在设计仿真用例时,有限制条件的激励相比漫无目的的仿真更加有效的找出RTL的bug。因此,同一份测试方案,不同的sequence往往代表着不同的test_case。真正的测试用例都是基于base_test派生的一个类。

第一,在这么多不同的case下,我们可以设置一个base_case,base_case将环境env,cfg等一些东西包进去;

第二,需要几个不同的sequence就写几个sequence,sequence之间没有联系,继承于uvm_sequence;

第三,在每个具体的执行case下,可以用asserte插入具体的配置参数,并且每个case设置自己独立的default_sequence;

第四,在终端指定不同的case_name跑不同的case;

文件:src/base_test.svclass base_test extends uvm_test;my_envenv;functionnew(stringname="base_test",uvm_componentparent=null);super.new(name,parent);endfunction
externvirtualfunctionvoidbuild_phase(uvm_phasephase);externvirtualfunctionvoidreport_phase(uvm_phasephase);`uvm_component_utils(base_test) //使用uvm_component_utils宏来注册到factory中endclass
//在build_phase中实例化my_env,并设置sequencer的default_sequence来启动my_sequencefunctionvoidbase_test::build_phase(uvm_phasephase);super.build_phase(phase);env=my_env::create("env",this);uvm_config_db#(uvm_object_wrapper)::set(this,"env.i_agt.sqr.main_phase","default_sequence",my_sequence::get());endfunction//根据UVM_ERROR的数量来打印不同的信息,一些日志分析工具functionvoidbase_test::report_phase(uvm_phasephase);uvm_report_serverserver;interr_num;super.report_phase(phase);server=get_report_server();err_num=server.get_severity_count(UVM_ERROR);if(err_num!=0)begin$display("TESTCASEFAILED");endelsebegin$display("TESTCASEPASSED");endendfunction

代码中的super.new(name,parent)是继承基类的构造函数的写法,包括下面的 super.build_phase(phase)也是继承基类的表现。

除了上述操作外,还通常在base_test中做如下事情:

第一,设置整个验证平台的超时退出时间;

第二,通过config_db设置验证平台中某些参数的值。这些根据不同的验证平台及不同的公司而不同,没有统一的答案

下面介绍基于上面定义的basetest如何来构造测试用例呢

首先构造用例case0的激励sequence

然后基于base case构造自己的case来启动自己的激励sequence

文件:src/my_case0.sv class case0_sequence extends uvm_sequence #(my_transaction); my_transaction m_trans; …virtual task body();if(starting_phase != null)starting_phase.raise_objection(this);//启动仿真repeat (10) begin `uvm_do(m_trans)//发送此transaction。 end #100; if(starting_phase != null) starting_phase.drop_objection(this);//仿真结束 endtask … endclass  class my_case0 extends base_test; function new(string name = "my_case0", uvm_component parent = null); super.new(name,parent); endfunction extern virtual function void build_phase(uvm_phase phase); `uvm_component_utils(my_case0) endclass //通过设置默认sequence来启动case0_sequence function void my_case0::build_phase(uvm_phase phase); super.build_phase(phase);uvm_config_db#(uvm_object_wrapper)::set(this,"env.i_agt.sqr.main_phase","default_sequence",case0_sequence::get());endfunction

UVM会利用UVM_TEST_NAME从命令行中寻找测试用例的名字,创建它的实例并运行

 … +UVM_TEST_NAME=my_case0
审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1611

    文章

    21393

    浏览量

    595528
  • 仿真
    +关注

    关注

    50

    文章

    3904

    浏览量

    132603
  • 终端
    +关注

    关注

    1

    文章

    1029

    浏览量

    29652

原文标题:仿真验证之base test

文章出处:【微信号:FPGA学姐,微信公众号:FPGA学姐】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于pCTL的循环优化测试用自动生成方法

    【作者】:余侠;薛云志;陶秋铭;【来源】:《小型微型计算机系统》2010年03期【摘要】:循环优化测试对保证现代编译器质量有着重要作用.传统手工构造测试用方法面临着效率低的问题,而目
    发表于 04-24 09:51

    UML状态图和Petri网络在类测试用生成的应用

    【作者】:陈志德;曾凡平;【来源】:《小型微型计算机系统》2010年03期【摘要】:分析和研究UML状态图、扩展状态机和Petri网在类测试用生成的特点,提出结合三者优势的类测试用
    发表于 04-24 09:52

    如何编写测试用

    我们如何在访问仪器库的工具中编写任何测试用。 以上来自于谷歌翻译 以下为原文how we need to write any test case in tool which access the instrument lib
    发表于 11-09 10:34

    utest 测试框架及 utest 应用介绍

    的结束条件和明确的测试结果的有限循环。utest(unit test测试框架定义用户编写的测试程序为测试用
    发表于 03-29 07:09

    测试用质量的重要性

    介绍在进行测试时,通常会花很多精力选择“正确”的测试工具。这其实只是为了实现次要目标。当然,一个适合开发环境、项目和流程的工具是重要的。然而,对于良好测试而言,最重要的是测试用
    发表于 09-02 16:44

    【OpenHarmony软总线】——告别代码,让Openharmony软总线测试用跑起来!

    test_list后面增加编译模块。进入foundation/communication/dsoftbus/tests/sdk/discovery/unittest,打开BUILD.gn这里是编译测试用
    发表于 01-10 15:40

    Openharmony 单元测试1: 测试用指导大全

    \sub_example\partB测试运行参考文档:https://gitee.com/openharmony/test_developertest这个可以参考编写单元测试用,按照
    发表于 01-14 17:35

    【OpenHarmony软总线】——告别代码,让Openharmony软总线测试用跑起来!

    test_list后面增加编译模块。进入foundation/communication/dsoftbus/tests/sdk/discovery/unittest,打开BUILD.gn这里是编译测试用
    发表于 01-26 11:53

    Openharmony 单元测试1: 测试用指导大全

    \sub_example\partB测试运行参考文档:https://gitee.com/openharmony/test_developertest这个可以参考编写单元测试用,按照
    发表于 01-26 11:53

    修改自测试用run_test遇到的问题求解

    我修改了add.S文件,想让make run_test SIM=iverilog后出现file.可是编译不了,add.S文件也没显示更新。 可是我在测试测试用的时候,make
    发表于 08-12 06:50

    LCD Test 下载 (测试软件)

    LCD Test 下载 (测试软件),一个小工具。测试方法:一运行就可以看到LCD液晶屏的整个问题。
    发表于 06-12 07:50 164次下载
    LCD <b class='flag-5'>Test</b> 下载 (<b class='flag-5'>测试</b>软件)

    Agilent N2X 1000BASE-X (GBIC)

    Agilent N2X 1000BASE-X (GBIC) XP Test Card provides Internet-scale wire-speed traffic generation
    发表于 07-25 10:33 23次下载

    数据测试:输入数据的设计方法和测试用例设计方法

    测试用例的设计是测试设计的重要内容,关于测试用例的设计方法,当前不少出版的测试书和发表的测试文章,不少存在着表述错误,主要是把
    的头像 发表于 06-29 10:22 2749次阅读

    赛灵思全新Test Drive试用体验

    支持 DRM 的 Docker 容器封装,非常安全,可提供便捷的信用卡结算。不仅结账方便,而且我们还提供几种不同的订阅计划,您可以在购买前免费评估应用。只需 3 步,即可评估、购买并部署加速应用。 全新 Test Drive 试用体验 最近,我们为最终用
    的头像 发表于 10-19 09:41 1642次阅读

    DEKRA被CSA指定为Zigbee统一测试工具开发和优化新功能和测试用

    DEKRA德凯被CSA联盟(Connectivity Standards Alliance,CSA)指定负责为Zigbee统一测试工具(Zigbee Unified Test Harness,ZUTH)开发和优化新功能和测试用
    的头像 发表于 04-09 14:10 262次阅读