Better way to code?

I have a DUT which has ports A and B . The notifs on port A and B need to have a 1:1 mapping i.e the first notif on portA(A0) and first notif on portB(B0) are part of a bigger packet or in simpler terms notif order of portA should match notif order on portB. A0 can come before B0 or at the same time as B0 but B0 cannot come before A0.

My question is which is a better way to code up the interfaces and agents in such a case .

  1. First approach - Make port A and B as part of 1 interface . Drive A0 , then stall the driver for some time and then drive B0. The main disadvantage I see here is that A1 cannot be sent to DUT before B0 is sent to DUT. But design does allow A1 to occur before B0. Im not sure if driver can handle such a scenario where part of packet 2 is sent before packet 1.
  2. Second approach - Set port A and port B to be in different interfaces and agent. In the virtual sequence which has handles to seq_A and seq_b , always make sure the the notif of A is sent and then trigger notif of B.

WHich is a better way to code these agents ? Any simpler ways to implement this

In reply to dshetty030:

I think you’ve already answered it yourself. The second way will be simpler way to manage transaction and implement the driver.