Hi All,
It seems that there is a problem for automatically updating components fields registered with uvm_field_* macros.
It works fine if the field is of type int, but it fails if the field is of type enum.
Do I miss something?
(I tested this code with both UVM 1.1-d and UVM 1.2)
class hs_driver extends uvm_driver #(hs_packet);
hs_type_t driver_type;
int my_param = 10;
`uvm_component_utils_begin (hs_driver)
`uvm_field_enum (hs_type_t, driver_type, UVM_ALL_ON)
`uvm_field_int (my_param, UVM_ALL_ON)
`uvm_component_utils_end
[...]
endclass: hs_driver
class test_bench extends uvm_component;
`uvm_component_utils (test_bench)
hs_driver host;
hs_driver device;
[...]
virtual function void build_phase(uvm_phase phase);
super.build_phase(phase);
uvm_config_db#(hs_type_t)::set (null, "*.device", "driver_type", DEVICE);
uvm_config_db#(int)::set (null, "*.host", "my_param", 888);
host = hs_driver::type_id::create ("host", this);
device = hs_driver::type_id::create ("device", this);
endfunction: build_phase
endclass: test_bench
Printing test topology:
-------------------------------------------------------------
Name Type Size Value
-------------------------------------------------------------
uvm_test_top simple_test - @1863
mtb test_bench - @1939
device hs_driver - @2089
rsp_port uvm_analysis_port - @2162
recording_detail integral 32 'd1
seq_item_port uvm_seq_item_pull_port - @2130
recording_detail integral 32 'd1
driver_type hs_type_t 32 HOST -> should have been DEVICE!
my_param integral 32 'ha
recording_detail integral 32 'd1
host hs_driver - @2024
rsp_port uvm_analysis_port - @2095
recording_detail integral 32 'd1
seq_item_port uvm_seq_item_pull_port - @2058
recording_detail integral 32 'd1
driver_type hs_type_t 32 HOST
my_param integral 32 'h378 -> In this case (for an integer) the field has been updated followin uvm_config_db
recording_detail integral 32 'd1
recording_detail integral 32 'd1