In reply to dave_59:
`define param_value
parameter value= `param_value
class driver1#(int W = 1 ) extends uvm_component;
`uvm_component_utils(driver1#(W))
function new ( string name = "driver1" , uvm_component p = null);
super.new(name, p);
endfunction
function void build_phase(uvm_phase phase);
..... some statements .....
endfunction
task reset_phase(uvm_phase phase);
endtask : reset_phase
task main_phase(uvm_phase phase);
......... some statements .....
endtask : main_phase
endclass
class driver2#(int W= 0) extends driver1;
`uvm_component_utils(driver2#(W))
function new ( string name = "driver2" , uvm_component p = null);
super.new(name, p);
endfunction
function void build_phase(uvm_phase phase);
...... some statements .....
endfunction
task reset_phase(uvm_phase phase);
endtask : reset_phase
task main_phase(uvm_phase phase);
......... some statements .....
endtask : main_phase
endclass
class agent#(int W= 0) extends uvm_agent;
`uvm_component_utils(agent#(W))
driver1#(value) c3;
function new ( string name ="agent", uvm_component p = null);
super.new(name, p);
endfunction
virtual function void build_phase(uvm_phase phase);
c3 = driver1#(value)::type_id::create("c3", this);
endfunction
endclass
class env#(int W= 0) extends uvm_env;
`uvm_component_utils(env#(W))
agent#(value) a;
function new ( string name ="env", uvm_component p = null);
super.new(name, p);
endfunction
virtual function void build_phase(uvm_phase phase);
a = agent#(value)::type_id::create("a", this);
endfunction
endclass
class base_test extends uvm_test;
`uvm_component_utils(base_test)
env e;
function new ( string name = "test", uvm_component p = null);
super.new(name, p);
endfunction
virtual function void build_phase(uvm_phase phase);
e = env#(value)::type_id::create("e", this);
endfunction
endclass
class test extends base_test;
`uvm_component_utils(test)
function new ( string name = "test", uvm_component p = null);
super.new(name, p);
endfunction
virtual function void build_phase(uvm_phase phase);
set_type_override_by_type( driver1#()::get_type(), driver2#()::get_type());
super.build_phase(phase);
endfunction
endclass
module top;
initial begin
run_test("test");
end
endmodule
I am passing param_value from command line.
if i am using uvm_component_param_utils driver2 is not overiding driver1. But if i use
uvm_component_utils it working but the warning comes.