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

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

3天内不再提示

uvm中的Scoreboards介绍

芯片验证工程师 来源:芯片验证工程师 2023-06-20 09:19 次阅读

在验证过程中让DUT进入特定场景只是验证的重要部分之一,验证环境还应该检查来自DUT的输出响应。可以使用两种类型的自动检查机制:

断言--源于规范或设计实现,确保正确的时序行为。断言通常侧重于信号级。可重用的断言也是可重用验证组件的一部分,当然设计也可以将断言放在DUT RTL中。

数据检查器-确保DUT整体的正确性。

Scoreboards

self-checking验证环境的一个重要部分是Scoreboards。通常情况下,Scoreboards在功能层面上验证设计的正确操作。Scoreboards承担的责任因实现方式而异。下面展示一个Scoreboards的例子,它验证了一个UBus slave interface。

UBus Scoreboard 示例

写到一个地址的数据应该在读取该地址时返回,验证环境的拓扑结构如下图所示:

4e5cf8ac-0ebb-11ee-962d-dac502259ad0.png

在这个例子中,创建了一个top-level environment,其中有一个UBus environment,包含bus monitor,一个master agent,和一个slave agent。

定义Scoreboard

添加必要的TLM export,以便与monitor进行通信

执行TLM export的方法,定义export被调用时的行为。

向uvm_scoreboard添加Exports :

在上图的例子中,monitors提供了一个TLM uvm_analysis_port(s)接口, scoreboard需要提供TLM uvm_analysis_imp。

1 classubus_example_scoreboardextendsuvm_scoreboard;
2   uvm_analysis_imp#(ubus_transfer,ubus_example_scoreboard)
3   item_collected_export;
4   ... 
5   function new (string name, uvm_component parent); 
6     super.new(name, parent);
7   endfunction : new
8   function void build_phase(uvm_phase phase); 
9     item_collected_export = new("item_collected_export", this); 
10   endfunction
11 ...

第2行声明了uvm_analysis_export。第一个参数ubus_transfer,定义了通过这个TLM接口通信的uvm_object。第二个参数定义了父类类型。

第9行创建item_collected_export实例。

由于scoreboard提供了一个 uvm_analysis_imp,scoreboard必须实现该export所要求的所有方法。这意味着需要定义write virtual function的实现:

virtual function void write(ubus_transfer trans);
  if (!disable_scoreboard)
    memory_verify(trans);
endfunction : write

write()的实现定义了在这个接口上接收到数据时的行为。如果disable_scoreboard为0,就会以transaction为参数调用memory_verify()函数。

将Scoreboard添加到Environment中

一旦定义好scoreboard,就可以添加到UBus的 top-level environment中。首先,在ubus_example_env类中声明ubus_example_scoreboard。

ubus_example_scoreboard scoreboard0;

scoreboard可以在build() phase构建:

function ubus_example_env::build_phase(uvm_phase phase);
...
scoreboard0 = ubus_example_scoreboard::create("scoreboard0",
this);
...
endfunction

在UBus environment中连接slaves[0] monitor到scoreboard的export上。

function ubus_example_env::connect_phase(uvm_phase phase);
...
ubus0.slaves[0].monitor.item_collected_port.connect(
scoreboard0.item_collected_export);
...
endfunction

总结下,添加scoreboard的过程:

声明scoreboard组件

添加必要的exports。

实现所需的方法来执行特定的功能。

scoreboard添加到environment中

声明并实例化scoreboard组件。

连接TLM port





审核编辑:刘清

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

    关注

    1

    文章

    385

    浏览量

    59764
  • UVM
    UVM
    +关注

    关注

    0

    文章

    182

    浏览量

    19167
  • TLM
    TLM
    +关注

    关注

    1

    文章

    32

    浏览量

    24749
  • DUT
    DUT
    +关注

    关注

    0

    文章

    189

    浏览量

    12373

原文标题:uvm中的Scoreboards

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

