uvm 自定义的只有这样的四种uvm_config_db,那么就不能直接传递数组、枚举、队列等类型的变量。 2.传递数组 2.1在一个component自定义一个int类型的动态数组 (类型可以更改,定宽数组也是一样): 2.2利用自定义的动态数组类型,声明一个句柄: 2.3给动态数组实例化,并调用uvm_config_db::set函数: 2.4在另一个compone...
uvm_config_db #(bit[3:0])::get(this, "", "switch_is_on", packed_switch_is_on); switch_is_on = {>>{packed_switch_is_on}}; 这种方法看上去简单,但是需要多做一个中转变量,而且有个致命缺陷--一旦switch_is_on数组的深度改变,甚至变为动态数组,这set就没法估计packed类型的宽度了。于是我们...
void'(uvm_config_db#(int)::get(this.m_parent, "i_agt.drv", "pre_num", drv_pre_num));`uvm_info("my_model", $sformatf("after get, the pre_num is %0d", drv_pre_num), UVM_LOW)endfunction//或void'(uvm_config_db#(int)::get(uvm_root::get(), "uvm_test_top.env.i_agt...
在OVM时代只能通过将virtual interface包含在uvm_object中,然后通过uvm_object进行间接传递才可以实现virtual interface的传递,而到了UVM时代,uvm_config_db set/get则提供了显著的便利。 uvm_resource_db的使用 很多有经验的UVM用户,已经习惯于使用uvm_config_db来进行配置,而对它的父类uvm_resource_db的特性了解较少...
uvm_config_db::set()通过层次和变量名,将这些信息放置到uvm_pkg唯一的全局变量uvm_pkg::uvm_resources。 全局变量uvm_resources用来存储和释放配置资源信息(resource information)。uvm_resources 是uvm_resources_pool类的全局唯一实例,该实例中有两个resource数组用来存放配置信息, 这两个数组中一个由层次名字索引,...
第三步,把interface实例化对象传递到uvm。 在run_test()之前,通过uvm里的函数uvm_config_db::set()函数把interface存储到指定的存储路径。 第四步,在uvm里读取interface,并存储到virtual interface里。 从名字上看,config_db是一种存储配置信息的数据库(类似全局变量,可以想象成一个关联数组),要正确存储和读取数据...
field automation机制提供了与变量、数组、队列等相关的宏,用于实现自动化处理。在打印信息控制方面,UVM提供冗余度阈值设置、信息严重性重载、UVM_ERROR数量控制等机制,以及断点功能、将输出信息导入文件等功能。config_db机制用于在UVM验证平台间传递参数,实现层次结构中参数的设置与获取,同时支持路径、...
interface 传递 //interface 传递 interface intfl; logic enable= O; endinterface class compl extends uvm_component; `uvm_component_utils(compl) virtual intfl vif; function void build_phase(uvm_phase phase); if (!uvm_config_db # (virtual intfl)::get(this,"", "vif", vif)) begin ...
我个人觉得UVM 重要的部分(特点的部分):1) factory 机制( override config_db )2) TLM 传递3phase4) sequence-sequencer以及virtual seq/sqr内容中的截图基本来自于UVM源代码、书自带的例子和uvm1.1应用指南及源代码分析这个PDF里的。需要结合书(UVM实战(卷1)第1 版)来看这个笔记。第 3章 UVM基础3.1 uvm_...
通过uvm_config_db完成了各个接口从TB(硬件一侧)到验证环境mcdf_env(软件一侧)的传递。理论上可以移除所有的set_interface()函数,完全使用uvm_config_db的set和get方法,从而使mcdf_env与其各个子组件之间相互独立。 调用run_test()函数完成test的选择、例化和开始测试。