06、UVM的config机制

目录

一、概述


一、概述

在验证环境的创建过程build_phase中,除了组件的实例化,配置也是必不可少的。

为了验证环境的复用性,通过外部的参数配置,使得环境在创建时可以根据不同参数来选择创建的组件类型、组件实例数目、组件之间的连接以及组件的运行模式等。)即在创建组件之前,先做好配置)

在更细致的环境调节中有更多的变量需要配置,例如for-loop的阈值、字符串名称、随机变量的生成比重等。

比起重新编译来调节变量,如果在仿真中可以通过变量设置来修改环境,那么就更灵活了,而UVM的config机制正提供了这样的便利。

UVM提供了uvm_config_db配置类以及几种方便的变量设置方法来实现仿真时的环境控制,常见的uvm_config_db类的使用方式包括:

  • 传递virtual interface到环境中  )SV中通过set interface传递)
  • 设置单一变量值,例如int、string、enum等
  • 传递配置对象(config object)到环境

传递形式:

uvm_config_db #(T)::set(uvm_component cntxt, string inst_name, string field_name, T value);
uvm_config_db #(T)::get(cntxt, string inst_name, string field_name, in out T value);

//#(T) 参数类 ,第7章  T是参数类型,可能是上面三种类型的任意一种
// set  从顶层环境中做set
// get  从底层环境中做get
//(uvm_component cntxt 实例, string inst_name 实例名称, string field_name 实例的某一变量, T value 值);

//in out T value  :  get 时要拿出值,所以用in out 

二、interface传递

interface传递可以很好地解决了连接硬件世界和软件世界。而在之前SV验证模块中,虽然SV可以通过层次化的interface的索引)set interface)来完成了传递,但是这样不利于软件环境的封装和复用。UVM的uvm_comfig_db使得接口的传递和获取彻

UVM中的config_db机制是一种方便的配置管理机制,可以在测试用例中动态地配置不同组件之间的参数。它允许用户将配置信息存储在单个数据库中,并在需要时从中检索。 config_db机制的核心是一个名为uvm_config_db的类,它提供了一些静态方法,用于将配置信息存储在数据库中、从数据库中检索配置信息和删除配置信息。每个配置信息都有一个名称和一个通用的数据类型,可以是任意类型的数据结构,包括简单的整数和字符串,以及更复杂的对象和指针。 config_db机制可以用于多种情况,例如: 1. 在测试用例中配置测试环境中的组件; 2. 在测试用例中配置测试用例本身; 3. 在测试用例中配置测试运行时环境(如时钟周期)。 下面是一个例子,展示如何使用config_db机制来配置两个组件之间的参数: ```systemverilog // 存储配置信息 uvm_config_db#(int)::set(null, "env.agent1.config", "data", 100); uvm_config_db#(string)::set(null, "env.agent2.config", "data", "hello"); // 从数据库中检索配置信息 int my_int; string my_string; uvm_config_db#(int)::get(null, "env.agent1.config", "data", my_int); uvm_config_db#(string)::get(null, "env.agent2.config", "data", my_string); ``` 在上面的例子中,我们使用uvm_config_db类的set方法将一个整数值和一个字符串值存储在了数据库中,并使用get方法从数据库中检索这些值。注意,我们使用了不同的名称("env.agent1.config"和"env.agent2.config")来区分不同的配置信息。这些名称应该在测试用例中被定义为常量或宏,以便在整个测试用例中使用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值