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

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

3天内不再提示

UVM Heartbeat的作用有哪些呢?浅析UVM Heartbeat机制

冬至子 来源:CSDN 作者:谷公子 2023-09-08 15:35 次阅读

1. 前言

硬件电路中,为了使系统在异常情况下能自动复位,一般都需要引入看门狗(Watchdog)。看门狗其实就是一个定时器电路。当看门狗启动后,计数器开始自动计数,经过一定时间,如果没有被清零,计数器溢出就会对CPU产生一个复位信号使系统重启(俗称“被狗咬”)。系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零(俗称“喂狗”),不让复位信号产生。如果系统不出问题,程序保证按时“喂狗”,一旦程序跑飞,没有“喂狗”,系统“被咬”复位。

2. Heartbeat作用

UVM heartbeat在UVM中充当类似看门狗定时器的角色,我们可以设定它的定时长度,也就是在这时间内必须要喂狗,还可以设定heartbeat要监控的组件。uvm_heartbeat 监视测试环境中组件的活动,如果发现在指定的时间间隔内没有活动,则 uvm_heratbeat 发出UVM_FATAL消息,导致模拟结束,可以在早期阶段检测仿真挂住,而不是在全局仿真超时到期时检测:

  • 这将有助于识别导致死锁的组件;
  • 通过提前终止仿真来节省仿真时间并释放资源;

既然uvm_heartbeat类似于看门狗,那么在使用上,只需要关注以下三件事:

  • 配置它的定时长度 (这段时间内没有喂狗就终止仿真)
  • 配置它需要监控的对象 (由哪些对象去喂狗)
  • 设置多长时间喂狗 (正常情况下这个时间要小于步骤1的定时长度,除非TB或RTL出问题了)

3. Heartbeat内置函数

uvm_heartbeat 类派生自 uvm_object,它提供一组内置方法来方便用户使用。有如下:

image.png

注意:uvm_event e 必须定期触发,它会设置一个监视窗口。如果heartbeat监视器在该时间段内未发现任何活动,则会生成 HBFAIL UVM_FATAL消息。一般来说,事件e可以在无限循环中触发,作为一个永远持续的过程。

4. Heartbeat例子

根据heartbeat的作用和内置函数,举个使用例子。

第一步创建喂狗的uvm_objection实例(假设为uvm_objection obj=new(“obj”)),这个objection需要传递给uvm_heartbeat和所有被监控组件,被监控组件需要定期去raise这个obj来达到喂狗的目的。

第二步创建触发监控窗口的uvm_event实例(假设为uvm_event hb_e=new(“hb_e”)),这个event决定了多长时间去检查下是否有组件喂狗了,也就是raise objection。

第三步就是创建uvm_heartbeat实例(假设为uvm_heartbeat hb=new("hb", this, obj)),在这里把obj传递进去了。

第四步设置uvm_heartbeat的工作模式,比如hb.set_mode(UVM_ANY_ACTIVE)。

第五步设置uvm_heartbeat触发检查的event和检查对象,比如hb.set_heartbeat(hb_e,hb_comp)。这里面把event hb_e和监控组件列表comp传递给uvm_heartbeat了。

此时uvm_heartbeat就正式开始工作了,在hb_e每次被trigger()的时候,根据当前工作模式去检查各个被监控组件是否有调用过obj.raise_objection(this)。如果没有,就会停止仿真,表明验证环境有异常情况。另外一点大家主要注意的是,被监控的多个组件raise的objection是同一个,也就是obj这个实例,因此需要在上层创建好obj之后,把句柄传递给各个被监控组件去raise。

以下为uvm_heartbeat监控两个组件(compA和compB)的示意图,uvm_heartbeat模式为UVM_ALL_ACTIVE。第一张图,在检查窗口内,compA和compB都有喂狗,检查通过。第二张图,在检查窗口内,只有compB喂狗,compA没有喂狗,因此检查失败,会报出UVM_FATAL。

image.png

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

    关注

    10

    文章

    559

    浏览量

    70733
  • 仿真器
    +关注

    关注

    14

    文章

    1016

    浏览量

    83624
  • 计数器
    +关注

    关注

    32

    文章

    2253

    浏览量

    94343
  • 定时器
    +关注

    关注

    23

    文章

    3237

    浏览量

    114442
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    19133
收藏 人收藏

    评论

    相关推荐

    UVM中的field automation机制哪些用途

    不知道UVM中的field automation机制怎么翻译,不管了,反正就是**机制,理解它能干啥就行了。
    的头像 发表于 07-19 09:45 2036次阅读

    IC验证"为什么要学习UVM"

    什么?验证工程师验证工程师能够从本书学会如下内容:如何用UVM搭建验证平台,包括如何使用sequence机制、factory机制、callback机制、寄存器模型(register m
    发表于 12-01 15:09

    IC验证"UVM验证平台加入factory机制"(六)

      加入factory机制 上一节《IC验证"一个简单的UVM验证平台"是如何搭建的(五)》给出了一个只有driver、使用UVM搭建的验证平台。严格来说这根本就不算是UVM验证
    发表于 12-08 12:07

    IC验证“UVM验证平台加入objection机制和virtual interface机制“(七)

    在上一节中,**《IC验证"UVM验证平台加入factory机制"(六)》**虽然输出了“main_phase is called”,但是“data is drived”并没有
    发表于 12-09 18:28

    什么是UVM Report机制

    UVM Report机制概述
    发表于 12-21 06:55

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

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

    什么是uvmuvm的特点哪些

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

    请问有人用过ESP_BLE_MESH的heartbeat的功能吗?

    1、请问有人用过ESP_BLE_MESH 的heartbeat 的功能吗?我想请教下在节点的代码中 要如何 配置该功能?2、是不是正确设置了节点 的heartbeat_pub 信息
    发表于 03-07 09:05

    谈谈UVM中的uvm_info打印

      uvm_info宏的定义如下:  `define uvm_info(ID,MSG,VERBOSITY) \  begin \  if (uvm_report_enabled(VERBOSITY
    发表于 03-17 16:41

    UVM中seq.start()和default_sequence执行顺序

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

    浅析UVM不同机制的调试功能

    作为UVM的用户,我们需要相信在绝大部分情况下这些机制本身是没有问题的。因此,从顶层获得有效的调试信息就非常关键,比起潜入到内部要高效得多。 这也是本文的目的,盘点UVM针对不同机制
    的头像 发表于 02-14 16:23 1268次阅读
    <b class='flag-5'>浅析</b><b class='flag-5'>UVM</b>不同<b class='flag-5'>机制</b>的调试功能

    UVM学习笔记(一)

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

    UVMuvm_config_db机制背后的大功臣

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

    UVMuvm_config_db机制背后的大功臣

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

    UVM设计中的sequence启动方式哪几种

    本篇介绍UVM中的sequence,这是UVM中最基础的部分。对于前面介绍的uvm_callback, uvm_visitor等,很少被使用到或者也只有搭建平台的人会使用。
    的头像 发表于 08-17 10:07 3972次阅读
    <b class='flag-5'>UVM</b>设计中的sequence启动方式<b class='flag-5'>有</b>哪几种<b class='flag-5'>呢</b>?