I have following extended sequence class
class mfas_sequence #(type in_item = a_sequence_item , type out_item = d_item) extends base_sequence #(in_item , out_item);
bit enable_err;
constraint c_err {enable_err == 0;}
rand bit [7:0] corrupt_bytes;
`uvm_object_param_utils_begin(mfas_sequence #(in_item, out_item))
`uvm_field_int(enable_err, UVM_DEFAULT|UVM_HEX)
`uvm_field_int(corrupt_mfas, UVM_DEFAULT|UVM_HEX)
`uvm_object_utils_end
extern virtual task body();
(Note: in this task body have a display statement stating "using extended class")
endclass
Following code is inside the test class
class err_test extends x_test;
`uvm_component_utils(rr_test)
bit [8:0] rd_bit_align_data;
mfas_sequence#(a_sequence_item, d_item) m_seq;
function new (string name= "err_test", uvm_component parent = null);
super.new(name, parent);
endfunction // new
function void build_phase(uvm_phase phase);
set_type_override_by_type(base_sequence#(a_sequence_item, d_item)::get_type(), mfas_sequence#(a_sequence_item, d_item)::get_type());
super.build_phase(phase);
endfunction // build_phase
..........
endclass //err_test
Printing factory in the end_of_elaboration phase.
But do not see the overridden sequence when the factory gets printed. This is also confirmed as the print statement from the extended class does not get printed, instead it prints out base class’s display statement.
Have used override before, except the class was not parameterized. Not sure something needs to be done differently for overriding parameterized class.
Can someone please help resolve this.
Thnx