这是一篇关于何时应设置寄存器适配器的provides_responses位的简短文章。

原始Jelly Bean Driver

这是Register Abstraction中使用的原始jelly_bean_driver。驱动程序使用get_next_item(第23行)获取请求,然后更新请求本身以存储来自DUT的响应(第33行)。最后,它调用item_done(第35行)。由于驱动程序不会返回单独的响应,因此我们将jelly_bean_reg_adapter的provides_responses设置为零。

class jelly_bean_driver extends uvm_driver#( jelly_bean_transaction );`uvm_component_utils( jelly_bean_driver )virtual jelly_bean_if jb_if;function new( string name, uvm_component parent );super.new( name, parent );endfunction: newfunction void build_phase( uvm_phase phase );super.build_phase( phase );endfunction: build_phasetask main_phase( uvm_phase phase );jelly_bean_transaction jb_tx;forever begin@jb_if.master_cb;jb_if.master_cb.command < = jelly_bean_types::NO_OP;jb_if.master_cb.color   <= jelly_bean_types::NO_COLOR;jb_if.master_cb.flavor  <= jelly_bean_types::NO_FLAVOR;seq_item_port.get_next_item( jb_tx ); // get the request@jb_if.master_cb;jb_if.master_cb.command <= jb_tx.command;if ( jb_tx.command == jelly_bean_types::WRITE ) beginjb_if.master_cb.flavor     <= jb_tx.flavor;jb_if.master_cb.color      <= jb_tx.color;jb_if.master_cb.sugar_free <= jb_tx.sugar_free;jb_if.master_cb.sour       <= jb_tx.sour;end else if ( jb_tx.command == jelly_bean_types::READ ) begin@jb_if.master_cb;jb_tx.taste = jelly_bean_types::taste_e'( jb_if.master_cb.taste ); // update the request itselfendseq_item_port.item_done();endendtask: main_phase
endclass: jelly_bean_driver

返回单独的响应的driver

如果provide_responses是1,我会按如下方式重写driver。 (通常这是另一种方式;如果driver提供单独的响应,那么我们将provide_responses设置为1。)

class jelly_bean_driver extends uvm_driver#( jelly_bean_transaction );`uvm_component_utils( jelly_bean_driver )virtual jelly_bean_if jb_if;function new( string name, uvm_component parent );super.new( name, parent );endfunction: newfunction void build_phase( uvm_phase phase );super.build_phase( phase );endfunction: build_phasetask main_phase( uvm_phase phase );jelly_bean_transaction jb_tx;jelly_bean_transaction jb_rsp;forever begin@jb_if.master_cb;jb_if.master_cb.command < = jelly_bean_types::NO_OP;jb_if.master_cb.color   <= jelly_bean_types::NO_COLOR;jb_if.master_cb.flavor  <= jelly_bean_types::NO_FLAVOR;seq_item_port.get( jb_tx );     // get the request$cast( jb_rsp, jb_tx.clone() ); // create a responsejb_rsp.set_id_info( jb_tx );    // copy the sequence_id and the transaction_id@jb_if.master_cb;jb_if.master_cb.command <= jb_tx.command;if ( jb_tx.command == jelly_bean_types::WRITE ) beginjb_if.master_cb.flavor     <= jb_tx.flavor;jb_if.master_cb.color      <= jb_tx.color;jb_if.master_cb.sugar_free <= jb_tx.sugar_free;jb_if.master_cb.sour       <= jb_tx.sour;end else if ( jb_tx.command == jelly_bean_types::READ ) begin@jb_if.master_cb;jb_rsp.taste = jelly_bean_types::taste_e'( jb_if.master_cb.taste ); // update the responseendseq_item_port.put( jb_rsp ); // return the responseendendtask: main_phase
endclass: jelly_bean_driver

driver使用get(第24行)获取请求,然后克隆请求以创建单独的响应(第25和26行)。 set_id_info函数将请求中的一些ID复制到响应中,以便sequencer可以将响应路由回原始序列。最后,driver更新响应(第37行)并将其返回到sequencer(第39行)。希望这可以帮助。

