How to make driver non-blocking

HI Sir/Madam,
Could you please provide clarifications about how to make driver non-blocking

In reply to srbeeram:
You can use a queue to store all seq item from sequencer and call item done. Later retrieve the item as per convenience.

In reply to rakeshgehalot:

HI Rakesh ,

thanks for the clarification. could you please let me know why can’t we use uvm_non_blocking_put_port in sequence. uvm_non_blocking_put_imp in driver. please let me know which one is correct way.

In reply to srbeeram:

If the driver has been made non-blocking you are running in serious trouble. The driver implements the interface protocol synchronized by a clock. This is a time-consuming process. The driver sends the sequencer a handshake signal when the protocol has finished for the actual seq_item. This is the indication for the sequencer to generate the nexr seq_item.

In reply to srbeeram:

The UVM sequence-driver API uses something that looks very similar to TLM, but unfortunately slightly different. The driver uses a uvm_seq_item_pull_port which has a blocking get_next_item() and a non-blocking try_next_item()

In reply to dave_59:

Thanks dave and chr_sue for clarifications.