There are several UVM macros for which the first argument must be the equal to containing class. These macros are:
- All UVM object and component utility macros
uvm_field_utils_beginuvm_sequence_library_utilsuvm_add_to_seq_libuvm_set_super_typeuvm_register_cb
class my_uvm_component extends uvm_component;
`uvm_component_utils(some_other_class)
...
endclass
class my_uvm_component extends uvm_component;
`uvm_component_utils(my_uvm_component)
...
endclass
If the containing class is parameterized, the parameters must also be passed to the macro:
class my_uvm_component#(int size_param = 8) extends uvm_component;
`uvm_component_param_utils(my_uvm_component)
...
endclass
class my_uvm_component#(int size_param = 8) extends uvm_component;
`uvm_component_param_utils(my_uvm_component#(size_param))
...
endclass
Rule Configuration
This rule can be disabled for your project, or its severity and parameters can be modified in the project linting settings. Alternatively, it can be manually configured with the following template:
147/severity/${path}={error|warning|info|ignore}