UVM糖果爱好者教程 - 31.provides_responses?相关推荐

  1. UVM糖果爱好者教程 - 1.概述

    Accellera最近发布的UVM可能会改变验证的未来,因为验证方法似乎在这个UVM中得到巩固.本专栏将提供关于这种新的验证方法的简单教程.本教程不是关注AXI,OCP或其他系统总线,而是基于jell ...

  2. uvm 糖果爱好者 subscriber调用parent方法解读

    //---------------------------------------------------------------------------// Class: jelly_bean_fc ...

  3. STM32 电机教程 31 - 无刷无感控制原理

    前言 前面<STM32 电机教程 29 - 无刷无感入门1>和<STM32 电机教程 30 - 无刷无感入门2>我们通过两种方式有BLDC电机无HAL传感器的情况下成功地让电机 ...

  4. STM32 基础系列教程 31 – DAC

    前言 学习stm32 DAC数模转换接口使用,学会用STM32 的DAC接口,通过DAC接口将数字信号转变成模拟信号输出,或查看内部变量值的变化波形,学习DAC波形发生器的使用. 示例详解 基于硬件平 ...

  5. QIIME 2教程. 31名词Glossary(2021.2)

    名词解释 User Glossary https://docs.qiime2.org/2021.2/glossary/ 译者注:以下是QIIME 2中经常会用到的术语,由于有些术语无法准确翻译为中文, ...

  6. QIIME 2教程. 31名词Glossary(2020.11)

    文章目录 名词解释 译者简介 Reference 猜你喜欢 写在后面 名词解释 User Glossary https://docs.qiime2.org/2020.11/glossary/ 译者注: ...

  7. php detailview,PHP开发框架Yii Framework教程(31) Zii组件-DetailView示例

    CDetailView为某个Model显示详细内容.这个要显示的Model可以为CModel或是关联数组. CDetailView通过配置 attributes来决定Model的那些属性需要显示已经以 ...

  8. Yii Framework 开发教程(31) Zii组件-DetailView 示例

     CDetailView为某个Model显示详细内容.这个要显示的Model可以为CModel或是关联数组. CDetailView通过配置 attributes来决定Model的那些属性需要显示 ...

  9. 零基础CSS入门教程(31)–代码格式化

    点此查看 所有教程.项目.源码导航 本文目录 1. 背景 2. 为什么要进行代码格式化 3. 如何进行代码格式化 4. 如何快捷的进行格式化 5. 小结 1. 背景 为什么单独拿出一章来讲代码格式化的 ...

  10. 【C++深度剖析教程31】被遗弃的多重继承

    加qq1126137994 微信:liu1126137994 C++中是否允许一个类继承多个父类? C++支持编写多重继承的代码: 一个子类可以拥有多个父类 子类拥有所有父类的成员变量 子类继承父类所 ...

最新文章

  1. 获取SQLServer数据库中所有表
  2. F5与NetScaler比较
  3. Datawhale组队学习 Task04:队列(2天)
  4. python之运算符
  5. tensorflow基础-placeholder
  6. jvm性能调优 - 01类加载机制Review
  7. 经典游戏底层框架--迷宫游戏构成原理剖析
  8. 优麒麟在linux下安装教程,在优麒麟Ubuntu Kylin系统中安装百度网盘Linux版.deb的方法...
  9. 7.3图的遍历(深度优先)-理论
  10. 《HTML5+CSS3网页设计入门必读》——1.13 测验
  11. ASP.Net学习笔记008--ASP.Net揭秘之Input版自增补充说明
  12. 9、两个栈实现队列(Python)
  13. Unity3D的音效相关介绍
  14. 学堂在线体育与社会期末考试答案(武汉体育学院)(学堂在线)网课搜题
  15. c语言程序实验报告范文,C语言实验报告范文
  16. SQL连接MYSQL出现对象名无效_SQL数据库时提示对象名'XXX' 无效
  17. VirtualBox下Android-x86安装与基础配置
  18. editplus5激活码 文件下载 汉化包
  19. C. Petya and Exam
  20. vue实现人员展示页面

热门文章

  1. 关联规则分析(频繁项集查找方法为apriori方法的Fk-1*Fk-1)
  2. 明天9:00 | ECCV 2022 全球博士TalK——计算机视觉领域顶会
  3. 上|中国股市九大伪元宇宙概念股
  4. Python字符串| min()
  5. 环境变量(PATH)的那些事
  6. c/c++ string转int int转string string拼接
  7. react中动态渲染背景图片
  8. vscode 选择ts版本为项目使用的版本
  9. 【懒人神器,批量src】Serein,一个可以对无数个网站进行漏洞检测的软件
  10. 【C++初阶学习】之 懒人神器——模版(概念)