uvm_config_db 和 uvm_resource_db :

uvm_config_db

class my_driver extends uvm_driver;int my_param;function new(string name, uvm_component parent);super.new(name, parent);endfunctionvirtual task run_phase(uvm_phase phase);// 在组件内部获取配置值if (!uvm_config_db#(int)::get(this, "", "my_param", my_param)) begin`uvm_error("CONFIG_ERR", "Failed to get my_param from config_db")end`uvm_info("DRIVER", $sformatf("Got my_param: %0d", my_param), UVM_LOW)endtask
endclassclass my_test extends uvm_test;function new(string name, uvm_component parent);super.new(name, parent);endfunctionvirtual function void build_phase(uvm_phase phase);my_driver drv;// 在测试用例中设置配置值uvm_config_db#(int)::set(this, "drv", "my_param", 42);drv = new("drv", this);endfunction
endclass

uvm_resource_db

class my_component extends uvm_component;int my_resource;function new(string name, uvm_component parent);super.new(name, parent);endfunctionvirtual task run_phase(uvm_phase phase);// 在组件内部获取资源值if (!uvm_resource_db#(int)::read_by_name("my_global_resource", my_resource)) begin`uvm_error("RESOURCE_ERR", "Failed to get my_global_resource from resource_db")end`uvm_info("COMPONENT", $sformatf("Got my_resource: %0d", my_resource), UVM_LOW)endtask
endclassclass my_test extends uvm_test;function new(string name, uvm_component parent);super.new(name, parent);endfunctionvirtual function void build_phase(uvm_phase phase);// 在测试用例中设置资源值uvm_resource_db#(int)::set("my_global_resource", 100);my_component comp;comp = new("comp", this);endfunction
endclass

summary

uvm_config_db继承于uvm_resource_db

`uvm_config_db` 和 `uvm_resource_db` 都是 UVM 中用于管理和共享数据的机制,但它们有一些区别: 1. 用途: - `uvm_config_db` 主要用于在不同层次的组件之间传递配置信息,例如设置一些参数、控制某些行为等。 - `uvm_resource_db` 通常用于管理和共享全局的资源信息,这些资源可能在整个验证环境中被多个组件访问和修改。 2. 数据类型: - `uvm_config_db` 通常处理特定类型的数据,并且在设置和获取时需要明确指定数据类型。 - `uvm_resource_db` 可以处理多种数据类型,并且在获取时可以进行类型转换。 3. 优先级: - 一般来说,`uvm_resource_db` 中的设置具有更高的优先级。如果在 `uvm_resource_db` 和 `uvm_config_db` 中对同一个变量进行了不同的设置,`uvm_resource_db` 的设置可能会覆盖 `uvm_config_db` 的设置。 4. 作用范围: - `uvm_config_db` 的作用范围通常更局限于特定的组件层次结构。 - `uvm_resource_db` 的作用范围更广泛,更倾向于全局。 总的来说,`uvm_config_db` 侧重于组件之间的配置传递,而 `uvm_resource_db` 更适用于全局资源的管理。在实际使用中,根据具体的需求选择合适的机制来管理和共享数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/391638.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Git][远程操作]详细讲解

1.理解分布式版本控制系统 形象理解:每个⼈的电脑上都是⼀个完整的版本库 这样⼯作的时候,就不需要联⽹了, 因为版本库就在⾃⼰的电脑上 既然每个⼈电脑上都有⼀个完整的版本库,那多个⼈如何协作呢? 例如:…

ajax图书管理项目

bootstrap弹框 不离开当前页面,显示单独内容,让用户操作 功能:不离开当前页面,显示单独内容,供用户操作步骤: 1.引入bootstrap.css和bootstrap.js …

Stegdetect教程:如何用Stegdetect检测和破解JPG图像隐写信息

一、Stegdetect简介 Stegdetect 是一个开源工具,专门设计用于检测图像文件(JPG格式)中的隐写信息。Stegdetect 可以检测多种常见的隐写方法,比如 JSteg、JPHide 和 OutGuess 等。 二、使用Stegdetect检测图像隐写 官方描述&#…

NSS [SWPUCTF 2022 新生赛]file_master

NSS [SWPUCTF 2022 新生赛]file_master 开题,一眼文件上传。 network看看返回包。后端语言是PHP。 除了文件上传还有个查看文件功能。 起手式查询/etc/passwd,发现查询方法是GET提交参数,后端使用file_get_contents()函数包含文件。同时有op…

企业级业务架构设计探讨

引言 在数字化转型的浪潮中,企业业务架构的设计成为了连接企业战略与技术实现的桥梁,其重要性日益凸显。本文探讨企业级业务架构的设计原则、流程、工具和技术实现,并结合具体案例,为读者提供参考。 一、设计原则:奠…

KubeSphere 部署的 Kubernetes 集群使用 GlusterFS 存储实战入门

