UVM中config_db的使用(一)
学习笔记:config_db机制的使用学习产出:config_db机制config_db机制用于在UVM验证平台间传递参数。通常set和get成对出现。例:uvm_config_db#(int)::set(this,”env.i_agt.drv”,”pre_num”,100);//其中第一个括号指定传递参数的类型。第二个括号的第一个参数是uvm_component实例的指针;第二个参数是相对该实例
学习笔记:
- config_db机制的使用
学习产出:
config_db机制
config_db机制用于在UVM验证平台间传递参数。通常set和get成对出现。
例:uvm_config_db#(int)::set(this,”env.i_agt.drv”,”pre_num”,100); //其中第一个括号指定传递参数的类型。第二个括号的第一个参数是uvm_component实例的指针;第二个参数是相对该实例的路径;第三个参数表示一个记号,用以说明这个值传给目标中的哪个成员的,仅做标识用,类似于对暗号,你可以任意指定字符串;第四个参数是要设置的值。总路径由第一个参数和第二个参数组合而来。
例:uvm_config_db#(int)::get(this,””,”pre_num”,pre_num); //一般地,第一个参数如果是this,第二个参数可以是空的字符串,第三个参数与set保持一致,第四个参数即要设置的变量。
若第一个参数为null,则与uvm_root::get()等价,即uvm_top。那么第二个参数的相对路径就要从uvm_test_top开始延伸。
特殊情况时可以仅出现set,不出现get,在build_phase中调用super.build_phase()即可自动完成get操作。但必须满足两个条件:1.被传参所在的component实例必须使用uvm_component_utils宏注册。2.被传参变量必须使用uvm_field_int宏注册。3.set函数设置时第三个参数必须要与get函数中的变量名字相一致。即不要使用稀奇古怪的标记,养成标记与变量同名的习惯。
如果低层和高层同时向同一地点发送,则高层优先,即在get操作之前,若有两个set函数已完成,则仅接收传递来源UVM层次高的那个参数,即越靠近根节点uvm_top的层次越高,优先级越高。如果从同一层次向同一目的地发则取最新的。
更多推荐
所有评论(0)