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

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

3天内不再提示

UVM里的phase机制

倩倩 来源:FPGA学姐 作者:FPGA学姐 2022-09-05 15:34 次阅读

UVM中的phase,按照其是否消耗仿真时间($time打印出的时间)的特性,可以分成两大类,一类是function phase,一类是task phase。就像task和function一样,task phase消耗仿真时间。

如图所示灰色的phase是task phase其他均为function phase

115e450e-2c63-11ed-ba43-dac502259ad0.png

上述所有的phase都会按照图中的顺序自上而下自动执行。使用频率最高的是build_phase、connect_phase和main_phase

  • 对于function phase来说,在同一时间只有一个phase在执行;但是task phase中,run_phase和pre_reset_phase等12个小的phase并行运行。后者称为动态运行(run-time)的phase。

  • run phase可以和其他12个小phase 的关系是可以在run phase里执行12个小phase的功能,也可以在12个小phase中分步进行。run phase和其他12个phse是一个并行关系,而12个phase是顺序执行的。

对于task phase,从全局的观点来看其顺序大致如下


fork begin  run_phase();  end  begin      pre_reset_phase();    reset_phase();  post_reset_phase();pre_configure_phase();configure_phase();post_configure_phase();pre_main_phase();main_phase();post_main_phase();pre_shutdown_phase();shutdown_phase();post_shutdown_phase();endjoin

  • 12个小phase存在意义:分成小的phase是为了实现更加精细化的控制。reset、configure、main、shutdown四个phase是核心,这四个phase通常模拟DUT的正常工作方式,在reset_phase对DUT进行复位、初始化等操作,在configure_phase则进行DUT的配置,DUT的运行主要在main_phase完成,shutdown_phase则是做一些与DUT断电相关的操作。

假设要在运行过程中对DUT进行一次复位(reset)操作,在没有这些细分 的phase之前,这种操作要在scoreboard、reference model等加入一些额 外的代码来保证验证平台不会出错。但是有了这些小的phase之后,那么只 要通过phase的跳转,就会自动跳转回reset_phase。

  • bulid phase的执行顺序是自上而下,即先执行test case的bulid phase然后执行env,在执行monitor和driver的build phase,而同级的monitor和driver的build phase执行顺序是按照字典序的,这里的字典序的排序依据new时指定的名字。

UVM的uvm_component及其派生类变量的实例化在build_phase中做实 例化工作,如果是uvm_object的实例化,可以是任何的phase。

  • 除了build_phase之外,所有不耗费仿真时间的phase(即function phase)都是自下而上执行的。connect phase执行顺序是自下而上的,如对于connect_phase即先执行driver和monitor的connect_phase,再执行agent的connect_phase。

  • 无论是自上而下(build_phase)还是自下而上(connect_phase)的phase,其执行顺序都与实例化的顺序无关,而是严格按照实例化时指定名字的字典序

审核编辑 :李倩


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

    关注

    0

    文章

    181

    浏览量

    18965
  • PHASE
    +关注

    关注

    0

    文章

    9

    浏览量

    10787

原文标题:UVM里的phase机制

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

收藏 人收藏

    评论

    相关推荐

    UVM手把手教程系列(二)Phase机制简单介绍

    UVM中的phase,按照其是否消耗仿真时间($time打印出的时间)的特性,可以分成两大类
    的头像 发表于 02-29 09:26 461次阅读
    <b class='flag-5'>UVM</b>手把手教程系列(二)<b class='flag-5'>Phase</b><b class='flag-5'>机制</b>简单介绍

    UVM环境的看门狗怎么没看住超时了?

    uvm验证环境里一般通过objection机制来控制仿真的结束,不过在机制之外,有时还需要通过看门狗来watchdog避免仿真环境挂死,watchdog配合objection一起来控制仿真的进行与结束。
    的头像 发表于 12-04 11:42 499次阅读

    我的第一个UVM代码——Hello world

    Ctrl-V!) 几点说明: 为了使用UVM库里的函数和宏定义,需要先import uvm_pkg和include uvm_macros。 在testbench的顶层(module tb)
    发表于 11-03 10:18

    UVM设计中的sequence启动方式有哪几种呢?

    本篇介绍UVM中的sequence,这是UVM中最基础的部分。对于前面介绍的uvm_callback, uvm_visitor等,很少被使用到或者也只有搭建平台的人会使用。
    的头像 发表于 08-17 10:07 1527次阅读
    <b class='flag-5'>UVM</b>设计中的sequence启动方式有哪几种呢?

    一文详解UVM设计模式

    本篇是对UVM设计模式 ( 二 ) 参数化类、静态变量/方法/类、单例模式、UVM_ROOT、工厂模式、UVM_FACTORY[1]中单例模式的补充,分析静态类的使用,UVM中资源池的
    的头像 发表于 08-06 10:38 903次阅读
    一文详解<b class='flag-5'>UVM</b>设计模式

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVM中的uvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-29 16:57 616次阅读

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVM中的uvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-20 17:28 798次阅读

    管理test case结束机制介绍

    UVM中每个phase都有一个内置的objection ,为components和objects提供了同步方法,指示何时可以安全地结束这个phase, 最终结束整个test case。
    的头像 发表于 06-11 09:35 349次阅读

    聊一聊所谓的Objection机制

    Objection是UVM框架中用来同步不同组件的相同phase,以及决定当前测试用例什么时候结束(end-of-test)的机制,这也是用户在拿到UVM之后最直白的使用场景。
    的头像 发表于 06-09 11:16 1097次阅读
    聊一聊所谓的Objection<b class='flag-5'>机制</b>

    UVM中的uvm_do宏简析

    uvm_do宏及其变体提供了创建、随机化和发送transaction items或者sequence的方法。
    的头像 发表于 06-09 09:36 2919次阅读
    <b class='flag-5'>UVM</b>中的<b class='flag-5'>uvm</b>_do宏简析

    UVM里的6个常见参数介绍分析

    UVM预先定义了六个详细程度; UVM_NONE到UVM_DEBUG。这些级别只不过是整数枚举值
    的头像 发表于 06-06 12:33 2828次阅读
    <b class='flag-5'>UVM</b>里的6个常见参数介绍分析

    UVM中sequence的那些事儿

    将 生成测试case的语句 从 main_phase 中独立出来,使得使用不同测试用例时,只需要修改sequence部分即可,而不用关注 UVM剩余部分。
    的头像 发表于 05-26 15:17 657次阅读
    <b class='flag-5'>UVM</b>中sequence的那些事儿

    UVMphase的执行顺序

    代码的书写顺序会影响代码的实现(代码之间存在依赖关系,如代码B依赖于代码A),所以区分出build_phase、connect_phase
    的头像 发表于 05-26 15:00 580次阅读
    <b class='flag-5'>UVM</b>中<b class='flag-5'>phase</b>的执行顺序

    UVM学习笔记(一)

    driver应该派生自uvm_driver,而uvm_driver派生自uvm_component。
    的头像 发表于 05-26 14:38 885次阅读
    <b class='flag-5'>UVM</b>学习笔记(一)

    UVM response_handler和get_response机制

    很多UVM用户平时更多的使用get_response()方式去获得uvm_driver的response,但get_response有些缺点
    的头像 发表于 05-23 16:56 697次阅读
    <b class='flag-5'>UVM</b> response_handler和get_response<b class='flag-5'>机制</b>