Description:
In uvma_obi_memory_mon_c, the R-channel monitor thread can incorrectly associate an rvalid response observed after a reset with an outstanding transaction sampled before reset. This can result in uvma_obi_memory_mon_trn_c objects containing mismatched address/data (or wrong access ordering).
Expected behavior:
When reset_n is asserted:
- all outstanding pre-reset transactions should be flushed/aborted, and
- the monitor should not match a post-reset
rvalid to a pre-reset request.
Actual behavior:
mon_chan_r_post_reset() pops an outstanding transaction from cntxt.mon_outstanding_reads_q and then waits for rvalid in mon_chan_r_trn(). If reset is asserted while mon_chan_r_trn() is waiting, the task does not abort. After reset deassertion, the next rvalid (from a new post-reset request) can be incorrectly matched to the pre-reset transaction.
How to reproduce:
- Configure OBI agent in SLV mode with non-zero randomized
rvalid_latency.
- Issue one request so it is pushed into
mon_outstanding_reads_q.
- Assert
reset_n==0 after the A-phase is observed but before the corresponding rvalid.
- After reset is released, issue a new transaction.
- Observe that the monitor can report a response for the old transaction using the
rvalid of the new one (mismatched ordering/data).
Impact:
Scoreboards/checkers relying on uvma_obi_memory_mon_trn_c may report false data mismatches or “phantom” transactions around reset boundaries.
Description:
In
uvma_obi_memory_mon_c, the R-channel monitor thread can incorrectly associate anrvalidresponse observed after a reset with an outstanding transaction sampled before reset. This can result inuvma_obi_memory_mon_trn_cobjects containing mismatched address/data (or wrong access ordering).Expected behavior:
When
reset_nis asserted:rvalidto a pre-reset request.Actual behavior:
mon_chan_r_post_reset()pops an outstanding transaction fromcntxt.mon_outstanding_reads_qand then waits forrvalidinmon_chan_r_trn(). If reset is asserted whilemon_chan_r_trn()is waiting, the task does not abort. After reset deassertion, the nextrvalid(from a new post-reset request) can be incorrectly matched to the pre-reset transaction.How to reproduce:
rvalid_latency.mon_outstanding_reads_q.reset_n==0after the A-phase is observed but before the correspondingrvalid.rvalidof the new one (mismatched ordering/data).Impact:
Scoreboards/checkers relying on
uvma_obi_memory_mon_trn_cmay report false data mismatches or “phantom” transactions around reset boundaries.