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/