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
    +关注

    关注

    1629

    文章

    21729

    浏览量

    603010
  • 仿真
    +关注

    关注

    50

    文章

    4070

    浏览量

    133552
  • 终端
    +关注

    关注

    1

    文章

    1128

    浏览量

    29865

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    如何编写测试用

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

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

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

    基于UML的生成场景测试用研究

    使用UML生成场景测试用,有利于测试者设计测试用。使用UML的类图、状态图和顺序图来说明DHCP实例的场景
    发表于 03-31 09:49 15次下载

    手机硬件测试用

    手机硬件测试用 1.RF 测试 2.BB测试 3.Audio 测试 4.EMC测试
    发表于 04-28 16:59 56次下载

    基于跨平台系统中测试用复用的解决方法

    在软件开发过程中,测试做为一种保障产品质量的有效手段,被越来越多的人所重视。测试通常需要依据若干已经设计好的测试用逐步展开,使用测试用
    发表于 11-14 15:55 10次下载
    基于跨平台系统中<b class='flag-5'>测试用</b><b class='flag-5'>例</b>复用的解决方法

    基于DSEA的弱变异测试用集生成方法

    为解决基于集合进化算法(SEA)的弱变异测试用集生成过程中个体规模固定和执行开销大的问题,提出一种基于动态集合进化算法( DSEA)的弱变异测试用集生成方法。以
    发表于 11-28 16:11 0次下载

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

    测试用的设计是测试设计的重要内容,关于测试用的设计方法,当前不少出版的测试书和发表的
    的头像 发表于 06-29 10:22 2924次阅读

    详谈Web测试中的界面测试用设计

    详谈Web测试中的界面测试用设计
    的头像 发表于 06-29 10:48 2116次阅读

    测试用的管理 介绍测试用的几种管理方法

    摘要 随着软件系统规模的持续增大,业务复杂度的持续增加,软件测试的复杂度也随之越来越大。而软件测试工作复杂度的直接体现,就是测试用编写、维护、执行和管理,所以编写易读、易维护和易管理
    的头像 发表于 11-26 15:13 6688次阅读
    <b class='flag-5'>测试用</b><b class='flag-5'>例</b>的管理 介绍<b class='flag-5'>测试用</b><b class='flag-5'>例</b>的几种管理方法

    测试用质量的重要性

    在进行测试时,通常会花很多精力选择“正确”的测试工具。这其实只是为了实现次要目标。当然,一个适合开发环境、项目和流程的工具是重要的。然而,对于良好测试而言,最重要的是测试用
    的头像 发表于 09-03 15:13 855次阅读
    <b class='flag-5'>测试用</b><b class='flag-5'>例</b>质量的重要性

    篇 | 单元测试用复用到集成测试?Testlet Library来助力!(上)

    作者:fox小编:吃不饱作为一名测试工程师,在做MiL测试时,编写测试用的效率影响整个测试项目的进度,如何有效提升编写
    的头像 发表于 11-04 10:14 856次阅读
    用<b class='flag-5'>例</b>篇 | 单元<b class='flag-5'>测试用</b><b class='flag-5'>例</b>复用到集成<b class='flag-5'>测试</b>?Testlet Library来助力!(上)

    磁盘eCryptfs加密测试用

    apt安装用户态工具ecryptfs-utils即可。 4.1、测试用 下图是一个脚本基础测试用。先创建test目录和文件hello,
    的头像 发表于 11-29 11:27 1194次阅读
    磁盘eCryptfs加密<b class='flag-5'>测试用</b><b class='flag-5'>例</b>

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

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

    端到端测试用怎么写

    编写端到端测试用是确保软件系统从头到尾能够正常工作的关键步骤。以下是一个详细的指南,介绍如何编写端到端测试用: 一、理解端到端测试 端到
    的头像 发表于 09-20 10:29 443次阅读