In order comparison with identical packets from input side

You have a design with two input channels(A & B). There is an output channel C. Packets can be transmitted across A and B at any time. But the packets must go out on C in the same order they were transmitted on their respective channels. How do you verify that the packets came out in the right order if channels A and B have identical packets?
Is there a way to solve this problem without modifying RTL to indicate packet at C originated in A or B and then compare with the correct input queue

In reply to svq:

I see 2 options:
(1) each transaction has a unique ID you could use them.
(2) You are adding in the seq_item an additional dta member indicating the channel it comes from.

In reply to chr_sue:

Thanks Su. I forgot that we could always add extra members in sequence items for verification purpose

In reply to svq:

You have a design with two input channels(A & B). There is an output channel C. Packets can be transmitted across A and B at any time. But the packets must go out on C in the same order they were transmitted on their respective channels. How do you verify that the packets came out in the right order if channels A and B have identical packets?
Is there a way to solve this problem without modifying RTL to indicate packet at C originated in A or B and then compare with the correct input queue
Step 1 :
input A . analysis port
input B. analysis port
output C. analysis port
Step 2 : The monitor is only going to post transition on port after completion of handshake on port.
Crate a common queue for port A , and Port B. Push the transaction in Common queue as it will appear on either port.
Step 3. Whenever a transaction appears on port C, compare it with the first entry of the common queue.
Even though both ports will try to access at the same time, one will get a grant by completion of a handshake.