这篇我们介绍一下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 特性)相关推荐

  1. 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 ...

  2. [UVM]UVM Sequence之Response的使用

    UVM Sequence之Response  前言:Sequence機制提供了一種Sequence -> Sequencer -> Driver的單向數據傳輸機制.但是在複雜的驗證平台中, ...

  3. (16)UVM sequence和item

    UVM sequence和item 文章目录 UVM sequence和item 一.概述 二.sequence item介绍 三.item使用时的特点 四.item与sequence的关系 五.fl ...

  4. (7)UVM objection机制

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

  5. SQLite内部机制和新特性

    SQLite内部机制和新特性 一.B-tree和Pager模块 B-tree为SQLite VDBE提供了O(logN)级时间复杂度的插入和查询,通过双向遍历记录实现O(1)级时间复杂度的删除.B-t ...

  6. UVM factory机制源码探微

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

  7. 【数字IC验证快速入门】36、UVM项目实践之APB_SPI(4)APB_SPI 激励(Sequencer)产生【Sequence 机制】

    导读:作者有幸在中国电子信息领域的排头兵院校"电子科技大学"攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思.清华紫光.联发科技等业界顶尖集成电路相关企业面授课程, ...

  8. UVM——sequence item

    此处sequence泛指uvm_sequence_item类,item泛指uvm_sequence_item类. sequence用来实现激励生成和场景控制:item实现对激励所需要的具体数据和控制要 ...

  9. UVM——sequence、sequencer、driver概述

    sequence.sequencer.driver关系 三者的关系如上图所示: - sequence产生目标数量的sequence item,并通过随机化使每一个sequence item对象的数据内 ...

最新文章

  1. Tengine Framework基础
  2. JavaScript系统对象
  3. java 装配_java – 无法自动装配方法
  4. docker安装redis并设置密码
  5. VTK:小部件之ImageTracerWidgetInsideContour
  6. MySQL5.5.32编译安装
  7. PCB电流和线宽的关系(通俗易懂)
  8. angularjs 路由 传参
  9. Filter与Servlet的区别和联系
  10. linux下修改max_user_processes和open_file的最大值
  11. 区块链100讲:详解Po.et 技术栈
  12. GitHub微信防撤回项目 for Mac
  13. 图书信息管理系统(顺序表)
  14. 星星之火OIer:2019.1.5考试总结
  15. ffmpeg水印制作
  16. KeyShot 11.1 现已推出
  17. 钉钉企业主要功能介绍
  18. 自己留着用的 .net 图片水印 方法
  19. 网站推荐用的软文说明
  20. php+源码加密思想,PHP源码加密方法

热门文章

  1. 传腾讯寻求增持育碧股份,目标是成为最大股东
  2. 「苹果小程序」App Clips 和微信小程序区别在哪?我们做了一次上手实操
  3. js字符串数组方法总结
  4. fastjson详解
  5. 字体转换unicode
  6. C P U的指令系统又称为什么语言,全国自考(微型计算机原理与接口技术)模拟试卷9...
  7. python爬虫学习笔记-SQL学习
  8. 2023年04月个人工作生活总结
  9. 互联网企业做手机吃“软”饭:靠应用服务谋利
  10. 局域网、以太网(标准以太网、工业以太网和实时以太网)与无线局域网