TLMs between sequencer and driver?

Hello all,

Can I have 3 TLMs connected between a single sequencer and a single driver in UVM? In other words, I want 3 pipes/TLM connections to send three different kind of packets to the same driver from the same sequencer. Or in other words, can a sequencer has 3 exports? Can a diver has 3 ports, so that they can be connected with each other? If not, then can 3 sequencers be connected to the same driver at the same/single port or driver?

Please guide, thanks

You can certainly do this if the 3 packet types are extend from the same base class, even if it is uvm_sequence_item. But you will need to describe the arbitration you want between the packets if they are all going to be sent to the same driver over presumably the same interface.

Yes you can do it if all packets are derived from same base class using arbitration. But if packets are entirely different then you will need different sequencer and driver for each packet. I also came across the same case where I tried to connect multiple sequencers to single driver using uvm_sequence_item_pull_port and it worked for me.But I dont know about methodological correctness of this implementation

As Dave and Tavagid correctly point out, you can use one TLM connection (seq_item_pull_port/export) to pass different packets as long as they are all extensions of the same base type.

Your question was can you have three different TLM connections between a single sequencer and a single driver. The answer is no, because the sequencer and driver base types only include a single seq_item_pull_port/export, which are themselves parameterized by the transaction type. I wouldn’t recommend trying to extend the base components to add the additional ex/ports, since there’s a lot of “under the hood” stuff going on that you’d have to replicate as well. If you really want three different transaction types going from sequencer to driver, then you’d need three different sequencer/driver pairs, each parameterized by the appropriate type. The drivers could all be connected to the same interface to drive the DUT, if that’s ultimately what you’re after.

Maybe a description of why you think this arrangement is necessary would help us come up with other alternatives.

-Tom