-
Notifications
You must be signed in to change notification settings - Fork 24
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
Pending NMI, but going to sleep #350
Comments
@silabs-robin An NMI is not supposed to be covered by the phrase 'locally enabled interrupt'. In itself the above behavior looks okay, but I wonder if we should eliminate this scenario by not entering sleep mode while there is a pending NMI. Now we wait until the LSU is no longer busy and that is one cycle too short to exclude NMIs. @silabs-oysteink let's discuss whether we change the RTL or accept above behavior (I am leaning towards accepting it). |
Why not? Is it not "locally enabled"? Is it not an "interrupt"? |
@silabs-robin Agreed that this is a bug in the RTL and that an NMI shall cause a resume from WFI (and WFE). |
Can assertions as the following be added as well: (core_sleep_o == 1'b1) -> (instr_rvalid_i == 1'b0); (core_sleep_o == 1'b1) -> (data_rvalid_i == 1'b0); (core_sleep_o == 1'b1) -> 'write buffer is empty' |
The following asserts pass and will be added to core-v-verif's interrupt_assert:
|
Fixed by openhwgroup/cv32e40x#722 (not merged yet to the 40S) |
Core will now wake up if there is a pending NMI. Signed-off-by: Oystein Knauserud <[email protected]>
…ue-350 Fix for cv32e40s issue openhwgroup#350 (common with cv32e40x).
@silabs-robin Please close this issue if you agree it has been solved. |
I will have a look at this and the other issue soon. It is not forgotten. |
@silabs-robin Can you please close this if it has been fixed? |
The relevant assertions have now turned to "passing". |
Component:RTL: For issues in the RTL (e.g. for files in the rtl directory)
Steps to Reproduce
a_wfi_assert_core_not_ready
There is a pending NMI when the core goes to sleep.
I don't know if this is a bug or not, because there is no outstanding transactions at the time (the rvalid has come), and NMI should not(?) be treated as a "locally enabled interrupt".
Note also that
ctrl_fsm_cs == SLEEP
doesn't 1-to-1 mean that the core is in "sleep mode".The assert in question was still mid-development when the issue arose, so I don't expect the assert itself to be bug-free.
@silabs-oysteink @Silabs-ArjanB
The text was updated successfully, but these errors were encountered: