6-UVM configuration机制

UVM configuration机制

什么是uvm configuration机制

  • 是一个强大的属性配置工具
    1 可以传递值;
    2 可以传递对象;
    3 可以传递interface(virtual);
  • 特点
    1 作为半个全局变量,避免全局变量带来的风险;
    2 高层组件可以通过该机制实现在不改变代码的机制下更改它所含子组件的变量;
    3 各个层次都可使用;
    4 支持通配符和正则表达式;
    5 支持用户自定义的数据类型;
    6 可以在仿真运行的过程中进行配置;

基本原理

  • 它的实现由两部分构成
    1 添加配置资源;
    2 获取配置资源;
    在这里插入图片描述

如何使用configuration机制

添加配置资源函数

uvm_configure_db#(type)::set(
	uvm_component	cntxt,//配置资源的源组件
	string			instance_name,//配置资源的目标对象所属组件,可以使用通配符和正则表达式
	string			field_name,//配置资源的ID
	T				value//资源值,
	);

获取配置资源函数

uvm_configure_db#(type)::set(
	uvm_component	cntxt,//配置资源的源组件
	string			instance_name,//配置资源的目标对象所属组件,可以使用通配符和正则表达式
	string			field_name,//配置资源的ID
	T				value//目标变量或对象
	);

configuration机制的使用就是set函数和get函数的过程

  • 配置sequence产生transaction的数量
  • 配置interface
  • 配置用户自定义的config

如何对单个变量使用configure机制

  1. 定义控制变量或者控制对象;
  2. 在使用这些控制变量之前,使用uvm_config_db#(type)::get来从高层获取配置
  3. 在使用这些控制变量或对象来配置平台或控制行为;
  4. 在高层使用uvm_config_db#(type)::set来配置这些控制变量或对象
    在这里插入图片描述

如何对interface使用configure机制

  1. 首先根据DUT构建interface;
  2. 为driver添加virtual interface和驱动DUT
    在这里插入图片描述
    将事务信息分解为pin级信号驱动给DUT
    在这里插入图片描述
  3. 实例化DUT
    新建top.sv文件,将其他平台组件include,建立顶层module,进行各种连接,将实例化interface配置给virtua interface
    在这里插入图片描述

如何对多个信号的打包使用configure机制

对同一组件的所有配置打包成一个配置对象

  • 配置流程图
    在这里插入图片描述
  1. 创建agent_config类
    在这里插入图片描述
  2. 创建env_config类
    在这里插入图片描述
  3. 向my_test添加env_config,并将该配置对象配置给env
    在这里插入图片描述
    在这里插入图片描述
  4. 在env当中添加配置项,从testcase获取配置,再使用该配置项配置agent
    在这里插入图片描述
  5. 在agent中添加配置项,从env获取配置,并使用该配置项配置driver
    在这里插入图片描述
  6. driver从上层获取配置信息
    在这里插入图片描述
  7. 在顶层配置virtual interface
    在这里插入图片描述

过程总览

  1. 在top层实例化interface,并将该interface传递给testcase;
  2. testcase获取,config get 将其放入m_env_cfg中,配置完毕后config set将其传递给env_cfg;
  3. env会使用config get获取从testcase传递过来的m_env_config,使用完毕之后,使用config set传递给m_agent_cfg;
  4. agent使用config get获取,使用完毕之后config set传给driver;
  5. 平台最底层driver使用config get获取这些配置,并使用配置
  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值