弄UVM的验证工程的过程种,发现之前resource这块学得不到位,来这补充一下,先补充uvm_config_db,就拿我自己那个工程的代码来举例子说明uvm_config_db是怎么用的。 我的工程中主要是对virtual interface用到了config_db,流程是这样的: 1.在testbench中例化了interface,然后通过config_db::set来把interface这个样的一...
如此一来,完成uvm harness的“左侧”连接,将interface连接到了module上。原有的math_coprocessor_module内部将会包含三个interface的实例: 一般使用uvm_config_db::set的方式将interface传递到验证环境中,在上述的三个interface中无法添加uvm_config_db::set的函数,这是因为systemverilog中无法向一个module中添加function。
第三步,把interface实例化对象传递到uvm。 在run_test()之前,通过uvm里的函数uvm_config_db::set()函数把interface存储到指定的存储路径。 第四步,在uvm里读取interface,并存储到virtual interface里。 从名字上看,config_db是一种存储配置信息的数据库(类似全局变量,可以想象成一个关联数组),要正确存储和读取数据...
注1:在top module中通过config_db机制的set函数设置virtual interface时,set的第一个参数为null; 在这种情况下,UVM会自动把第一个参数替换为uvm_root::get(),即uvm_top; (2.1) set的第一个参数用以说明是哪个component对pre_num_max进行设置,通常是一个uvm_component的指针,一般使用填写this; (2.2) set的第...
set和get方法是静态的,所以必须使用 ::三、一个示例 在test中set:class my_test extends uvm_test;my_config cfg;...function void bulid_phase(uvm_phase phase);...uvm_config_db#(my_config)::set(this,"env","cfg",cfg);...endfunctionendclass 在test.env中get:class my_env extends uvm_env;...
一、uvm_config_db简介 uvm_config_db的全称是configuration database,它是建立在 uvm_resource_db 之上的便利层,resource database储存的是与scope字符串相关联的name-value对(如下图所示) 。 uvm_config_db可以将scope字符串与组件层次结构中的完整层次结构名称相关联,这样就可以通过组件层次来更加方便地访问数据...
5.那么如何set呢? 6.在top_tb 中使用config_db 对interface 进行传递,可以使用绝对路径: 7.如果不使用绝对路径,可以通过静态变量来实现。新建一个类,将验证平台中所有可能的interface 放到此类中作为成员变量: 在top_tb 中为这个类的interface 赋值:
一、config_db机制概述 (1)路径 (2)set和get (3)省略get函数 二、跨层次多重设置 三、非直线获取 四、对通配符的支持 五、保证传递的正确 六、调试 总结 一、config_db机制概述 uvm树形结构的节点,往往需要高层次的组件来下发环境参数,或者通过配置来进行环境模式的变更。例如interface,环境中的driver和monitor...
config_db也可以构建一个嵌套的环境,在不同的层次中给不同的组件来做传参。要注意的是使用uvm_config_db来做配置,一定要先配置,再创建组件,执行build_phase,get config。包括在set interface的时候也是一样,先set再做run_test()。 UVM结构总结 uvm_top是uvm_root类的唯一实例,它由UVM创建和管理,它所在的域是...
一个使用uvm_config_db的经典场景是传递virtual interface。interface在顶层例化,连接testbench和DUT,要想在driver和monitor中驱动和监测DUT就需要将physical interface传递给driver和monitor中的virtual interface。 How:怎么使用和调试uvm_config_db? uvm_config_db使用set()和get()分别完成interface的设置和获取。