UVM driver and sequence_item parameter

is there an issue if we leave the type parameter for agent/driver/sequencer with default values.
For example,

class my_driver extends uvm_driver;

vs

class my_driver extends uvm_driver#(Ethernet_seq_item);

In reply to verif_learner:

The Intention of my_driver is to process a certain type of seq_items. In mots cases it does not make any sense do process uvm_seq_item, because there are not your data members you normally need.
For this reason it is always required to parameterize your driver with your sequence item like this:

class my_driver extends uvm_driver#(my_seq_item);

In reply to verif_learner:

You should look at the source code for uvm_driver. If you so not use the ports provided by the base class, you will have to create your own, or $cast the req and rap items to access the data members of your transactions.

In reply to chr_sue:

In reply to verif_learner:
The Intention of my_driver is to process a certain type of seq_items. In mots cases it does not make any sense do process uvm_seq_item, because there are not your data members you normally need.
For this reason it is always required to parameterize your driver with your sequence item like this:

class my_driver extends uvm_driver#(my_seq_item);

I was thinking from OOPS perspective as base components already have sequence_item declared as the parameter. So, it should be possible to process the derived sequence_items using base class handles. I was just trying to avoid passing user sequence_item.

In reply to dave_59:

In reply to verif_learner:
You should look at the source code for uvm_driver. If you so not use the ports provided by the base class, you will have to create your own, or $cast the req and rap items to access the data members of your transactions.

Base components already have sequence_item declared as the parameter. So, it should be possible to process the derived sequence_items using base class handles. I am not sure if I am going in the right direction.

In reply to verif_learner:

As Dave was staing you Can use the uv_seq_item as your seq_item for the driver. But then you have to provide a type cast using $cast. I do not believe this is a good coding style. In anyway you have to define your own, application specific seq item. And the you should also use it.

In reply to chr_sue:

In reply to verif_learner:
As Dave was staing you Can use the uv_seq_item as your seq_item for the driver. But then you have to provide a type cast using $cast. I do not believe this is a good coding style. In anyway you have to define your own, application specific seq item. And the you should also use it.

Consider the condition when the user sequence_item is replaced with a derived class using factory. In this case, driver continues to work with the derived class even though it was originally designed for the base class.
Anyway, let me think about it. BTW, I am not trying to cut the corner here but just trying to improve my understanding.