转载:KubeSphere 部署的 Kubernetes 集群使用 GlusterFS 存储实战入门 知识点 定级:入门级 GlusterFS 和 Heketi 简介 GlusterFS 安装部署 Heketi 安装部署 Kubernetes 命令行对接 GlusterFS 实战服务器配置(架构1:1复刻小规模生产环境,…

新手学习Gazebo+ros仿真控制小车-----易错和自己理解

赵虚左老师讲的很详细,这里只是理一下思路,说下突然出现“新”概念之间的关系。 urdf文件:里面是配置模型的,既有模型的位置、尺寸、颜色,也包含复杂的物理模型信息比如:转动惯量,碰撞box大小等等&#xff…

黑马Java零基础视频教程精华部分_11_面向对象进阶(3)_抽象类、接口、适配器

《黑马Java零基础视频教程精华部分》系列文章目录 黑马Java零基础视频教程精华部分_1_JDK、JRE、字面量、JAVA运算符 黑马Java零基础视频教程精华部分_2_顺序结构、分支结构、循环结构 黑马Java零基础视频教程精华部分_3_无限循环、跳转控制语句、数组、方法 黑马Java零基础视…

书生大模型基础岛-第二关:8G 显存玩转书生大模型 Demo

1.来源 https://github.com/InternLM/Tutorial/blob/camp3/docs/L1/Demo/task.md 2.过程 在 /root/share/pre_envs 中配置好了预置环境 icamp3_demo conda activate /root/share/pre_envs/icamp3_demo创建一个目录,用于存放我们的代码。并创建一个 cli_demo.py …

【hive】HiveSQL中两个json解析函数的使用json路径定位小工具

文章目录 1.HiveSQL中两个json解析函数1)get_json_object2)json_tuple 2.json中key所在层级路径定位小工具 关于json: https://blog.csdn.net/atwdy/article/details/124668815 1.HiveSQL中两个json解析函数 1)get_json_object …

C语言程序设计-[3] 运算符和表达式

C语言的运算符也存在优先级和结合性的概念,在同一表达式中,优先级高的先结合,优先级相同时,就需要考虑结合性(分为左结合性和右结合性——对于单目、三目和赋值运算符表达式,从右至左运算;其他运算符表达式…

【Mind+】掌控板入门教程04 迷你动画片

还记得小时候每天放学必看的动画片吗?还记得那些年陪伴我一起长大的卡通人物吗?勇救爷爷的葫芦娃,我们的朋友小哪吒,相信这些经典的动画形象已经成为了一代人童年的美好回忆。今天就让我们用掌控板来制作一部迷你动画片吧。 项目示…

什么是云原生?

1. 前言 停下手头的工作,让你的同事定义“云原生”一词。你很可能会得到几个不同的答案。 1.1 让我们从一个简单的定义开始: 云原生架构和技术是一种设计、构建和操作在云中构建并充分利用云计算模型的工作负载的方法。 1.2 云原生计算基金会给出了官方…

Godot的节点与场景

要深入的理解节点与场景,我们需要跳出这两个概念来看他。说的再直白一些godot本质就是一个场景编辑器! 场景的概念应该在我们平时看电影看电视时会经常提到,比如某一个打斗的场景,这个场景可能会被设在某一个街道,那么…

数据湖之Hudi

Apache Hudi(Hadoop Upserts Deletes and Incrementals)是一个用于管理大规模数据湖的开源框架,旨在高效地进行数据的插入、更新和删除操作,并支持流式数据的处理。Hudi 的设计目标是解决传统数据湖在数据管理和查询性能上的不足&…

如何将本地代码上传到github

将本地文件上传到GitHub仓库的过程通常包括以下几个步骤: 一 创建GitHub仓库: 如果你还没有一个GitHub仓库,首先需要在GitHub上创建一个新的仓库。登录到你的GitHub账户,然后点击“New repository”按钮,填写仓库的相关…

oracle(19c)用户管理

简介 本文介绍 Oracle 中的用户管理,包含以下内容: 概念介绍 系统用户 解锁 hr 用户 创建用户 用户相关案例 使用 Profile 管理用户口令 Oracle 的认证方式 重置管理员(sys)密码 1. 概念介绍 Oracle 中可以创建多个 Database 实例,…

(STM32笔记)九、RCC时钟树与时钟 第一部分

我用的是正点的STM32F103来进行学习,板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话,用的也是这个板子和教程。 九、RCC时钟树与时钟 九、RCC时钟树与时钟1、时钟树HSE时钟HSI时钟锁相环时钟系统时钟HCLK时钟PCLK1时钟PCLK2时钟RTC时钟独…

后端学习笔记(3)--Maven

1.Maven ​ *专门用于管理和构建Java项目的工具,主要功能有: ​ 1.提供了一套标准化的项目结构 ​ 2.提供了一套标准化的构建流程(编译,测试,打包,发布) ​ 3.提供了一套依赖管理机制 1.简介 ​ *Apache Maven是一…

服务器自动部署网络安装环境

实验环境 rhel7:IP地址为172.25.254.200、主机名为node1.rhel7.org 实验配置 一.kickstart自动安装脚本制作 1.安装图形化生成kickstart自动安装脚本的工具 [rootnode1 ~]# yum install system-config-kickstart 2. 启动图形制作工具 [rootnode1 ~]# system-…