Reputation: 4789
I am a beginner in UVM. So far I was able to create the following environment for my DUT.
Agents with monitors, drivers and sequences for all of the input-output interfaces from my DUT. A top level UVM env. Sequences to send valid data to DUT. I yet to implement scoreboard.
I'm having some trouble to understand how to handle scenarios like following:
For a tb-dut interface, TB needs to wait for an event (or transaction) from DUT. Once it receives the transaction, TB needs to send back a response. What is the best way to implement this? How can I monitor DUT transaction from sequence? My agents have monitors which will monitor any new output signals from DUT. So, do I need to somehow bring this data from agent's monitor to my test/sequence class? I know that monitor has an analysis port and it can be used to send received data to scoreboard for checking. So, do I need to use the same port to read DUT output data, create valid response and send it to DUT?
Thanks!
Upvotes: 0
Views: 3897
Reputation: 943
This can be done using uvm_object.
Upvotes: 0
Reputation: 42698
This is know as a slave sequence or responder. The protocol is as follows
This is explained in more detail in the Verification Academy UVM Cookbook.
Upvotes: 6