1. 使用+UVM_CONFIG_DB_TRACE和+UVM_RESOURCE_DB_TRACE命令行参数 UVM库在Command Line上提供了+UVM_CONFIG_DB_TRACE和+UVM_RESOURCE_DB_TRACE命令行参数,当运行仿真命令时,如果带上上述的参数,那么在log中会打印出对资源库的存和取的信息。+UVM_CONFIG_DB_TRACE用于uvm_config_db进行的存取,+UVM_RESOURCE_DB...
uvm_config_db机制还为资源加上了scope限制资源的访问,保证数据安全;precedence设置优先级;override资源重写;record记录资源访问历史用于debug等功能。 这里的资源可以是scalar objects class handles queues lists virtual interfaces 等。 队列,数组类型 对于队列,数组的传递,int val_q[$]直接通过uvm_config_db#(int) ...
1 uvm_config_db#(int)::set(this, "env.i_agt.drv", "pre_num", 7); 设置完毕后可以使用如下方式,在new以后,获取到数字3,但是在super.build以后,自动get(uvm_config_db#(int)::get...), 获取到数字7. 1 2 3 4 5 6 7 virtual function void build_phase(uvm_phase phase); `uvm_info("...
5. 调试流程最佳实践 FactoryConfigEnvTestFactoryConfigEnvTestprint_topology()查看结构set虚拟接口传递配置创建组件返回实例完成构建
uvm_component::print_config():打印当前组件可见视角下的所有配置资源信息 uvm_component::print_override_info():打印当前组件的工厂重载信息 uvm_factory::print():打印全局工厂中注册的类型以及instance和type重载信息 uvm_factory::debug_crea...
build_phase的内容,一般有:利用config_db set/get传递参数;实例化成员变量。 build_phase是一个function,不消耗仿真时间;main_phase是一个task,消耗仿真时间 两大特性带来的限制: uvm_component:只能使用copy函数,不能使用clone函数。 因为clone出来的实例没有指定parent参数 ...
uvm_config_db function void my_driver:: build_phase(uvm_phase phase); //将顶层实例化的interface指针传递给driver的insterface super.build_phase(phase); if(!uvm_config_db# (virtual my_if)::get(this, "", "vif", vif)) `uvm_fatal("my_driver", "virtual interface must be set for vif ...
*查看源码可知,get_config实际上调用的是uvm_component中的get_config_object函数;而该函数最终调用的是uvm_config_db的get方法。 –uvm_object uvm_object类是所有UVM数据和层次化类的基类。它主要的角色是为像create/copy/compare/print/record这样的通用操作来定义一系列method。从uvm_object派生出来的类必须执行像...
uvm_component::print_config():打印当前组件可见视角下的所有配置资源信息 uvm_component::print_override_info():打印当前组件的工厂重载信息 uvm_factory::print():打印全局工厂中注册的类型以及instance和type重载信息 uvm_factory::debug_create_by_type():打印工厂根据参数实际会创建的类型 ...