I have a small question on the sequencer classes namely, ovm_sequencer_param_base #(REQ,RSP) and ovm_sequencer #(REQ,RSP)
Parameter specialization for ovm_sequencer results in specialization for ovm_sequencer_param_base also, shown in the following code:
class ovm_sequencer #(
type REQ = ovm_sequence_item,
type RSP = REQ
) extends ovm_sequencer_param_base #(REQ, RSP)
Assuming one passes a derived class of ovm_sequence_item while creating ovm_sequencer class object, why is it necessary to create specialization class based for ovm_sequencer_param_base also. It would still work even if in the above class definition, the parameters REQ, RSP are not passed to ovm_sequencer_param_base also.
I do understand that a derived class of ovm_sequence_item in ovm_sequencer_param_base can potentially behave differently than ovm_sequence_item. But looking at the
ovm_sequencer_param_base, I would not see such a possibility.