Debugging sequence/driver communication

In reply to harishb_vlsi:

Several comments which may or may not help:

  • Why do you use uvm_sequence_item for your driver? The driver should be typed to the expected transaction so you don’t have to go use $cast. This typing also ensures that only the appropriate sequencer is connected to the driver.
  • I would move the item_done() call to outside of the if statement. This will prevent the driver from hanging if the #cast fails.
  • Don’t wrap your randomize() call in an assert statement. Instead, explicitly check if the return value is 0 or 1. This is because assert statements can be removed by the simulator in some cases.
  • Try using try_next_item() instead of get_next_item(). This is the non-blocking method that you can use to figure out when there is no item available from the sequencer.

Don’t use objections. They should only be used in your test and not in your sequences.