UVM Sequence之Response

 前言:Sequence機制提供了一種Sequence -> Sequencer -> Driver的單向數據傳輸機制。但是在複雜的驗證平台中,Sequence需要根據Driver對Transaction的反應來決定接下來需要發送的Transaction,換言之,Sequence需要得到Driver的一個反饋。Sequence機制提供了對這種反饋的支持,它允許Driver將一個Response返回給Sequence。本文將介紹這種方法。

Sequence的這種機制主要是應用於Outstanding的場景,例如AXI BUS的Read操作,當R Channel拿到數據的時候,put_response,用於標記讀操作的完成。

一、在Sequence(Master)中調用get_response()任務

class axi_vip_test_mst_seq extends uvm_sequence #(axi_transaction);int            seq_cnt = 0;virtual task pre_body();super.pre_body();use_response_handler(1);endtaskvirtual task body();super.body();forkfor(int i = 0; i < num_txn; i++) begin `uvm_do_with(req, {req.lock == axi_master_txn::NORMAL;})seq_cnt += 1;get_response(rsp);endjoin_nonewait(seq_cnt == 0);endtaskvirtual function void response_handler(uvm_sequence_item response);seq_cnt -= 1;endfunctionendclass

二、在Driver中調用put_response()任務

task my_driver::get_seq_item(uvm_pahse phase);my_transaction            tr;forever beginseq_item_port.get_next_item(req);phase.raise_objection(this);$cast(tr, req.clone());tr.set_id_info(req);send(tr);seq_item_port.put_response(tr);seq_item_port.item_done();   phase_drop_objection(this); end
endtask

三、非阻塞的Response方法 --- use_response_handler

  1. 首先需要在pre_body中調用use_response_handler(1);打開該功能
  2. 其次需要Override respon_handler()這個function,一般地是在這個function中做一個Counter,當get到item之後,系統會自動調用response_handler()這個function,Counter用於控制Sequence的結束。
  3. 當調用put_response的時候,response_handcler()會被自動執行,這種做法可以避免發包和get response在同一個進程中發包被阻塞的問題。
class axi_vip_test_mst_seq extends uvm_sequence #(axi_transaction);virtual task pre_body();super.pre_body();use_response_handler(1);endtaskvirtual function void response_handler(uvm_sequence_item response);if(!$cast(rsp, response)) begin`uvm_error(get_full_name(), "[SEQ]Can't case!")end else begin`uvm_info("SEQ", $sformatf("get one response: %s", rep.sprint()), UVM_MEDIUM)endendfunctionvirtual task body();super.body();if(starting_phase != null) starting_phase.raise_objection(this);report(10) begin`uvm_do(m_tr);end  #100ns;if(starting_phase != null) starting_phase.drop_objection(this);endtaskendclass

[UVM]UVM Sequence之Response的使用相关推荐

  1. UVM layering sequence for layered protocol

    在OSI(Open System Interconnect )模型中,将网络结构分为7层,自上而下:应用层,表示层,会话层,传输层,网络层,链路层,物理层.每层都有相应的协议和对应的数据结构. IC中 ...

  2. UVM基础-Sequence、Sequencer(一)

    目录 Sequence.Sequencer.Driver大局观 Sequence和item item与sequence的关系 flat sequence hierarchical sequence s ...

  3. UVM基础-Sequence、Sequencer(二)

    目录 sequence和sequencer 将sequence挂载到sequencer 将item挂载到sequencer 宏定义使用实例 sequencer仲裁特性 实例 sequencer的锁定机 ...

  4. uvm中sequence和virtual sequence中objection的控制

    sequence中的objection的控制策略 在整颗UVM树中,树的结点很多,理论来说在任何组件中都可以控制objection.一般在sequence和virtual sequence中,也有在s ...

  5. 如何在UVM的sequence中控制objection

    文章目录 前言 一.Objections can be raised/dropped in sequence 总结 前言 在张强的<UVM实战>的5.2.3节中提到,控制objection ...

  6. [UVM] kill sequence

    默认条件下,stop_sequence 会递归kill 掉子sequence,前提是已经建立了父子关系. 如何建立sequence的父子关系呢? 1. 使用uvm_do/uvm_do_on启动sequ ...

  7. 【UVM】sequence 的启动方式

    该篇文章描述不清楚的地方建议参考:UVM设计模式 (七)命令模式.三种sequence启动方式.start_item/finish_item.中介模式.virtual sequence_Holden_ ...

  8. [UVM]UVM TLM1.0 Interface归纳总结 --- 图解UVM TLM1.0 Interface

    UVM TLM1.0 Interface归纳总结 --- 图解UVM TLM1.0 Interface Transaction-Level Modeling (TLM) 用户模块之间的通信. 是实现基 ...

  9. [UVM]UVM Component之Subscriber

    UVM Component之Subscriber 一.Subscriber是用來收Coverage的,下面是一種推薦的寫法: class uvm_ip_subscriber extends uvm_s ...

最新文章

  1. C++动态链接库dll及静态链接库lib制作及使用教程
  2. [置顶]       安全-用户身份验证
  3. 讨论SELinux对系统安全的影响(转)
  4. 手把手指导centos7中安装python3
  5. linux关于文件夹的知识,Ubuntu 7.10 系统文件夹相关知识
  6. html div转换图片
  7. python如何连redis_python操作redis
  8. 程序员思维是什么?程序员思维从哪里来?程序员思维到哪里去?
  9. dj鲜生-36-商品应用-其它模型类的创建-完善goods应用的数据表
  10. linux-关机与重启命令
  11. jQuery实现影院选座订座效果
  12. Linux驱动开发基础
  13. python绘制相频特性曲线_详解基于python的图像Gabor变换及特征提取
  14. Linux的一些常用操作命令
  15. Ferry工单管理系统安装部署
  16. 如何让浏览器用极速模式打开网站而不是兼容模式
  17. 基于JAVA家装建材网计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  18. 计算机学院新生篮球赛名字,计算机学院新生篮球赛圆满结束,获奖队伍公布!...
  19. 【解决方案】EasyCVR视频结构化平台如何搭建肉品屠宰场全市联网远程监控系统?
  20. 技术干货集中营——WOT 2017全球架构与运维技术峰会

热门文章

  1. 中国游戏社区市场发展动态及十四五发展策略分析报告2022年版
  2. 中国移动灵犀云声纹识别SDK(android)使用指南
  3. 网址是什么?URL 又是什么?
  4. 拦截器HandlerInterceptor+方法参数解析器HandlerMethodArgumentResolver用于统一获取当前登录用户信息
  5. nyoj 218 dinner
  6. centos镜像下载网址
  7. Galaxy APP Booster,给你的手机提个速
  8. 十则Word2003打印设置经典技巧,让你从此不求人
  9. 大数据驱动社会治理的创新转向
  10. GTest源码剖析(四)——TEST_P宏