Active path during register read access

Stumbled into a data corruption during a register read.

The adapter’s bus2reg function is called twice during the transaction. This behaviour is correct as the uvm_sequence_items of both the monitor and the driver (REQ) are broadcasted. But the driver should provide the final data for the adapter to translate.

***

register read()’s active path:
reg.read() => sequencer => register adapter => driver => adapter => sequencer => reg.read()

Instead of duplicating the monitor’s logic to decode the protocol, I recommend to use an UVM configuration database to propagate the decoded data from the monitor to the driver.

Leave a comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.