Advance dmstatus.resumeack by one cycle #2412
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related issue:
Type of change: bug report
Impact: no functional change
Development Phase: implementation
Release Notes
When a debugger writes to resumereq, the request passes through an AsyncQueue to dmInner. If a fast debugger writes to resumereq and then reads from dmstatus all in the same dmInner clock cycle, the resumereq has not yet been reflected in the dmstatus read value. This PR advances resumeack by one cycle to ensure the proper value is read even in this case.
dmInner stores the resume status in a flag called resumeReqRegs. This is set from dmOuter when a resume is requested. The Debug Spec says that the dmstatus any/allresumeack bits are cleared immediately after resumereq. To ensure this, the read value of resumereq is advanced by one cycle by including the combinatorial resumereq signal in the read value rather than just the registered resumeReqRegs.
Still, there is a requirement that the AsyncQueue delay through innerCtrl is not any longer than the AsyncQueue delay through the dmiXing TL crossing.