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

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

3天内不再提示

UVM中phase的执行顺序

冬至子 来源:多读点书 作者:夕文x 2023-05-26 15:00 次阅读

1 UVM中引入phase的原因

代码的书写顺序会影响代码的实现(代码之间存在依赖关系,如代码B依赖于代码A),所以区分出build_phase、connect_phase等,让被依赖的phase(代码A)先执行,依赖的phase(代码B)后执行,这样可以解决因代码顺序杂乱可能会引发的问题。

2 UVM中phase的执行顺序

图片

  1. 按上图所示顺序自上而下执行不同phase,且同类phase执行完后, 需要进行等待同步 ,然后才能执行下一类phase。而同类phase中不同component在UVM树种执行顺序如下:
    1. build_phase:在UVM树中依据自上而下的顺序启动,顺序运行
    2. 除了build_phase之外的function phase:在UVM树中依据自下而上的顺序启动,顺序运行
    3. task_phase:在UVM树中依据 自下而上的顺序启动,同时运行 (通过fork...join_none多线程方式)
    4. 直系关系的component
    5. 兄弟关系的component:在UVM树中依据字典序
    6. 叔侄关系的component:在UVM树中依据深度优先(即优先侄component执行)

3 UVM中引入objection的原因

上文提到代码会依据不同phase的顺序自上而下执行,且同类phase执行完后, 需要进行等待同步 。而引入objection就是为了更好的控制同类phase中执行代码的同步用的。

4 UVM中引入domain的原因

体现不同component的独立性。例如,把两个时钟域隔开, 这样两个时钟域内的各个动态运行( run_time) 的phase就可以不必同步了。使用该机制可以搭建多时钟域DUT的UVM仿真平台。

注意:domain 只能隔离run-time的phase , 对于其他phase, 其实还是同步的, 即两个domain的run_phase依然是同步的, 其他的function phase也是同步的。

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

    关注

    0

    文章

    181

    浏览量

    19121
  • 时钟域
    +关注

    关注

    0

    文章

    51

    浏览量

    9524
  • DUT
    DUT
    +关注

    关注

    0

    文章

    189

    浏览量

    12307
收藏 人收藏

    评论

    相关推荐

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

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

    IC验证"UVM验证平台加入factory机制"(六)

    平台,因为UVM的特性几乎一 点都没有用到。像上节my_driver的实例化及drv.main_phase的显式调用,即使不使用UVM,只使用简单的SystemVerilog也可以完
    发表于 12-08 12:07

    IC验证“UVM验证平台加入objection机制和virtual interface机制“(七)

    输出。而main_phase是一个完整的任务,没有理由 只执行第一句,而后面的代码不执行。看上去似乎main_phase执行的过程中被外力
    发表于 12-09 18:28

    数字IC验证之“什么是UVM”“UVM的特点”“UVM提供哪些资源”(2)连载...

    工程师只需要将代码写入适当的phase当中,平台运行时,会按照phase执行流程来自动执行验证工程师的代码。uvm提供了一系列的基类,验证
    发表于 01-21 16:00

    什么是uvmuvm的特点有哪些呢

    直观的印象,就是uvm验证平台,它是分层的结构。图中的每一个巨型框都代表着平台的一个构成元素。这些元素呢,我们称为平台组建,下面来简单的分析一下。从最底层上来看,agent 包含了driver,monitor和sequencer,其中driver ,monitor
    发表于 02-14 06:46

    谈谈UVMuvm_info打印

    \_file, \`uvm\_line)。当uvm\_report\_enabled(xxx)函数返回为1时,才会执行uvm\_report\_info(xxx)。  参数和变量分析:
    发表于 03-17 16:41

    UVMseq.start()和default_sequence执行顺序

    :seq2会先启动。也就是说进入run_phase之后,会先执行seq2的body()内容,等退出seq2之后,再执行seq1的body()内容,串行执行的。  2. 原理  可以打开
    发表于 04-04 17:15

    UVM验证平台执行硬件加速

    。 本文所聚焦的技术手段是让一个已有的UVM验证平台通过改变需求去执行硬件加速。如果这些点在UVM环境开发过程中被考虑到,那么之后将环境迁移到硬件加速器作为一个性能选项将是一件较容易的事情。本文所提议的建议将会使你的
    发表于 09-15 17:08 14次下载
    <b class='flag-5'>UVM</b>验证平台<b class='flag-5'>执行</b>硬件加速

    Modelsim uvm库编译及执行

    第一句话是设置uvm环境变量,指定uvm的dpi位置。 第二句话是创建work工作目录。 第三句话是编译源文件,并且通过-L指定几个编译库。 第三句是执行仿真,调用uvm
    的头像 发表于 12-01 11:25 3804次阅读
    Modelsim <b class='flag-5'>uvm</b>库编译及<b class='flag-5'>执行</b>

    如何通过explain来验证sql的执行顺序

    by 先执行,到底它俩谁先执行呢? 今天我们通过 explain 来验证下 sql 的执行顺序。 在验证之前,先说结论,Hive sq
    的头像 发表于 09-07 16:24 2608次阅读
    如何通过explain来验证sql的<b class='flag-5'>执行</b><b class='flag-5'>顺序</b>

    UVM里的phase机制

    run phase可以和其他12个小phase 的关系是可以在run phase执行12个小phase的功能,也可以在12个小
    的头像 发表于 09-05 15:34 3484次阅读

    UVMsequence的那些事儿

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

    UVMuvm_config_db机制背后的大功臣

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

    UVMuvm_config_db机制背后的大功臣

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

    sql where条件的执行顺序

    。 在深入讨论WHERE条件的执行顺序之前,先回顾一下一般SQL语句的执行顺序。一条SQL语句的执行通常可以分为以下几个步骤:解析器分析语法
    的头像 发表于 11-23 11:31 2110次阅读