uvm中sequence和virtual sequence中objection的控制
sequence中的objection的控制策略
在整颗UVM树中,树的结点很多,理论来说在任何组件中都可以控制objection。一般在sequence和virtual sequence中,也有在scoreboard和test中。
一般来说,在一个实际的验证平台中,通常会有以下两种objection的控制策略:
第一种:
在scoreboard中进行控制,但要注意当收集到指定数量的数据后,利用fork…join_any跳出循环。
第二种:
在sequence中提起sequencer的objection,当sequence完成后,再撤销此objection。
class case0_sequence extends uvm_sequence #(my_transaction);my_transaction m_trans;function new(string name= "case0_sequence");super.new(name);endfunction virtual task body();if(starting_phase != null) //starting_phase.raise_objection(this); //置起objectionrepeat (10) begin`uvm_do(m_trans)end#100;if(starting_phase != null) //starting_phase.drop_objection(this); //撤销objectionendtask`uvm_object_utils(case0_sequence)
endclass
以上两种方式在验证平台中都有应用。其中第二种用的最多,这也是UVM提倡的方式。UVM的设计哲学就是全部由sequence来控制激励的生成,因此一般情况下只在sequence中控制objection。
virtual sequence中objection的控制策略
一般来说,有三个地方可以控制objection。一是普通的sequence,二是中间层的virtual sequence,三是最顶层的virtual sequence。
一般只在最顶层的virtual sequence中控制objection。因为virtual sequence是起统一调度作用的,这种统一调度不只体现在transactio上,也应该体现在objection上。同时在仿真时,经常会出现仿真没有按照预期的结束,这样就不需要层层的查找,从而提高debug的效率。
class case0_sequence extends uvm_sequence #(my_transaction); //virtual sequencemy_transaction m_trans;function new(string name= "case0_sequence");super.new(name);endfunction virtual task body();crc_seq cseq;long_seq lseq;if(starting_phase != null) starting_phase.raise_objection(this); //raise objectionrepeat (10) begin`uvm_do(cseq)`uvm_do(lseq)end#100;if(starting_phase != null) starting_phase.drop_objection(this); //drop objectionendtask`uvm_object_utils(case0_sequence)
endclass
uvm中sequence和virtual sequence中objection的控制相关推荐
- (22)UVM 虚拟类序列(virtual sequence)
UVM 虚拟类序列(virtual sequence) 文章目录 UVM 虚拟类序列(virtual sequence) virtual sequence介绍 virtual存在对于sequence和 ...
- UVM中Virtual sequence的作用
virtual sequence是用来实现sequence之间的同步.从字面上理解,即虚拟的sequence.虚拟的意思就是它根本就不发送transaction,它只是控制其他的sequence,起统 ...
- 理解UVM中的virtual sequencer和virtual sequence
这周看了Cliff的文章<Using UVM Virtual Sequencers & Virtual Sequences>,本文相当于是一个阅读记录. 一.什么时候需要virtu ...
- UVM—virtual sequencer and virtual sequence详解
目录 1.前言 2.virtual sequencer使用环境 3. virtual sequencer 和virtual sequence的作用 4.m_sequencer与p_sequencer ...
- UVM设计模式 (七)命令模式、三种sequence启动方式、start_item/finish_item、中介模式、virtual sequence
本篇介绍UVM中的sequence,这是UVM中最基础的部分.对于前面介绍的uvm_callback, uvm_visitor等,很少被使用到或者也只有搭建平台的人会使用.不能认为平台的搭建更富有&q ...
- 【UVM基础】虚序列器与虚序列(virtual sequencer与virtual sequence)快速上手指南
文章目录 一.virtual sequence与virtual sequencer 二.virtual sequence and sequencer的产生 2.1.嵌入序列器 2.2.嵌入序列,控制序 ...
- 怎样给oracle表设置序列,Oracle的sequence序列在hibernate中的配置方法
Oracle自增序列在Hibernate中的配置方法 在很多情况下,我们使用Hibernate在已经建立好数据库的基础上.在oracle中,如果已经建立好的数据库中使用了sequence,则可以按照下 ...
- Virtual 2004中安装DOS以及实现文件共享的方法
Virtual 2004中安装DOS以及实现文件共享的方法 2010-04-08 9:18 安装目的: 为了在Windows XP 下使用过去在纯DOS下编写的程序来处理数据.因为那些程序很难或无法全 ...
- Virtual Box中Centos虚拟机设置静态IP
Virtual BOX设置 在Virtual BOX中添加一个虚拟机的网络 管理⟶主机网络管理器⟶创建仅主机网络 配置虚拟机的网卡 在需要配置的虚拟机上右键设置⟶网络 网卡一设置为网络地址转换(NAT ...
最新文章
- python如何调用文件进行换位加密_数据文件加密算法–换位加密法 | 学步园
- Django基于正则表达式的URL
- java chinapay_通过PHP/Java Bridge来实现ecshop的chinapay支付接口
- 几种流行Webservice控制框架
- webdynpro view navigation - the same as Webclient UI
- linux编译ffmpeg成so,「ffmpeg」一 mac 环境下编译ffmpeg,生成so库文件
- 《大数据》第1期“聚焦”——对大数据的再认识
- php软件开发--mysql数据库进阶
- MTK 驱动开发(43)---GPS问题分类--MTK ALPS GPS的特殊知识
- python【字符串】【转义符】【下标】【切片】【遍历】
- java中对象与字节数组相互转换
- 多线程设计模式:第二篇 - 四种基础模式
- 38. 数字在排序数组中出现的次数(C++版本)
- ssh mysql视屏_ssh+mysql实现的Java web在线订电影票系统项目源码附带视频指导教程...
- 通达信板块监控指标_通达信板块分析指标公式
- LHC或许已经首次制造出顶夸克“四胞胎”
- hiho 满减优惠(暴力)
- 手持「前症保障」的百惠保,号称最容易理赔的重疾险?
- 打不开 /dev/vmmon: 无此文件或目录。请确保已载入内核模块 ’vmmon’”。
- BAT + 程序员校招指南