Skip to content
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

[XIF] Interrupts cleared too late #507

Open
Silabs-ArjanB opened this issue Apr 8, 2022 · 4 comments
Open

[XIF] Interrupts cleared too late #507

Silabs-ArjanB opened this issue Apr 8, 2022 · 4 comments
Labels
Component:RTL For issues in the RTL (e.g. for files in the rtl directory) Type:Bug For bugs in any content (RTL, Documentation, etc.)

Comments

@Silabs-ArjanB
Copy link
Contributor

If an interrupt is cleared via a (non-bufferable) store, then the interrupt on irq_i will go low in the cycle after the store instruction left the WB stage. As the irq_i lines are registered inside the core, a following instruction can still get to see the interrupt that was supposed to be cleared.

@Silabs-ArjanB
Copy link
Contributor Author

Silabs-ArjanB commented Apr 8, 2022

This issue is similar to #325. A fix can maybe be done by blanking interrupts the cycle after receiving a load/store rvalid. The non-blanked interrupt presence should still lead to stop issuing new instructions in ID (otherwise blanking can be continued for a long series of loads/stores)

@Silabs-ArjanB
Copy link
Contributor Author

Both CLIC and Basic should be studied and ideally same fix should be applied for both if needed

silabs-oysteink added a commit to silabs-oysteink/cv32e40x that referenced this issue Aug 29, 2022
Blanking interrupts for one cycle after a load or store has left WB.
Refactored some assertions for CLIC, added a separate file for CLIC asserts.

Signed-off-by: Oystein Knauserud <Oystein.Knauserud@silabs.com>
@silabs-oysteink
Copy link
Contributor

This issue should have been fixed with PR #655. The XIF was not taken into account, so this issue needs to be revisited once the XIF is properly implemented. The existing assertions will likely fail when X_EXT is set to 1.

@Silabs-ArjanB
Copy link
Contributor Author

Renamed with XIF prefix

@Silabs-ArjanB Silabs-ArjanB added Component:RTL For issues in the RTL (e.g. for files in the rtl directory) Type:Bug For bugs in any content (RTL, Documentation, etc.) labels Aug 29, 2022
@Silabs-ArjanB Silabs-ArjanB changed the title Interrupts cleared too late [XIF] Interrupts cleared too late Aug 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component:RTL For issues in the RTL (e.g. for files in the rtl directory) Type:Bug For bugs in any content (RTL, Documentation, etc.)
Projects
None yet
Development

No branches or pull requests

2 participants