objection与task phase

object字面意思是“反对”,通过drop来通知系统关闭验证平台,drop之前一定要先raise。

代码一:

task main_phase(uvm_phase phase);phase.raise_objection(this);
......phase.drop_objection(this);
endtask

当一个phase中所有objection都已经撤销后,就会关闭此phase进入下一个phase,当所有phase执行完毕后,就会调用$finish来将整个验证平台关掉。

代码二:

task driver::main_phase(uvm_phase phase); phase.raise_objection(this); #100; phase.drop_objection(this);
endtask
task monitor::main_phase(uvm_phase phase); while(1) begin
...... end
endtask

如果main_phase中没有raise和drop,即没有任何objection被提起,那么他会直接跳转到post_main_phase,此时假设进入main_phase的时刻为0,那么进入post_main_phase的时刻也是0。如果想要执行一些耗费时间的代码,那么要在此phase下任意一个component中至少提起一次objection。

以上结论只适用于12个run-time的phase,不适用于run_phase。run_phase与动态运行的phase是并行运行的,如果12个动态运行的phase中有objection被提起,那么run_phase根本不需要raise_objection就可以自动执行。

图1形象地展示了component与phase之间的关系,这里不再赘述。

图1 component与phase


参数phase的必要性

Phase的引入是为了解决何时结束仿真的问题,它更多面向main_phase等task phase,而不是面向function phase,因此一般不用于function phase中。


控制objection的最佳选择

在UVM树的什么位置控制objection比较合适呢?

尽量不要在driver和monitor中raise和drop:因为driver和monitor中通常是一个while(1)无限循环的代码,在while循环的end后面drop将永远不会被执行到。

通常会在以下两种objection的控制策略中选择一种:

1、在scb中控制,scb中的main_phase假如是一个无限循环,则通过config_db::set方式设置收集到的transaction的数量pkt_num,当收集到足够数量后跳出循环。

2、用得最多的一种:在seq中提起objection,完成后撤销。UVM的思想就是全部由seq来控制激励的生成,因此一般只在seq中控制objection。


set_drain_time的使用

0时刻DUT开始接收输入,直到p时刻才有数据输出,若n时刻发送完毕最后一个transaction立刻drop,那么在n+p时刻DUT输出的包将无法接收到。因此sequence中,最后一个包发送完毕后要延时p才能drop。延时对所有seq都是必须的,如果在每个seq中都这样延时,显然是不合理的。

UVM为所有的objection设置了drain_time属性:

task base_test::main_phase(uvm_phase phase);phase.phase_done.set_drain_time(this,200);
endtask

phase_done是uvm_phase内部定义的成员变量:

//UVM源代码
uvm_objection phase_done;//phase done objection

当调用phase.raise_objection或者phase.drop_objection时,其实质是调用phase_done的raise和drop,接下来当所有objection被撤销后,检查有没有设置drain_time,若没有设置,则马上进入到post_main_phase。如果post_main_phase及后面都没有及其objection,则最终前进到final_phase,结束仿真。

UVM-Objection机制相关推荐

  1. (7)UVM objection机制

    (7)UVM objection机制 objection机制 控制objection的最佳选择 UVM-1.1之后,结束仿真的机制有且只有一种,那就是利用objection挂起机制来控制仿真结束. o ...

  2. UVM objection机制

    objection的raise和drop主要用于引入结束仿真的问题.通常用于需要消耗时间的task中. 当所有组件的run_phase的objection全部drop下后,run_phase才会结束. ...

  3. UVM的objection机制

    UVM通过objection机制来控制验证平台的关闭.在每个phase中,UVM会检查是否有objection被提起(raise_objection),如果有,那么等待这个objection被撤销(d ...

  4. UVM中objection机制学习

    文章目录 objection机制介绍 objection使用注意点 代码实例 objection机制介绍 在UVM中可以通过drop_objection来通知系统可以关闭验证平台,且在drop_obj ...

  5. UVM factory机制源码探微

    文章目录 1. UVM factory机制的使用 2. class 在factory 中的注册过程 2.1. `uvm_component_utils() 2.1.1. m_uvm_component ...

  6. UVM config_db机制源码探微

    文章目录 1. uvm_config_db 基础 1.1. 简单set 1.2. 多重set 2. uvm_resource 2.1. uvm_resource_base 2.2. uvm_resou ...

  7. 【UVM实战】第五章:UVM验证平台的运行(2)objection机制

    文章目录 5.2.1.objection与task phase 5.2.2.参数phase的必要性 5.2.3.控制objection的最佳选择 5.2.4.set_drain_time的使用 5.2 ...

  8. UVM phase机制(一)

    UVM的执行严格按照phase机制在执行的,顺序是: ->build_phase ->connect_phase ->end_of_elaboration_phase ->st ...

  9. 02、UVM工厂机制

    一.工厂机制的意义 工厂机制也是软件的一种典型设计模式,UVM工厂的存在就是为了更方便地替换验证环境中的实例或者注册了的类型,同时工厂的注册机制也带来了配置的灵活性. 这里的实例或者类型替代,在UVM ...

  10. (3)UVM 工厂机制

    工厂机制 文章目录 工厂机制 一.工厂的意义 二.工厂机制 三.构建函数new 四.uvm_coreservice_t类 关注作者 工厂(factor)机制是UVM的真正魅力所在.工厂机制也是软件的一 ...

最新文章

  1. mysql 基于gtid复制_深入MySQL复制(二):基于GTID复制
  2. Linux下安装和使用boost库
  3. __init__在python中的用法知乎_python使用selenium爬虫知乎的方法示例
  4. Android UI事件处理
  5. Thymeleaf的Spring数据
  6. 原理 msc_计算机网络原理梳理丨无线与移动网络
  7. 关于SQLite.org网站给黑...
  8. 《学习javascript数据结构与算法》——第六章:集合
  9. WPF 自定义BarChartControl(可左右滑动的柱状图)
  10. ios 简单的计时器游戏 NSUserDefaults NSDate NSTimer
  11. 【FFMEPG】windows下编译ffmpeg2.5——使用VS2013,ARMLINUX,ANDORID编译ffmpeg
  12. 金山词霸只能最大或最小化问题的解决
  13. 资源 就是Tianmao项目里小部分备用 测试 的数据以及图片
  14. mac 文档 只读修改
  15. U盘打不开的常见情况和解决方法
  16. 哪种计算机支持刻录功能,哪种软件更适合刻录CD |用flac刻录CD的方法
  17. 前端学习笔记 HTML5 保姆级教程
  18. FUHLEN/富勒 U79/U79G节能系列/U系列无线2.4G接收器-淘宝网
  19. 前端基础-TCP/IP 不完全详解
  20. 睡眠键重启计算机,Windows10进入睡眠模式后按任意键会自动重启怎么办

热门文章

  1. 云灾备方案,让企业无忧数据灾难
  2. 软件测试等价类整体划分,软件测试:等价类划分法
  3. 微信公众号之模板消息跳转小程序
  4. Qt实现探测当前有没有网络连接(Wi-Fi)
  5. GF1、2、6数据(批量)处理提速——RSD 3.0.5
  6. 爬虫怎么解决封IP?
  7. 方法版的万年历(1900年1月1日到输入的年和月)
  8. DOTA-PEG-麦芽糖 maltose-DOTA 麦芽糖-四氮杂环十二烷四乙酸
  9. 使用requests、BeautifulSoup、线程池爬取艺龙酒店信息并保存到Excel中
  10. 外贸制单管理软件丨汇信外贸软件