default_sequence的作用?
default_sequence的作用?
1、default_sequence最大的作用就是将objection与sequence完全联系起来,先使用default sequence完成sequence的启动,然后利用uvm_sequence的成员变量starting_phase(类型为uvm_phase)来挂起与释放objection
2、简化了sequence的挂载启动(即指明sequence产生的transaction要发送给哪个sequencer)
具体而言
1)就是在某个component的build phase阶段使用config_db与default sequence替代了在某个component的main phase阶段利用seq.start(i_agt.sqr)启动sequence。
//component的build phase阶段使用default_sequence启动sequence
//default_sequence要使用config_db,而build_phase一般用于config_db配置信息及变量的实例化
virtual function void build_phase(uvm_phase phase);super.build_phase(phase);uvm_config_db# uvm_objection_wrapper) ::set(this,"i_agt.sqr.main_phase","default_sequence",my_sequence::type_id::get());endfunction
//component的main phase阶段用seq.start(i_agt.sqr)启动sequence
task my_env::main_phase(uvm_phase phase)my_sequence seq;phase.raise_objection(this);seq = my_sequence::type_id::creat("seq");seq.start(i_agt.sqr);phase.drop_objection(this)
endtask
2)使用config_db与default sequence指定sequencer启动sequence时,会将uvm_sequence的类型为uvm_phase的成员变量starting_phase赋以当前的phase。
task my_sequencer::main_phase(uvm_phase phase)...seq.starting_phase = phase;seq.start(this);...
endtask
从上可知使用default_sequence其实还是需要执行seq.start(**)(指明sequence产生的transaction要发送给哪个sequencer)但不需要用户手工定义与调用,使用default_sequence时UVM会自动调用。并且为了bjection与sequence完全联系起来,还用到了seq.starting_phase。
class my_sequence extends uvm_sequnce #(my_transcation);my_transaction m_trans;...virtual task body();if(starting_phase != null)starting_phase.raise_objection(this);//uvm_sequence的成员变量starting_phase,在sequencer的main_phase已经被赋值为main_phaserepeat (10) begin`uvm_do(m_trans)//产生且随机化并发送transationend#1000;if(starting_phase != null)starting_phase.drop_objection(this);endtask`uvm_objection_utils(my_sequence)endclass
这样就将在定义sequence类时就囊括了objection将objection与sequence完全联系
default_sequence的作用?相关推荐
- UVM实战书籍再复习
1.clone和copy clone, 1)只能用于uvm_object类型,不能用于component类型.因为一旦使用component克隆,parent参数无法指定. 2)用于分配一块内存空间 ...
- Object的finalize()方法的作用是否与C++的析构函数作用相同
Object的finalize()方法的作用是否与C++的析构函数作用相同 public class Finalization {private static Finalization finaliz ...
- 浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin
1. 变量的定义 Makefile 文件中定义变量的基本语法如下: 变量的名称=值列表 变量的名称可以由大小写字母.阿拉伯数字和下划线构成.等号左右的空白符没有明确的要求,因为在执行 make 的时候 ...
- 【B/S实践】解决:vs中修改样式表后不起作用的问题
缓存,有好多,cpu和内存之间的三级缓存,浏览器内的缓存! 缓存是因为速率不对等,通过缓存来加速内容的显示! 今天我在敲牛腩的时候遇到一个问题,找了半小时,才发现是缓存导致的问题! 试着运行aspx文 ...
- 卷积神经网络之卷积计算、作用与思想 深度学习
博客:blog.shinelee.me | 博客园 | CSDN 卷积运算与相关运算 在计算机视觉领域,卷积核.滤波器通常为较小尺寸的矩阵,比如3×33×3.从这个角度看,多层卷积是在进行逐层映射,整 ...
- 机器学习——标准化/归一化的目的、作用和场景
对每个特征进行归一化处理,使得每个特征的取值缩放到0~1之间.这样做有两个好处: 模型训练更高效. 特征前的权重大小可代表该变量对预测结果的贡献度(因为每个特征值本身的范围相同). (一)归一化的作用 ...
- Linux操作系统下文件作用
linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的 ...
- python sys.argv[] 的作用
sys.argv[]是什么 argv 是sys库里面的所以使用的 需要先引入sys (使用import sys) sys.argv[]的作用 从程序外获取参数,怎样理解呢,例如在终端中运行test脚本 ...
- C++ namespace 的作用以及使用
namespace 是什么: 命名空间(namespace)是一种描述逻辑分组的机制,可以将按某些标准在逻辑上属于同一个任务中的所有类声明放在同一个命名空间中.标准C++库(不包括标准C库)中所包含的 ...
最新文章
- 如何打造不怕被嗅探的3389登陆
- 深入理解Java虚拟机(类文件结构)
- Java多线程同步机制
- conda报错Collecting package metadata
- 有监督学习 无监督学习
- 巧妙实现表格奇偶行换色
- SWAT模型 建模方法、实例应用、高级进阶
- 利用华为手机给台式机提供网络
- android文档在线批注,文档批注
- 关于MSP430单片机程序烧写的介绍
- 大疆2019校招提前批机器学习算法工程师在线笔试题目回忆版
- 计算机视觉领域经典论文源码
- 非线性最小二乘法 python_[数值计算] 数据拟合——非线性最小二乘法
- IE、FireFox都支持的收藏本站代码
- js 实现对象转字符串
- 大数据培训课程各阶段学习内容,为什么学这些课程
- [世界概览]那些被印度人毁掉或者差一点毁掉的公司(翻译)
- windows应用小技巧
- MDM9205平台射频卡分析
- MySQL varchar(255) 和 varchar(256) 区别
热门文章
- 日常安装之 rabbitMQ ---------------摸鱼王的日常
- 微带阻抗匹配网络(一)
- flex java blazeds 注解_Flex+BlazeDS+Spring整合
- Android Open Source Projects 1
- 分享 Python 常见面试题及答案(下)
- [AHK]获取方正证券股份有限公司杭州保俶路证券营业部每日买入股票
- 华为EulerOS release 2.0(SP8)aarch64(arm架构)更新yum源操作
- 计算机一级2016版考纲j卷,2016年度计算机一级考理论题汇总(270道题目)
- 安卓手机测评_小米MIUI在安卓系统流畅度排行之末?鲁大师排行榜出炉一加成赢家...
- visio画透明虚线框