简单说就是字符串的正则匹配,在UVM内部是通过uvm_glob_to_re()和uvm_re_match()这两个函数来实现的,它们是在uvm_config_db背后默默工作的功臣。 在TB调用uvm_config_db::set()的时候,set函数会将参数cntxt和inst_name拼接起来后,调用用uvm_glob_to_re()转换格式,再存到uvm_resource类里的scope字符串变量...
uvm_config_db#(int)::set(this,"env.i_agt.drv","pre_num",100); uvm_config_db#(int)::set(this,"env.i_agt.drv","pre_num",109); 当上面两个语句同时出现在测试用例的build_phase中时,driver最终获取到的值将会是109。像上面的这种用法看起来完全是 胡闹,没有任何意义。 验证中写代码的一个...
从这个例子中可以看到,通过使用成对的set_config_/get_config_方法与uvm_config_db set/get的方法也是相同的,实际上UVM代码对set_config_/get_config_方法的封装中,也是调用了uvm_config_db set/get的方法。这些已经需要淘汰的方法,对于UVM的新用户而言,不算是苦恼,但是对于已经有OVM使用经验的用户来讲,我们还需...
cfg = iconfig::type_id::create("cfg"); uvm_config_db#(iconfig)::set(this,"env.agent.driver","cfg",cfg); uvm_config_db#(iconfig)::set(this,"env.agent.monitor","cfg",cfg); ... endfunction endclass 通过在base_test中进行set之后我们就可以在driver,monitor等组件中使用iconfig类。 cl...
config_db机制用于在UVM验证平台间传递参数。他们通常是成对出现的。set函数时寄信,get函数是收信。 如在某个测试用例的build_phase中可以使用如下方式寄信: uvm_config_db#(int)::set(this, "env.i_agt.drv" "pre_num", 100); 其中第一个参数和第二个参数联合起来组成目标路径,与此路径符合的目标才能收...
对于uvm_config_db来说,在调用get()函数检索数据库的时候,get()函数传递的{cntxt,”.”, inst_name}会作为uvm_re_match()的str的实参,set()函数设置的{cntxt,”.”, inst_name}在经过uvm_glob_to_re()处理后作为uvm_re_match()的实参,这也就是为什么set()参数的inst_name支持正则格式,而get()参数...
解读uvm_config_db中的set和get方法 一、uvm_config_db简介 uvm_config_db的全称是configuration database,它是建立在 uvm_resource_db 之上的便利层,resource database储存的是与scope字符串相关联的name-value对(如下图所示) 。 uvm_config_db可以将scope字符串与组件层次结构中的完整层次结构名称相关联,这样就...
UVM中uvm_config_db非直线的设置与获取 在图3-4所示的UVM树中,driver的路径为uvm_test_top.env.i_agt.drv。在uvm_test_top,env或者i_agt中,对driver中的某些变量 通过config_db机制进行设置,称为直线的设置。但是若在其他component,如scoreboard中,对driver的某些变量使用config_db机制 ...
UVM提供了uvm_config_db的配置类以及几种很方便的变量设置方法来实现在仿真时的环境控制。常见的uvm_config_db的使用方式包括有: 1.传递virtual interface到环境中。 2.设置单一变量值,例如int、string、enum等。 3.传递配置对象(config object)到环境。
config机制 在使用uvm_config_db API set/get时,实际发生了如下的后台操作: uvm_config_db::set通过层次和变量名,将这些信息放置到uvm_pkg唯一的全局变量uvm_pkg::uvm_resources。 全局变量uvm_resources用来存储和释放配置资源信息(resource information)。uvm_resources是uvm_resource_pool类的全局唯一实例,该实例中...