Synchronism between master and agent

What is the best way to synchronize them so that when Address and Data are sent from master it is reflected instantaneously at the slave, generating a resposne ?

In reply to haithamx15:

There is no external synchronization between a master and a slave. They need to be two completely separate agents.

The driver of a slave agent will act very similar to a simple RTL slave device. It will monitor the bus activity, and when a targeted transaction is seen, it will respond with a simple, valid response. This will typically be as a memory write/read.

However, the slave driver differs from the master driver in that a sequence_item is NOT required. After the slave driver detects the targeted transaction, it will do a try_get for the next sequence_item. If the slave agent wants to send a specific response such as an error, data-mismatch, etc., then the sequence_item will contain this information. If there is no sequence_item, the slave responds normally.

There are even more complex architectures where the slave driver sends a response containing the transaction information to the slave sequence which can be processed, but that is very advanced.

In reply to cgales:

In reply to haithamx15:
There is no external synchronization between a master and a slave. They need to be two completely separate agents.
The driver of a slave agent will act very similar to a simple RTL slave device. It will monitor the bus activity, and when a targeted transaction is seen, it will respond with a simple, valid response. This will typically be as a memory write/read.
However, the slave driver differs from the master driver in that a sequence_item is NOT required. After the slave driver detects the targeted transaction, it will do a try_get for the next sequence_item. If the slave agent wants to send a specific response such as an error, data-mismatch, etc., then the sequence_item will contain this information. If there is no sequence_item, the slave responds normally.
There are even more complex architectures where the slave driver sends a response containing the transaction information to the slave sequence which can be processed, but that is very advanced.

I’m new to UVM, and I was given a task to verify OCP, pretty complex. with 3 seperate phases, a lot of configuration parameters …etc… I made a verification plan, before even learning UVM. If you have past experience in verifying features of a certain protocol. how would you start?

In reply to haithamx15:

Best is to generate a UVM environment automatically and then focus on the other specific things like setting configuration data etc.
There are several products on the market, commercial and free-of-charge, like EasierUVM code generator which provides you also with coding guidelines.
See here
https://www.doulos.com/knowhow/sysverilog/uvm/