码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • uvm_event和uvm_event_pool


    文章目录

    • 前言
    • 1、uvm_event
    • 2、uvm_event_pool
    • 总结


    前言


    1、uvm_event

    uvm_event类有两种不同的操作模式:边沿敏感和电平敏感。

    边沿敏感模式包括:trigger(),wait_trigger(),wait_ptrigger()和wait_ptrigger_data() 方法。不要使用reset(),is_on(),is_off(),wait_on()和wait_off()方法。
    wait_*方法会被阻塞,在调用trigger()时释放。

    电平敏感模式包括:trigger(),reset(),is_on(),is_off(),wait_on()和wait_off()方法,不要使用任何wait_*trigger方法。
    trigger()方法将事件状态设置为ON,并释放该事件的所有现有wait_trigger()和wait_on()。

    reset()方法将事件状态设置为OFF并释放该事件的所有wait_off()。如果用于边沿敏感等待,reset()调用将在之后解除触发器!如果事件被用作边缘敏感的同步机制,你不应该调用reset() !

    下图是UVM-1.1中关于uvm_event的实现。
    在这里插入图片描述
    在这里插入图片描述

    下图是UVM-1.2 & IEEE UVM中关于uvm_event的实现。
    在这里插入图片描述

    2、uvm_event_pool

    uvm_event_pool顾名思义,用于存放uvm_event的一个池子。通过这个池子,uvm_event可以被全局访问。

    在这里插入图片描述
    在这里插入图片描述
    必须选择使用uvm_event作为电平敏感事件或边沿敏感事件,不能把这两种使用模式混在一起。
    对于电平敏感的同步,使用trigger()打开事件,使用reset()关闭事件。
    对于边沿敏感的同步,只使用trigger()来触发边缘,不要调用reset()方法。
    在使用事件作为边沿敏感同步时,调用reset()方法将解除触发机制,这将导致任何trigger()调用都不能再释放该事件,极有可能导致线程被锁定。

    电平敏感的事件同步如下所示,利用uvm_event_pool.get_global(“reset”),获取一个用于全局复位的复位事件reset_event,利用reset_event.trigger()来触发打开事件,利用reset_event.reset()来关闭事件。
    在这里插入图片描述
    在这里插入图片描述
    uvm_event_pool的应用示例如下所示,同样先利用uvm_event_pool.get_global(“reset”),获取一个用于全局复位的复位事件reset_event,这个reset_event是全局的,在上面的reset_monitor中进行触发和复位,在这里利用reset_event.wait_on()来阻塞进程,用于同步控制。
    在这里插入图片描述


    总结

    本文主要记录一下uvm_event和uvm_event_pool的介绍和使用。

  • 相关阅读:
    【教材】*2022/11/29[指针] 指针数组作main函数的形参
    flink实战--大状态任务调优指南
    Linux 内核 LTS 期限将从 6 年恢复至 2 年
    VMware Aria Automation 8.10 - 现代基础架构自动化平台
    PHP:CartesianProduc笛卡尔乘积算法(附完整源码)
    ElasticSearch全文检索技术
    关于电子商务电商供应链项目,不得不说的开放平台电商API接口
    【树莓派/入门】1.69inch LCD屏幕的连接与测试
    乐凡三防平板:制造业移动作业平台的专业高效之选
    Springboot毕设项目高校重点学科建设管理系统55290(java+VUE+Mybatis+Maven+Mysql)
  • 原文地址:https://blog.csdn.net/hh199203/article/details/127652972
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号