收藏 人收藏

    评论

    相关推荐

    数字IC验证之“什么是UVM”“UVM的特点”“UVM提供哪些资源”(2)连载...

    原文链接:https://zhuanlan.zhihu.com/p/345775995大家好,我是一哥,上章内容主要讲述两个内容,芯片验证以及验证计划。那本章我们主要讲述的内容有介绍什么是uvm
    发表于 01-21 16:00

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

      大家好,我是一哥,上章内容我们介绍什么是uvmuvm的特点以及uvm为用户提供了哪些资源?  本章内容我们来看一看一个典型的uvm验证
    发表于 01-22 15:32

    什么是uvmuvm的特点有哪些呢

    大家好,我是一哥,上章内容我们介绍什么是uvmuvm的特点以及uvm为用户提供了哪些资源?本章内容我们来看一看一个典型的uvm验证平台应该
    发表于 02-14 06:46

    如何构建UVM寄存器模型并将寄存器模型集成到验证环境

    ),通常也叫寄存器模型,顾名思义就是对寄存器这个部件的建模。本文要介绍的内容,包括对UVM寄存器模型的概述,如何构建寄存器模型,以及如何将寄存器模型集成到验证环境。篇幅原因,将在下一篇文章再给出寄存器
    发表于 09-23 14:29

    谈谈UVMuvm_info打印

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

    UVMseq.start()和default_sequence执行顺序

      1. 问题  假如用以下两种方式启动sequence,方法1用sequence的start()方法启动seq1,方法2用UVM的default_sequence机制启动seq2。那么seq1
    发表于 04-04 17:15

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

    大家好,我是一哥,上章内容我们介绍什么是uvmuvm的特点以及uvm为用户提供了哪些资源?本章内容我们来看一看一个典型的uvm验证平台应该
    发表于 12-09 13:36 7次下载
    数字IC验证之“典型的<b class='flag-5'>UVM</b>平台结构”(3)连载<b class='flag-5'>中</b>...

    UVM TLM的基本概念介绍

    UVM,transaction 是一个类对象,它包含了建模两个验证组件之间的通信所需的任何信息。
    的头像 发表于 05-24 09:17 1778次阅读
    <b class='flag-5'>UVM</b> TLM的基本概念<b class='flag-5'>介绍</b>

    UVMuvm_config_db机制背后的大功臣

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

    如何用Verdi查看UVM环境的变量?

    我们常用的debug UVM的方法是通过打印log实现。有没有办法像 debug RTL代码一样将 UVM 变量拉到波形上看呢?答案是有的,下面让我们看看是怎么做到的。
    的头像 发表于 06-25 16:01 1738次阅读
    如何用Verdi查看<b class='flag-5'>UVM</b>环境<b class='flag-5'>中</b>的变量?

    UVMuvm_config_db机制背后的大功臣

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

    一文详解UVM设计模式

    本篇是对UVM设计模式 ( 二 ) 参数化类、静态变量/方法/类、单例模式、UVM_ROOT、工厂模式、UVM_FACTORY[1]单例模式的补充,分析静态类的使用,
    的头像 发表于 08-06 10:38 1795次阅读
    一文详解<b class='flag-5'>UVM</b>设计模式

    行为型设计模式在UVM的应用

    接下来介绍行为型设计模式在UVM的应用。
    的头像 发表于 08-09 14:01 703次阅读
    行为型设计模式在<b class='flag-5'>UVM</b><b class='flag-5'>中</b>的应用

    迭代模式在UVM的应用有哪些

    行为型设计模式数量较多,上一篇介绍了模板模式和策略模式,下面对迭代模式进行介绍,挖掘其在UVM的应用。
    的头像 发表于 08-14 17:15 611次阅读
    迭代模式在<b class='flag-5'>UVM</b><b class='flag-5'>中</b>的应用有哪些

    UVM设计的sequence启动方式有哪几种呢?

    本篇介绍UVM的sequence,这是UVM中最基础的部分。对于前面介绍uvm_callba
    的头像 发表于 08-17 10:07 4259次阅读
    <b class='flag-5'>UVM</b>设计<b class='flag-5'>中</b>的sequence启动方式有哪几种呢?