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

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

3天内不再提示

深度剖析UVM中的Analysis port

芯片验证工程师 来源:芯片验证工程师 作者:芯片验证工程师 2023-05-28 09:39 次阅读

Analysis port

每个组件通过其TLM接口与系统中的其他组件进行通信,用于给DUT发送激励或者对DUT的行为进行响应。

然而,在任何绝大多数复杂的验证环境中,特别是随机验证环境中,需要将收集到的transaction发送给环境的其他部分,以便进行端到端检查(scoreboard)或收集接口覆盖率。

这两种类型的TLM通信的区别在于,put/get ports通常需要一个相应的export来提供实现。对于analysis port来说,一个monitor能够产生一个transaction而不用关心连接了哪些组件。各个不同的analysis components连接到monitoranalysis_port,以不同的方式处理transaction

类比于,互联网上看到同一个新闻,不同的人会产生不同的反应,有的人兴高采烈,有的人捶胸顿足。这就是订阅者模式。

uvm_analysis_port

52eee4c8-fced-11ed-90ce-dac502259ad0.png

uvm_analysis_port是一个特别的TLM port,其接口包含一个函数 write()

uvm_analysis_port包含一个连接到它的analysis_exports列表当组件调用analysis_port.write()时,analysis_port会遍历该列表并调用每个analysis_export的write()方法。如果没有任何连接,write()的调用就直接返回。因此,一个uvm_analysis_port可以连接到0个、1个或者多个analysis_exports,但analysis_port.write()操作并不取决于连接的analysis_exports数量。

因为write()是一个void function,所以write()将总是在同一个delta cycle内完成,无论连接了多少个组件。

5311a710-fced-11ed-90ce-dac502259ad0.png

在上一层环境中,analysis port被连接到相应组件的analysis export,如coverage collectors和scoreboards等等。

Analysis Exports

与其他TLM连接一样,连接到analysis port的每个组件都要通过analysis_export提供write()的实现。

uvm_subscriber基础验证组件可以用来简化这个操作 ,所以一个典型的 analysis component会扩展自uvm_subscriber:

533d563a-fced-11ed-90ce-dac502259ad0.png

与上面描述的put()和get()一样,analysis portanalysis_export之间的TLM连接,需要允许analysis_export提供write()的实现。如果多个analysis_export被连接到一个analysisport,该端口将依次调用每个analysis_export的write()方法。

所有write()的实现都必须是functionanalysisport的write()function会立即完成,不管连接到多少个analysis_export

53626448-fced-11ed-90ce-dac502259ad0.png

当多个uvm_subscriber连接到一个analysisport时,每个uvm_subscriber都被传递同一个transaction对象的指针,即write()调用的参数每个write()的实现都必须copy这个transaction,然后对copy的对象进行操作,以避免破坏传递相同指针的其他transaction内容。

UVM还包括一个Analysis_fifo,它是一个包括analysis_export 的uvm_tlm_fifo,以允许blocking components访问analysisport传递的transaction

analysis_fifo是unbounded的,所以monitor的write()可以保证立即完成,然后,analysis组件可以随意从analysis_fifo中获取transaction



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

    关注

    0

    文章

    181

    浏览量

    19077
  • TLM
    TLM
    +关注

    关注

    1

    文章

    32

    浏览量

    24711
  • Analysis
    +关注

    关注

    0

    文章

    17

    浏览量

    10219

原文标题:UVM中的Analysis port

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

收藏 人收藏

    评论

    相关推荐

    《C语言深度剖析》【超经典书籍】

    本帖最后由 zgzzlt 于 2012-8-16 14:23 编辑 《C语言深度剖析》【超经典书籍】
    发表于 08-02 08:59

    C语言深度剖析

    C语言深度剖析——一本关于C语言学习的教程,里面包含C语言编写规范,各种变量指针用法等。以含金量勇敢挑战国内外同类书籍
    发表于 08-14 11:36

    c语言深度剖析

    c语言深度剖析
    发表于 04-02 09:12

    陈正冲《C语言深度剖析

    陈正冲编写的《C语言深度剖析》,挺经典,刚来论坛,多多指教~~
    发表于 08-17 12:06

    【资料分享】C语言深度剖析

    C语言深度剖析
    发表于 10-16 15:16

    C语言深度剖析

    C语言深度剖析
    发表于 08-25 09:08

    C语言深度剖析

    C语言深度剖析[完整版].pdfC语言深度剖析[完整版].pdf (919.58 KB )
    发表于 03-19 05:11

    什么是uvmuvm的特点有哪些呢

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

    谈谈UVMuvm_info打印

    uvm_report_enabled(xxx),会分析传过来的severity和id的配置verbosity要大于传过来的verbosity,(get_report_verbosity_level(severity, id
    发表于 03-17 16:41

    C语言深度剖析

    C语言深度剖析
    发表于 05-05 17:40 7次下载

    C语言深度剖析

    C语言深度剖析
    发表于 12-20 22:50 0次下载

    创建UVM Driver

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

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVMuvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-20 17:28 1117次阅读

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVMuvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-29 16:57 962次阅读

    C语言深度剖析.zip

    C语言深度剖析
    发表于 12-30 09:20 5次下载