一般UVM环境中的Driver组件,派生自uvm_driver。

uvm_dirver派生自uvm_component。

class  uvm_driver #(type REQ = uvm_sequence_item, type RSP = REQ)  extends uvm_component

其中定义了两个Ports:seq_item_port,driver一般用这个接口向sequencer索要sequence。

rsp_port,driver向相应的sequencer发送response。

还有一个new函数,再无其他。

driver内部通过调用get函数来向sequencer索要transaction

相应的uvm_sequencer,派生自uvm_sequencer_param_base,继而派生自uvm_sequencer_base。

class  uvm_sequencer #(type REQ=uvm_sequence_item, RSP=REQ)  extends uvm_sequencer_param_base (#REQ,RSP)

定义有一个seq_item_export。提供访问这个sequencer的接口实现。

uvm_seq_item_pull_imp #(REQ,RSP,this_type)  seq_item_export

其中接口的类型是uvm_sqr_if_base #(REQ,RSP)。

它实现的方法有:get_next_item/try_next_item,先在该sequencer中选择优先级最高的sequence,然后该sequence wait_for_grant,

然后uvm_sequence_base::pre_do,randomized,post_do。

item_done,一旦上一个task被调用,那这个task也必须被调用。表示一个sequence结束,fifo可以移出。

Driver中在得到sequence后,需要将sequence变为DUT能够接收的信号类型。

在agent中必须在connect_phase中,连接driver.seq_item_port.connect(sequencer.seq_item_export)。所以sequence在执行时

必须指定sequencer,而sequencer又与driver相连接在一起,最终完成向DUT发送transaction的目的。当然对于很简单的

transaction也可以直接在sequence中就向DUT发送信号。

不过有一个疑惑的地方,sequence中的task body()与sequencer的seq_item_port的执行之间的关系是如何的。

       答:sequence body主要完成transaction的create/random/send,之后的transaction才会发送给driver

             sequencer会更根据poriority,phase,connect来调用正确的sequence给driver。

UVM中的driver组件的更多相关文章

  1. UVM中的sequence使用(一)

    UVM中Driver,transaction,sequence,sequencer之间的关系. UVM将原来在Driver中的数据定义部分,单独拿出来成为Transaction,主要完成数据的rand ...

  2. Apple macOS Mojave Intel Graphics Driver组件任意代码执行漏洞

    受影响系统:Apple macOS Mojave 10.14.5描述:CVE(CAN) ID: CVE-2019-8629 Apple macOS Mojave是苹果公司Mac电脑系列产品的操作系统. ...

  3. Bootstrap 中的 Typeahead 组件 -- AutoComplete

    Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,功能很强大,但是,使用上并不太方便.这里我们将介绍一下这个组件的使用. 第一,简单使用 首先,最简单 ...

  4. WPF中实例化Com组件,调用组件的方法时报System.Windows.Forms.AxHost+InvalidActiveXStateException的异常

    WPF中实例化Com组件,调用组件的方法时报System.Windows.Forms.AxHost+InvalidActiveXStateException的异常 在wpf中封装Com组件时,调用组件 ...

  5. Titanium中调用ios组件时语言不是本地化的解决方法

    用Titanium开发的ios应用中,当调用系统组件时,尽管手机已经设置了系统语言为中文,但那些组件的界面却仍为英文.比如调用iphone中的相册组件,其界面为: 那么怎么让它跟系统语言保持一致呢? ...

  6. 第30课 Qt中的文本编辑组件

    1. 3种常用的文本编辑组件的比较 单行文本支持 多行文本支持 自定义格式支持 富文本支持 QLineEdit (单行文本编辑组件) Yes No No No QPlainTextEdit (多行普通 ...

  7. UVM中的class

    UVM中的类包括:基类(base)------------uvm_void/uvm_object/uvm_transaction/uvm_root/uvm_phase/uvm_port_base 报告 ...

  8. ExtJs中xtype与组件类的对应表

    from:http://blog.163.com/jx_dream/blog/static/117056627201223091021410/ 核心提示:我们在使用 ExtJs 创建组件时最容易理解的 ...

  9. 杂谈SharpDx中的WIC组件——我们需要WIC的图片编码功能么?

    在前文 SharpDX之Direct2D教程II——加载位图文件和保存位图文件 中,发现在VB2010中不能很好的运用SharpDx中的WIC组件进行图片的编码工作.可能是我的设置问题,也可能是Sha ...

随机推荐

  1. Junit4单元测试报错

    转载博客:http://www.cnblogs.com/sxdcgaq8080/p/5649819.html 今天是用JUnit测试一段代码,报错method initializationerror ...

  2. 2015.7.11js-10(无缝滚动)

    1.实现原理:setInterval定时器,让某元素position的left属性定时滚动,使用到js中的元素的offsetLeft属性. 2.案例:1.css的实现是外div是4张图片的总宽度,设置 ...

  3. Windows Phone Bing lock screen doesn't change解决方法

    之前一直用的Lumia 925,Bing lock screen每天都会更换.这几天换了Lumia 930,同步了账号相关的设置,发现Bing lock screen不再每天更换.尝试重启.使用cel ...

  4. Rails: could not connect to database postgres: FATAL: Peer authentication failed for user "username"

    /var/lib/pgsql/9.2/data/pg_hba.conf 打开之后找到 local all postgres/all peer 改成 local all postgres trust 保 ...

  5. Debian的自动化安装(DEBIAN_FRONTEND)

    Debian 安装程序的参数 安装系统确认一些附加的引导参数 debconf/priority 这些参数设置将设置显示的信息为为最低的级别. 缺省安装使用 debconf/priority=high ...

  6. State Server实现多机器多站点 Session 共享 全手记

    网络环境有2台windows 2008 (192.168.1.71,192.168.1.72) 需要部署成 WebFarm,提高容错性. 网站部署在2台机器上的2个站点,如何才能做到Session的共 ...

  7. tomcat如何配置启动时自动部署webapps下的war包

    1.找到 tomcat安装目录/conf/server.xml 2.修改host元素的配置如下: <Host name="localhost" appBase="w ...

  8. Spark2 ML包之决策树分类Decision tree classifier详细解说

    所用数据源,请参考本人博客http://www.cnblogs.com/wwxbi/p/6063613.html 1.导入包 import org.apache.spark.sql.SparkSess ...

  9. vue中打包生成可配置文件以便修改接口地址

    vue打包上传到服务器之后,如果数据接口域名发生变化,需要手动修改接口地址,在发布的时候也麻烦,于是.. 在打包之后如果有一个json配置文件以便修改那不是方便很多 在网上找了一些方法貌似都是异步请求 ...

  10. 注意:darknet安装

    参考:https://github.com/AlexeyAB/darknet # 一.安装 ## linux下安装 - 在darknet目录下执行make ## windows下安装 1. 安装vs2 ...