config:引入config_object类,在base_test中进行实例化,然后使用config_db将config_object的指针分别传递给通讯组件A,B,这样就可以通过访问config_object进行通信。过程繁琐。 4.1.2 TLM的定义 TLM是Transaction Level Modeling(事务级建模)的缩写,起源于SystemC的一种通信标准。TLM就是在通信组件A,B之间专门建立一个通...
那么,如果对这么多层次中的变量做出类似上面的单一变量设置,一方面需要更多的代码,这就容易出错,不易于阅读,另外一方面也不易于复用,毕竟底层组件的变量有添加或者减少,通过uvm_config_db::set是无法得知是否设置成功的。因此,如果将每个组件中的变量加以整合,首先放置到一个uvm_object中用于传递,那么将会更有利于整体...
config object包含driver和monitor使用的BFM虚接口句柄。config object是在test中构造和配置的,在这个顶层,把从testbench module传入的虚接口赋值给虚接口句柄。 agent config object还可以包含其他数据成员,来控制agent的配置方式或行为。例如,APB agent的config object具有数据成员,用于设置内存映射并确定通过关联地址映射拉...
上面提到的set_config_/get_config_方法是成对出现的,这些散列的API分别针对于int、string和object类型做出了配置,然而对于其它的类型例如real、数组等类型,无法直接通过API进行传递,而只能封装在uvm_object中进行间接传递。下面是这些API函数的列表: set_config_int(string name, string field_name, int value) set_...
config:所有的config一般直接从uvm_object派生。config的主要功能就是规范验证平台的行为方式。如CPU的driver在读取总线时地址信号要持续几个时钟,片选信号从什么时候开始有效等等。
uvm_component_utils_begin:这个宏与uvm_object_utils_begin相似,它用于同时需要使用factory机制和field_automation机制注册的类。注意主要为了可以自动地使用config_db来得到某些变量的值,而不是在component中使用field_automation机制。 uvm_component_param_utils_begin:与uvm_component_utils_begin宏一样,只是它适用于参...
config object包含driver和monitor使用的BFM虚接口句柄。config object是在test中构造和配置的,在这个顶层,把从testbench module传入的虚接口赋值给虚接口句柄。 agent config object还可以包含其他数据成员,来控制agent的配置方式或行为。例如,APB agent的config object具有数据成员,用于设置内存映射并确定通过关联地址映射拉...
在uvm中,config机制的出现,彻底改善了以上的弊端,通过uvm_cinfig_db #(T)::set()和uvm_cinfig_db #(T)::get()的配对使用,可以在环境构建前从顶层直接对任意底层进行配置,传递的对象可以是virtual interface,单一变量,对象。 范式: uvm_config_db #(T)::set(uvm_component cntxt,string inst_name,string...
UVM(十)之config机制续1 1. 省略get的config config总是set和get成对出现的。在build_phase中,要写上如下的两句话才能把pre_num_max和pre_num_min的值更新为case的设置值: uvm_config_db#(int)::get(this,””,”pre_num_max”,pre_num_max);...
my_transaction派生自uvm_sequence_item,而uvm_sequence_item是uvm_object的派生类。 派生自uvm_object的类 vs 派生自uvm_component的类 主要流程如下: 在main_phase中,先使用randomize将tr随机化,之后通过drive_one_pkt任务将tr的内容驱动到DUT的端口上。在drive_one_pkt中,先将tr中所有的数据压入队列data_q中,...