Uvm_analysis_port and transaction class

In reply to dave_59:

In reply to verif_learner:
It does not need to be a uvm_sequence_item, a class is usually more efficient since you are just passing a handle through and not the data.
Usually you are reconstructing a transaction sent by the driver, so that is why you see people using the same class type for analysis ports.

For the sake of argument, is it possible to pass a structure too?

On your second point about reconstruction, I would like to differ.
The transaction sent to driver typically tends to have a lot of rand variables for randomization. Some of them may be abstract variables to control the randomization process.
All this is unnecessary for a transaction that goes from monitor to scoreboard, as we are collecting data that is post randomization and hence we can simplify a bit I guess.