- set/get_config_string和set/get_config_object。它们分别对应uvm_config_db#(string) ::set/get和uvm_config_db#(uvm_object) ::set/get
- config_db比set/get_config强大的地方在于,它设置的参数类型并不局限于以上三种。常见的枚举类型、virtual interface、bit类型、队列等都可以成为config_db设置的数据类型
- UVM提供命令行参数来对它们进行设置
<sim command> +uvm_set_config_int=<comp>,<field>,<value>
<sim command> +uvm_set_config_string=<comp>,<field>,<value>
<sim command> +uvm_set_config_int="uvm_test_top.env.i_agt.drv,pre_num,'h8"
// 在设置int型参数时,可以在其前加上如下的前缀:'b、'o、'd、'h,分别表示二进制、八进制、十进制和十六进制的数据。如果不加任何前缀,则默认为十进制。
//这种选项都需要以逗号分隔的三个参数:组件名,字段名和值。在零时刻,静态uvm_root顶层组件解析上述选项的所有实例,并填充配置数据库。
我们的配置数据库随机层对仿真中命令行随机配置也是开放的,对环境本身不要求有SystemVerilog 随机约束。所有的配置参数都可以从命令行随机化获得,例如:
>simcmd+uvm_set_config_string='*.bus_env,num_actors,inside[1:3]' 或者:
> simcmd +bus_env.num_actors='dist{1:=15,2:=50,3:=35}'
利用这种技术,唯一需要改变源代码就是改变uvm_config_db去访问我们自己的便利层类接口config_rand_db。环境里的API和使用的模型不需要改动