0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UVM driver和sequencer的通信

芯片验证工程师 来源:芯片验证工程师 2023-06-07 11:58 次阅读

创建Sequencer

sequencer生成激励数据,并将其传递给driver执行。UVM类库提供了uvm_sequencer基类,其参数为request和response数据类型。

uvm_sequencer基类包含了sequencer与driver通信所需的基本功能。在sequencer类的定义中, 默认情况下,response数据类型与request数据类型相同。如果需要不同的response数据类型,必须为uvm_sequencer指定可选的第二个参数

uvm_sequencer #(simple_item, simple_rsp) sequencer;

连接Driver和Sequencer

driver和sequencer通过TLM连接,driver的seq_item_port连接到sequencer的seq_item_export。sequencer产生数据项,通过seq_item_export提供。driver通过它的seq_item_port获取数据项,并提供response(可选)。包含driver和sequencer的验证组件(通常是agent)在它们之间建立连接。

wKgaomSAAHeARPG7AACCxEaIzjw229.jpg

uvm_driver中的seq_item_port定义了driver获取sequence中下一个数据项的一组方法,并且提供了driver与sequencer同步的能力。sequencer实现了一套方法,允许驱动器和序列器之间进行灵活和模块化的交互。

Sequencer和Driver的基本交互方式

driver和sequencer之间的基本交互是通过get_next_item()和item_done()任务完成的。

driver使用get_next_item()来获取下一个要发送的随机数据项。发送到DUT后,driver向sequencer发出信号,使用item_done()表示该数据项已被驱动。通常情况下,driver的主函数类似于以下伪代码:

wKgaomSAAIeAbmASAABSKOTIjHw617.jpg

get_next_item()是blocking的,直到在该sequencer上运行的sequences提供一个需要驱动的数据项。

获取待驱动的数据项

除 了 get_next_item() 任 务 外 , uvm_seq_item_pull_port 类 还 提 供 了 另 一 个 任 务try_next_item()。如果没有数据项可供驱动,这个任务将在同一simulation step中返回,此时可以让driver执行一些idle transactions,比如当没有有意义的数据要传输时,给DUT发送随机数据,如下图所示:

wKgaomSAAJSAfdKjAADMRpDAmJM903.jpg

将处理后的数据发回给Sequencer

在某些sequences中,正在生成的值取决于先前生成的数据驱动后的响应,那么driver需要使用item_done(rsp)将处理后的响应返回到sequencer中。

seq_item_port.item_done(rsp);

或使用put_response(rsp)方法

seq_item_port.put_response(rsp);

或使用uvm_driver的内置analysis port

rsp_port.write(rsp);

在提供response之前,必须使用rsp.set_id_info(req)将response transaction与request transaction相对应。put_response()是一个blocking方法,所以sequence必须有一个对应的get_response(rsp)。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UVM
    UVM
    +关注

    关注

    0

    文章

    182

    浏览量

    19168
  • TLM
    TLM
    +关注

    关注

    1

    文章

    32

    浏览量

    24749
  • sequence
    +关注

    关注

    0

    文章

    23

    浏览量

    2842

原文标题:UVM driver和sequencer的通信

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    数字IC验证之“典型的UVM平台结构”(3)连载中...

    driver,monitor和sequencer,其中driver ,monitor中也包含了与dut进行通信的interface。  往上一层上来看,这层是env,其中包含了多个a
    发表于 01-22 15:32

    数字IC验证之“构成uvm测试平台的主要组件”(4)连载中...

    reference model这样的基类。但是,uvm reference model需要从以uvm component这个基类进行扩展。因为各个组件之间存在着信息通讯。  比如driver需要从
    发表于 01-22 15:33

    UVM代码如何把testcase与driver分开

    UVM代码如何把testcase与driver分开
    发表于 03-11 07:58

    什么是uvmuvm的特点有哪些呢

    直观的印象,就是uvm验证平台,它是分层的结构。图中的每一个巨型框都代表着平台的一个构成元素。这些元素呢,我们称为平台组建,下面来简单的分析一下。从最底层上来看,agent 中包含了driver,monitor和sequencer
    发表于 02-14 06:46

    UVM sequence分层有哪几种方式呢

    sequencer,因为sequencer属于静态的UVM组件,属于平台型的内容,不可能每一个用例都需要创建一个sequencer。这里的例外就是virtual
    发表于 04-11 16:37

    请问一下在UVM中的UVMsequences是什么意思啊

    uvm_sequencer_base类派生出来的,其 被参数化为用于与driver 通信的sequence item类型。因此要访问正在运行sequence 的真实sequencer
    发表于 04-11 16:43

    UVM sequence分层的几种体现

    sequencer,因为sequencer属于静态的UVM组件,属于平台型的内容,不可能每一个用例都需要创建一个sequencer。这里的例外就是virtual
    发表于 04-14 11:08

    如何配置sequence的仲裁算法和优先级及中断sequence的执行

    01 Arbitrary在UVM中,多个sequence可以同时被绑定到相同的sequencer并启动。这种测试场景在实际中是存在的,比如在模拟同一个总线master口上的不同类型的数据流时,可以将
    发表于 09-23 14:35

    介绍两种交互方法来完成SequencerDriver的握手机制

    UVM框架下,测试激励从产生到最终作用于DUT接口的这一过程,遵守Sequence-Sequencer-Driver这一基本结构。在这一基本结构之上,可能会根据实际应用扩展出来multi
    发表于 09-23 14:39

    UVM之sequence/item见解 sequencer特性及应用(下)

    本文将接着分享sequencer的相关知识,对于sequencer的仲裁特性有几种可选,UVM_SEQ_ARB_FIFO ;UVM
    的头像 发表于 02-19 10:14 4799次阅读
    谈<b class='flag-5'>UVM</b>之sequence/item见解 <b class='flag-5'>sequencer</b>特性及应用(下)

    数字IC验证之“典型的UVM平台结构”(3)连载中...

    直观的印象,就是uvm验证平台,它是分层的结构。图中的每一个巨型框都代表着平台的一个构成元素。这些元素呢,我们称为平台组建,下面来简单的分析一下。从最底层上来看,agent 中包含了driver,monitor和sequencer
    发表于 12-09 13:36 7次下载
    数字IC验证之“典型的<b class='flag-5'>UVM</b>平台结构”(3)连载中...

    UVM sequence机制中response的简单使用

    sequence作为UVM几个核心机制之一,它有效地将transaction的产生从driver中剥离出来,并且通过和sequencer相互配合,成功地将driver的负担降低至仅聚焦
    的头像 发表于 09-22 09:26 2401次阅读

    UVM学习笔记(一)

    driver应该派生自uvm_driver,而uvm_driver派生自uvm_component。
    的头像 发表于 05-26 14:38 1388次阅读
    <b class='flag-5'>UVM</b>学习笔记(一)

    创建UVM Driver的步骤

    Driver的作用是从sequencer中获得数据项,按照接口协议将数据项驱动到总线上。
    的头像 发表于 05-30 09:22 1013次阅读
    创建<b class='flag-5'>UVM</b> <b class='flag-5'>Driver</b>的步骤

    创建UVM Driver

    Driver的作用是从sequencer中获得数据项,按照接口协议将数据项驱动到总线上。UVM类库提供了uvm_driver基类,所有的Driver
    的头像 发表于 05-30 16:17 797次阅读
    创建<b class='flag-5'>UVM</b> <b class='flag-5'>Driver</b>