In reply to Marina.Miao:
but how can I process the left of reqB in next cycle?
You don’t call item_done() for the second item, until you are done with it.
However, it sounds like you have a PHY layer that doesn’t match 1:1 with your higher level transactions, so you might also consider adding a layer? A low level driver that knows nothing about packets, and a layered agent above that which translates.
If each low level 128bit transaction was a separate sequence_item, that would come with a performance penalty and would be bad if you ever wanted to use an emulator. However, your low level sequence item could model multiple beats using an array. You’d be free to send as many, or as few, beats as you wanted to, in a single item to the low level driver.