UVM BT环境学习

本文介绍了如何在行为测试(BT)环境中复用单元测试(UT)组件,通过uvm_config_db机制在env和testcase(tc)间传递配置。在env中根据tc的特定需求实例化组件,并在子环境(sub_env)中利用配置控制组件创建。此外,展示了如何使用数组实例化多个相同类型的代理(agent),并定义覆盖率模型组件,以便在需要的tc中收集覆盖率。
摘要由CSDN通过智能技术生成

BT环境在复用若干个UT环境组件的基础上搭建而成。可在BT env中例化若干个UT的env为sub_env,作为一种BT复用UT的方法。

一、在env和tc之间常通过uvm_config_db机制传递cfg

因为往往在具体到每条用例的时候,cfg中的参数值才能具体确定,所以需要在tc中实例化一个cfg,并将其set给env,在env中get获取。这时env便可以根据特定tc的不同需求完成自身的config.

二、

三、在sub_env的in_agent里,有时driver等组件是不必要的,可在in_agent_cfg中定义uvm_active_passive_enum类型的参数,然后在in_agent中使用,用于控制其是否需要(create)driver等组件,假设参数名为me_is_active,在me_is_active==UVM_PASSIVE类型时便不create 。in_agent中build_phase中的伪代码即:

if(in_agent_cfg.me_is_active!=UVM_PASSIVE){

        in_agent_driver= type_id_create(...);}

这里in_agent可以通过uvm_config_db::get获取in_agent_cfg,在sub_env中set;sub_env中的in_agent_cfg来自可bt_env,而bt_env中的bt_env_cfg在tc中做uvm_config_db::set。

四、在需要例化多个同类型的agent时,可使用agent数组.如:

in_agent   in_agent_inst[num-1:0];

foreach(in_agent_inst[]){

        in_agent_inst[i]=type_id_create(...);

}

五、可定义覆盖率模型组件为UVM_COMPONENT类型,放在env中。组件内由covergroup、coverpoint等coverage组件构成。在需要收集覆盖率模型覆盖率的tc中,直接调用覆盖率模型组件的sample函数:env.cov_model.coverpoint1.sample();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值