Driver , Sequencer N Sequence Parameterization

Hi all ,

I Observe that driver , sequencer N sequence are all parameterized to Same user_sequence_item .

**I was wondering why ?
**

With driver N sequencer since the TLM Port N Imp type Need to be Matching types , I understand that

**seq_item_port N seq_item_export Need to be Same type !!

As a result they are of Same user_sequence_item type !!
**

EDIT: But I am curious why is sequence N sequencer parameterized to same data type ?

Unlike TLM Connections of Driver N Sequencer , sequencer N sequence are not connected

In reply to MICRO_91:

The parameters of the uvm_sequencer are passed to the TLM parameterized seq_item_export. That is the only way they can be passed.

In reply to dave_59:

Hi Dave ,

Yes I got that part . To have Type Compatibility between the seq_item_port N seq_item_export Connection the Type Parameters must match.

Hence the driver N sequencer have same type Parameterization.

But the uvm_sequence is parameterized to same user_seq_item as well.
I didn’t get this part . What if the user_sequence doesn’t have same parameterization ?

( Since the sequence N sequencer aren’t connected via TLM Connections in driver N sequencer )

In reply to MICRO_91:

The sequence/sequencer/driver code is quite convoluted to follow. Instead of using pure TLM protocol, or adapting TLM to meet the requirements of the sequences, they branched and created a separate sequencer API.

I don’t think a sequence has to have the exact same parametrization, but I do think it has to have a uvm_sequence_item in the same inheritance line to be passed with incompatible casting.

In reply to dave_59:

Hi Dave ,

I was referring to SV LRM 6.22 Type Compatibility which describes Matching Types and Equivalent Types

During the TLM connection b/w driver and sequencer ( OR any other TLM Connection in general ) ,

Are the type Parameters required to be Matching types OR Equivalent Types ?

In reply to Have_A_Doubt:

Parametrized classes require matching types. (Section 8.25 Parameterized classes of the 180-2017 LRM). Equivalent types are only for dealing with packed and unpacked array of the same sizes with different ranges.