UVM sequence机制(4)(response 特性)
这篇我们介绍一下sequence 机制的response 属性。
/sequence1class sequence1 extends uvm_sequence;
............................
............................virtual task body();item1 req1;item1 rsp1;repeat(10) beginreq=new("req1");start_item(req1);...............finish_item(req1)get_response(rsp);...........................................................................endendtaskendclass
/sequence1
///driver
class my_driver extends uvm_driver #(item1);.....................................................................virtual task run_phase(uvm-phase phase);............................................seq-item_port.get_next_item(req);......................................................................................................void'($cast(rsp, req.clone()));rsp.set_sequence_id(req.get_sequence_id());rsp.set_transaction_id(req.get_transaction_id());seq_item_port.item_done(rsp);endtask
endclass....................
sequence1 sequence1_object
....................................
....................................
....................................
sequence1_object.start(sequencer);
上面是一个简单代码(帮助理解使用)
首先在driver中,处理完接受到的item req之后,在调用item_done时,给了一个参数rsp。现在我们来分析一下,当item_done带参数时,会是一个什么样的效果。
当item_done(rsp)带参数数返回是,会调用seq_item_exort.put_rsponse->sequence::put_response。有意思的地方在下面
首先根据rsp的sequence_id来找到这个rsp是哪个sequence发送的(每个req item在经sequence发送的时候够会带有unique id值),这个时候sequence找到了,调用sequence的put_response方法,最终会将rsp放入在sequence里面的一个队列中,队列名字时response_queue。这个队里的深度是8,因此未来防止队列出现溢出,必须要早seqeunce一次不停的取get-response。在调用get_rsponse时,不指定transaction_id的话,默认是pop_front response_queue队列中的元素,同时get_response也可以指定要get确定transsaction_id的item,只需要参入相应的参数即可。比如
int id;req=new("req1");start_item(req1);...............finish_item(req1)id=req.get_transaction_id();get_response(rsp,id);
总结,在使用response机制的时候,在driver一侧put_response的同时,必须要在sequence一侧get_response()。这样sequence中存放rsp的队列response_queue才不会发生溢出。这个队里的大小默认是8(用户可修改)
UVM sequence机制(4)(response 特性)相关推荐
- 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 ...
- [UVM]UVM Sequence之Response的使用
UVM Sequence之Response 前言:Sequence機制提供了一種Sequence -> Sequencer -> Driver的單向數據傳輸機制.但是在複雜的驗證平台中, ...
- (16)UVM sequence和item
UVM sequence和item 文章目录 UVM sequence和item 一.概述 二.sequence item介绍 三.item使用时的特点 四.item与sequence的关系 五.fl ...
- (7)UVM objection机制
(7)UVM objection机制 objection机制 控制objection的最佳选择 UVM-1.1之后,结束仿真的机制有且只有一种,那就是利用objection挂起机制来控制仿真结束. o ...
- SQLite内部机制和新特性
SQLite内部机制和新特性 一.B-tree和Pager模块 B-tree为SQLite VDBE提供了O(logN)级时间复杂度的插入和查询,通过双向遍历记录实现O(1)级时间复杂度的删除.B-t ...
- UVM factory机制源码探微
文章目录 1. UVM factory机制的使用 2. class 在factory 中的注册过程 2.1. `uvm_component_utils() 2.1.1. m_uvm_component ...
- 【数字IC验证快速入门】36、UVM项目实践之APB_SPI(4)APB_SPI 激励(Sequencer)产生【Sequence 机制】
导读:作者有幸在中国电子信息领域的排头兵院校"电子科技大学"攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思.清华紫光.联发科技等业界顶尖集成电路相关企业面授课程, ...
- UVM——sequence item
此处sequence泛指uvm_sequence_item类,item泛指uvm_sequence_item类. sequence用来实现激励生成和场景控制:item实现对激励所需要的具体数据和控制要 ...
- UVM——sequence、sequencer、driver概述
sequence.sequencer.driver关系 三者的关系如上图所示: - sequence产生目标数量的sequence item,并通过随机化使每一个sequence item对象的数据内 ...
最新文章
- Tengine Framework基础
- JavaScript系统对象
- java 装配_java – 无法自动装配方法
- docker安装redis并设置密码
- VTK:小部件之ImageTracerWidgetInsideContour
- MySQL5.5.32编译安装
- PCB电流和线宽的关系(通俗易懂)
- angularjs 路由 传参
- Filter与Servlet的区别和联系
- linux下修改max_user_processes和open_file的最大值
- 区块链100讲:详解Po.et 技术栈
- GitHub微信防撤回项目 for Mac
- 图书信息管理系统(顺序表)
- 星星之火OIer:2019.1.5考试总结
- ffmpeg水印制作
- KeyShot 11.1 现已推出
- 钉钉企业主要功能介绍
- 自己留着用的 .net 图片水印 方法
- 网站推荐用的软文说明
- php+源码加密思想,PHP源码加密方法