-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
RoCC Core Clock Gating Bug #3695
Comments
@jerryz123 I'm attempting to put up a pull request for this fix, but unfortunately am running into permission issues trying to push my branch to the remote repository. The fix is simple, I've placed it below for your reference.
|
@moniriki you need to fork the repo through github, then push your branch to your fork, then open a PR from your fork into the base repo. |
PR posted here: #3696. Thanks Jerry |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Type of issue: bug report | feature request | other enhancement
Bug report
Impact: no functional change | API addition (no impact on existing code) | API modification | unknown
Functional change
Development Phase: request | proposal
Request
Other information
The current clock gating logic inside the Rocket Cores do not take into account the RoCC busy signal. As a result, there are times when the RoCC request is being responded to but the core clock gating kicks in and doesn't allow the response to be registered inside the core. This results in the core hanging.
My suggestion here is to change clock_en_reg to also include the io.rocc.busy signal inside RocketCore.scala. I can put up a pull request for this bug fix if required.
What is the current behavior?
Clock gate enable gets deasserted while RoCC is busy.
What is the expected behavior?
Clock gate logic needs to account for RoCC custom instructions before gating the core clock.
Waveform below shows the current bug.
The text was updated successfully, but these errors were encountered: