-
Notifications
You must be signed in to change notification settings - Fork 554
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[dv] Add spurious responses to memory agent #2185
Conversation
I still need to do a full regression with this version but regressions with earlier prototypes were working. |
dv/uvm/core_ibex/common/ibex_mem_intf_agent/ibex_mem_intf_monitor.sv
Outdated
Show resolved
Hide resolved
dv/uvm/core_ibex/common/ibex_mem_intf_agent/ibex_mem_intf_monitor.sv
Outdated
Show resolved
Hide resolved
|
||
while(!(vif.monitor_cb.request && vif.monitor_cb.grant)) begin | ||
|
||
if (vif.monitor_cb.rvalid && !vif.monitor_cb.spurious_response) begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The !spurious_response
bit seems slightly surprising here. Should the monitor really care about whether the response was the one we were waiting for? I guess the problem is the outstanding_accesses
counter, but maybe that really belongs in the driver or the sequence rather than the monitor, since those components know whether they have anything "in flight".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is partially down to laziness on my part but pre this change spurious responses didn't exist and downstream users of the monitor (i.e. those things connecting to the item_collected_port
) were expecting everything they receive to represent an actual transaction that occurred (in particular the co-sim scoreboard). If we output spurious responses here we'll need all downstream users of the monitor to filter out spurious responses. This felt like a cleaner design.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, that feels reasonable. Maybe an example of where "the principled solution" is also the wrong one :-)
dv/uvm/core_ibex/common/ibex_mem_intf_agent/ibex_mem_intf_response_seq_lib.sv
Show resolved
Hide resolved
0858603
to
9dace64
Compare
A spurious response is one that isn't associated with any on-going request. With this new feature the memory agent can generate them randomly when the interface is idle (i.e. there are no outstanding requests).
9dace64
to
ae13c5f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the responses. This looks sensible to me.
A spurious response is one that isn't associated with any on-going request. With this new feature the memory agent can generate them randomly when the interface is idle (i.e. there are no outstanding requests).